Fixes for #24: Session ChangeSet compression after a commit is broken [2/3]
Fixed changeset compression for nested packages.
--- a/common/SCMAbstractCommitTask.st Sat Nov 15 17:17:02 2014 +0000
+++ b/common/SCMAbstractCommitTask.st Sun Nov 16 08:53:12 2014 +0000
@@ -263,7 +263,7 @@
"/ paths is list of !!!!!!absolute filenames!!!!!!, so we have to construct full name
"/ furtunately, that's easy...
- root := temporaryWorkingCopyRoot asFilename.
+ root := package temporaryWorkingCopyRoot asFilename.
commitedClasses := Set new.
package classes do:[:class |
@@ -292,7 +292,7 @@
].
"Created: / 15-11-2014 / 00:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-11-2014 / 01:46:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-11-2014 / 08:47:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SCMAbstractCommitTask methodsFor:'queries'!
--- a/common/common.rc Sat Nov 15 17:17:02 2014 +0000
+++ b/common/common.rc Sun Nov 16 08:53:12 2014 +0000
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "Copyright Jan Vrany 2012\0"
VALUE "ProductName", "Smalltalk/X SCM Support Library\0"
VALUE "ProductVersion", "6.2.5.0\0"
- VALUE "ProductDate", "Sat, 15 Nov 2014 16:39:16 GMT\0"
+ VALUE "ProductDate", "Sun, 16 Nov 2014 08:51:54 GMT\0"
END
END
--- a/mercurial/HGStXTests.st Sat Nov 15 17:17:02 2014 +0000
+++ b/mercurial/HGStXTests.st Sun Nov 16 08:53:12 2014 +0000
@@ -2844,6 +2844,278 @@
"
"Created: / 01-05-2014 / 09:25:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07a
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, commit both
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #Object) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#Object) selector: #bark).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ (ctP2 temporaryWorkingCopy path / 'MocksHgP2Foo.st') pathName.
+ (ctP2 temporaryWorkingCopy path / 'n1' / 'extensions.st') pathName.
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)) not.
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)) not.
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 07:24:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-11-2014 / 08:45:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07b
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, commit only p1
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #MocksHgP2N1Foo) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ (ctP2 temporaryWorkingCopy path / 'MocksHgP2Foo.st') pathName.
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)) not.
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)).
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 08:42:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07c
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, commit only n1
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #MocksHgP2N1Foo) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ (ctP2 temporaryWorkingCopy path / 'n1' / 'MocksHgP2N1Foo.st') pathName.
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)) not.
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 08:43:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07d
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, none
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #MocksHgP2N1Foo) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2N1Foo)).
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 08:44:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07e
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, commit both
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #Object) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#Object) selector: #bark).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ (ctP2 temporaryWorkingCopy path / 'MocksHgP2Foo.st') pathName.
+ (ctP2 temporaryWorkingCopy path / 'n1' / 'extensions.st') pathName.
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)) not.
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#Object) selector: #bark) not.
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 08:45:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_commit_nested_07f
+ "
+ Nested packages
+ mocks:hg/p2
+ mocks:hg/p2/n1
+ mocks:hg/p2/n2
+
+ 1) load all of them
+ 2) modify & commit p2 & p2/n1, commit both
+ 3) check that current ChangeSet has no changes for commited classes
+ "
+
+ | repo pmP2 pmP2N1 pmP2N2 ctP2 |
+
+ repo := self repositoryNamed: 'mocks/hg/p2'.
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n1').
+ self assert: (Smalltalk loadPackage:'mocks:hg/p2/n2').
+ pmP2 := HGPackageWorkingCopy named: 'mocks:hg/p2'.
+ pmP2N1 := HGPackageWorkingCopy named: 'mocks:hg/p2/n1'.
+ pmP2N2 := HGPackageWorkingCopy named: 'mocks:hg/p2/n2'.
+
+ "=== A modifies & commits =============================== "
+ ((Smalltalk at: #MocksHgP2Foo) compile:'zork ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2Foo) package.
+ ((Smalltalk at: #Object) compile:'bark ^ 2' classified:'test') package: (Smalltalk at: #MocksHgP2N1Foo) package.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)).
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#Object) selector: #bark).
+
+ ctP2 := pmP2 commitTask.
+ ctP2 message:'test_commit_nested_07a 1'.
+ ctP2 paths:{
+ (ctP2 temporaryWorkingCopy path / 'MocksHgP2Foo.st') pathName.
+ }.
+ ctP2 do.
+
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#MocksHgP2Foo)) not.
+ self assert: (ChangeSet current includesChangeForClass: (Smalltalk at:#Object) selector: #bark).
+ "
+ repo workingCopy browse
+ "
+
+ "Created: / 16-11-2014 / 08:46:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGStXTests methodsFor:'tests - manager API'!
--- a/mercurial/mercurial.rc Sat Nov 15 17:17:02 2014 +0000
+++ b/mercurial/mercurial.rc Sun Nov 16 08:53:12 2014 +0000
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "Copyright Jan Vrany 2012\0"
VALUE "ProductName", "Smalltalk/X Mercurial Integration\0"
VALUE "ProductVersion", "6.2.5.0\0"
- VALUE "ProductDate", "Sat, 15 Nov 2014 16:39:15 GMT\0"
+ VALUE "ProductDate", "Sun, 16 Nov 2014 08:51:52 GMT\0"
END
END