Added more commit tests.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 20 Nov 2012 21:32:08 +0000
changeset 87 4400fe941a84
parent 86 facd1382c8a6
child 88 1ad71a063a20
Added more commit tests. New tests to check whether package commit actually commits on top of revision loaded in image (and not on top of tip revision). Tests do not pass now.
mercurial/HGStXTests.st
--- a/mercurial/HGStXTests.st	Tue Nov 20 21:29:35 2012 +0000
+++ b/mercurial/HGStXTests.st	Tue Nov 20 21:32:08 2012 +0000
@@ -79,13 +79,14 @@
     self assert: pm notNil.
     self assert: ((HGPackageModelRegistry current instVarNamed:#packages) includesKey: #'mocks:hg/p1').
 
-    self tearDown.
+    self cleanup.
 
     self assert: (Smalltalk at: #'mocks_hg_p1') isNil.
     self assert: repositories isNil.
     self assert: ((HGPackageModelRegistry current instVarNamed:#packages) includesKey: #'mocks:hg/p1') not.
 
     "Created: / 16-11-2012 / 19:25:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-11-2012 / 19:32:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGStXTests methodsFor:'tests - commit'!
@@ -114,6 +115,240 @@
 
     "Created: / 16-11-2012 / 18:51:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 17-11-2012 / 01:05:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_02a
+    "
+        Repeated commit
+    "
+
+    | repo pm ct |
+
+    repo := self repositoryNamed: 'mocks/hg/p1'.
+    Smalltalk loadPackage:'mocks:hg/p1'.
+    pm := HGPackageModel named: 'mocks:hg/p1'.
+    (MockHGP1Bar compile:'zork ^ 1' classified:'test') package: MockHGP1Bar package.
+
+    self deny:   ((repo @ 1 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+
+    ct := pm commitTask.
+    ct message:'test_commit_02-1'.
+    ct do.
+
+    self assert: ((repo @ 2 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+    self assert: ((repo @ 2 ) parent1 == (repo @ 1 )).
+
+    (MockHGP1Bar compile:'zork ^ 2' classified:'test') package: MockHGP1Bar package.
+
+    ct := pm commitTask.
+    ct message:'test_commit_02-2'.
+    ct do.
+
+    self assert: ((repo @ 3 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 2').
+    self assert: ((repo @ 3 ) parent1 == (repo @ 2 )).
+
+    "
+    repo workingCopy browse
+    "
+
+    "Created: / 20-11-2012 / 19:33:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_02b
+    "
+    Repeated commit, remove the working copy between commits
+    "
+
+    | repo pm ct |
+
+    repo := self repositoryNamed: 'mocks/hg/p1'.
+    Smalltalk loadPackage:'mocks:hg/p1'.
+    pm := HGPackageModel named: 'mocks:hg/p1'.
+    (MockHGP1Bar compile:'zork ^ 1' classified:'test') package: MockHGP1Bar package.
+
+    self deny:   ((repo @ 1 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+
+    ct := pm commitTask.
+    ct message:'test_commit_02-1'.
+    ct do.
+
+    self assert: ((repo @ 2 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+    self assert: ((repo @ 2 ) parent1 == (repo @ 1 )).
+
+    (MockHGP1Bar compile:'zork ^ 2' classified:'test') package: MockHGP1Bar package.
+    pm workingCopy path recursiveRemove.
+
+    ct := pm commitTask.
+    ct message:'test_commit_02-2'.
+    ct do.
+
+    self assert: ((repo @ 3 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 2').
+    self assert: ((repo @ 3 ) parent1 == (repo @ 2 )).
+
+    "
+    repo workingCopy browse
+    "
+
+    "Created: / 20-11-2012 / 19:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_03a
+    "
+    Two images A, B working in parallel, commiting to same repo
+
+    1) A: checkout, modify commit package (cs1)
+    2) B: checkout, commit change         (cs2)
+    2) A: modify, checkout                (cs3)
+
+    The changeset cs3 should have cs1 as its parent1
+    "
+
+    | repo pmA ctA wcB s |
+
+    "=== A modifies & commits =============================== "
+    repo := self repositoryNamed: 'mocks/hg/p1'.
+    Smalltalk loadPackage:'mocks:hg/p1'.
+    pmA := HGPackageModel named: 'mocks:hg/p1'.
+    (MockHGP1Bar compile:'zork ^ 1' classified:'test') package: MockHGP1Bar package.
+
+    self deny:   ((repo @ 1 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+
+    ctA := pmA commitTask.
+    ctA message:'test_commit_03a A-1'.
+    ctA do.
+
+    self assert: ((repo @ 2 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+    self assert: ((repo @ 2 ) parent1 == (repo @ 1 )).
+
+    "=== B modifies & commits =============================== "
+    wcB := repo workingCopy.
+    s := ( wcB / 'abbrev.stc' ) appendStream.
+    [ s nextPutLine:'# Modification '] ensure:[s close].
+    wcB commit: 'test_commit_03a B-2'.
+    self assert: ((repo @ 3 ) parent1 == (repo @ 1 )).
+
+
+    "=== A modifies & commits =============================== "    
+    (MockHGP1Bar compile:'zork ^ 2' classified:'test') package: MockHGP1Bar package.
+
+    ctA := pmA commitTask.
+    ctA message:'test_commit_03a A-3'.
+    ctA do.
+
+    self assert: ((repo @ 4 ) parent1 == (repo @ 2 )).
+
+    "
+    repo workingCopy browse
+    "
+
+    "Created: / 20-11-2012 / 19:45:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_03b
+    "
+    Two images A, B working in parallel, commiting to same repo
+
+    1) A: checkout, modify commit package (cs1)
+    2) B: checkout, commit change         (cs2)
+    3) A: flushes its temp working copy
+    4) A: modify, checkout                (cs3)
+
+    The changeset cs3 should have cs1 as its parent1
+    "
+
+    | repo pmA ctA wcB s |
+
+    "=== A modifies & commits =============================== "
+    repo := self repositoryNamed: 'mocks/hg/p1'.
+    Smalltalk loadPackage:'mocks:hg/p1'.
+    pmA := HGPackageModel named: 'mocks:hg/p1'.
+    (MockHGP1Bar compile:'zork ^ 1' classified:'test') package: MockHGP1Bar package.
+
+    self deny:   ((repo @ 1 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+
+    ctA := pmA commitTask.
+    ctA message:'test_commit_03a A-1'.
+    ctA do.
+
+    self assert: ((repo @ 2 / 'MockHGP1Bar.st') contents asString includesString:'zork ^ 1').
+    self assert: ((repo @ 2 ) parent1 == (repo @ 1 )).
+
+    "=== B modifies & commits =============================== "
+    wcB := repo workingCopy.
+    s := ( wcB / 'abbrev.stc' ) appendStream.
+    [ s nextPutLine:'# Modification '] ensure:[s close].
+    wcB commit: 'test_commit_03a B-2'.
+    self assert: ((repo @ 3 ) parent1 == (repo @ 1 )).
+
+    "=== A flushed its working copy ========================= "
+    pmA workingCopy path recursiveRemove.
+
+    
+    "=== A modifies & commits =============================== "    
+    (MockHGP1Bar compile:'zork ^ 2' classified:'test') package: MockHGP1Bar package.
+
+    ctA := pmA commitTask.
+    ctA message:'test_commit_03a A-3'.
+    ctA do.
+
+    self assert: ((repo @ 4 ) parent1 == (repo @ 2 )).
+
+    "
+    repo workingCopy browse
+    "
+
+    "Created: / 20-11-2012 / 19:51:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_03c
+    "
+    Two images A, B working in parallel, commiting to same repo
+
+                                                  (cs1) - base changeset
+    2) B: checkout, modifu, commit change         (cs2)
+    4) A: checkout, modify, commit change         (cs3)
+
+    The changeset cs3 should have cs1 as its parent1
+    "
+
+    | repo pmA ctA wcB s |
+
+    repo := self repositoryNamed: 'mocks/hg/p1'.
+    Smalltalk loadPackage:'mocks:hg/p1'.
+    pmA := HGPackageModel named: 'mocks:hg/p1'.
+
+    "=== B modifies & commits =============================== "
+    wcB := repo workingCopy.
+    s := ( wcB / 'abbrev.stc' ) appendStream.
+    [ s nextPutLine:'# Modification '] ensure:[s close].
+    wcB commit: 'test_commit_03c B-1'.
+    self assert: ((repo @ 2 ) parent1 == (repo @ 1 )).
+
+    "=== A modifies & commits =============================== "    
+    (MockHGP1Bar compile:'zork ^ 2' classified:'test') package: MockHGP1Bar package.
+
+    ctA := pmA commitTask.
+    ctA message:'test_commit_03c A-2'.
+    ctA do.
+
+    self assert: ((repo @ 3 ) parent1 == (repo @ 1 )).
+
+    "
+    repo workingCopy browse
+    "
+
+    "Created: / 20-11-2012 / 20:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGStXTests methodsFor:'utilities'!
+
+cleanup
+    "Wipeout all mock package leftovers. Could be used
+     to simulate work from another fresh image"
+
+    self tearDown
+
+    "Created: / 20-11-2012 / 19:32:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGStXTests class methodsFor:'documentation'!