Do not remove test repositories after each test
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 08 Feb 2017 12:28:27 +0000
changeset 746 08795b463d40
parent 743 da92846c64ab
child 747 d0575b25dfec
Do not remove test repositories after each test ...but rather remove them all at once after all tests are run. This makes tests running faster, especially on systems with notoriously slow I/O, e.g. Windows.
mercurial/HGRepositoriesResource.st
mercurial/HGTestCase.st
--- a/mercurial/HGRepositoriesResource.st	Fri Feb 03 04:46:17 2017 +0000
+++ b/mercurial/HGRepositoriesResource.st	Wed Feb 08 12:28:27 2017 +0000
@@ -21,7 +21,7 @@
 "{ NameSpace: Smalltalk }"
 
 TestResource subclass:#HGRepositoriesResource
-	instanceVariableNames:'repositoryDirectory'
+	instanceVariableNames:'repositoryDirectoryRoot repositoryDirectory'
 	classVariableNames:'HGRepositoriesArchiveDir'
 	poolDictionaries:''
 	category:'SCM-Mercurial-Tests'
@@ -269,12 +269,6 @@
 
 !HGRepositoriesResource methodsFor:'accessing'!
 
-directoryForRepositories
-    ^repositoryDirectory
-
-    "Created: / 22-11-2012 / 11:34:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 directoryForRepositoryNamed: nm
     ^self directoryForRepositoryNamed: nm unpack: true
 
@@ -353,7 +347,7 @@
     | archiveNm archive repo dir ok runningUnderJenkins |
 
     runningUnderJenkins := (OperatingSystem getEnvironment:'JENKINS_SERVER_COOKIE') notNil.
-    "/runningUnderJenkins := true.
+    runningUnderJenkins := true.
 
     unpack ifTrue:[
         self assert: init description: 'Cannot unpack non-initialized repo!!'
@@ -366,9 +360,9 @@
     unpack ifTrue:[
         self assert:archive exists description:'dump file does not exist'.
     ].
-    self assert:repositoryDirectory exists description:'repository directory does not exist'.
 
     dir := repositoryDirectory.
+    self assert:dir exists description:'repository directory does not exist'.
 
     init ifFalse:[
         ^ (dir asAbsoluteFilename / nm) pathName.
@@ -387,9 +381,9 @@
                 ok := false
             ].
         ok ifFalse:[
-            self tearDown.
-            self setUp.
-            dir := repositoryDirectory.
+            self tearDownRepositoryDirectory.
+            self setUpRepositoryDirectory.
+            dir := repositoryDirectoryRoot.
             OperatingSystem 
                 executeCommand:('unzip %1' bindWith: (archive asAbsoluteFilename pathName))
                 inputFrom: nil
@@ -428,11 +422,11 @@
                     Stdout nextPutLine: ('`hg init` command failed: pid=%1 status=%2, code=%3' bindWith: status status with: status code). 
                     ok := false.
                 ].
-	ok := ok and:[(repodir / '.hg') exists].
+        ok := ok and:[(repodir / '.hg') exists].
         ok ifFalse:[
-            self tearDown.
-            self setUp.
-            dir := repositoryDirectory.
+            self tearDownRepositoryDirectory.
+            self setUpRepositoryDirectory.
+            dir := repositoryDirectoryRoot.
             repodir := (dir asAbsoluteFilename / nm).
             repodir directory recursiveMakeDirectory.    
             OperatingSystem
@@ -443,10 +437,10 @@
                     inDirectory:repodir directory pathName
                     onError:[:status |
                         Stdout nextPutLine: ('`hg init` command failed: pid=%1 status=%2, code=%3' bindWith: status status with: status code).                    
-			self assert:false description:'`hg init` second atempt failed'
-	            ].
+                        self assert:false description:'`hg init` second atempt failed'
+                    ].
         ].              
-	self assert: (repodir / '.hg') exists description: ('repository initialized but no .hg found in %1' bindWith: repodir pathName).	                
+        self assert: (repodir / '.hg') exists description: ('repository initialized but no .hg found in %1' bindWith: repodir pathName).                        
     ].
 
     repo := (dir asAbsoluteFilename / nm).
@@ -465,7 +459,7 @@
     ^repo pathName
 
     "Created: / 11-02-2014 / 11:12:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 24-01-2017 / 23:18:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-02-2017 / 10:17:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 directoryForRepositoryNamed: nm unpack: unpack revision: revision
@@ -491,29 +485,44 @@
 
 setUp
 
-    repositoryDirectory := Filename newTemporaryDirectory.
+    repositoryDirectoryRoot := Filename newTemporaryDirectory.
+
+    "Created: / 09-12-2010 / 23:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 27-12-2011 / 18:07:04 / dundee"
+    "Modified: / 08-02-2017 / 09:46:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setUpRepositoryDirectory
+    repositoryDirectory := Filename newTemporaryDirectoryIn: repositoryDirectoryRoot.
     Smalltalk packagePath: (Smalltalk packagePath asOrderedCollection
                                 addFirst: repositoryDirectory pathName;
                                 yourself)
 
-    "Created: / 09-12-2010 / 23:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-12-2011 / 18:07:04 / dundee"
-    "Modified: / 16-11-2012 / 20:16:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 08-02-2017 / 09:46:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 tearDown
-    Smalltalk packagePath: (Smalltalk packagePath 
-                                remove: repositoryDirectory pathName;
-                                yourself).
+    self tearDownRepositoryDirectory.
     [
-        repositoryDirectory recursiveRemove
+        repositoryDirectoryRoot recursiveRemove
     ] on: Error do:[
         "Stupid windows!!"
     ]
 
     "Created: / 09-12-2010 / 23:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 30-09-2012 / 05:26:04 / jv"
-    "Modified: / 16-11-2012 / 20:16:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-02-2017 / 10:12:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+tearDownRepositoryDirectory
+    repositoryDirectory notNil ifTrue:[
+        Smalltalk packagePath: (Smalltalk packagePath asOrderedCollection
+                                    remove: repositoryDirectory pathName;
+                                    yourself).
+    ].
+    repositoryDirectory := nil.
+
+    "Created: / 08-02-2017 / 09:47:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGRepositoriesResource methodsFor:'testing'!
--- a/mercurial/HGTestCase.st	Fri Feb 03 04:46:17 2017 +0000
+++ b/mercurial/HGTestCase.st	Wed Feb 08 12:28:27 2017 +0000
@@ -174,8 +174,10 @@
     HGSourceCodeManager shownInBrowserMenus: true.
     repositories:= OrderedCollection new.
 
+    HGRepositoriesResource current setUpRepositoryDirectory
+
     "Created: / 19-09-2012 / 19:01:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-08-2015 / 08:30:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-02-2017 / 09:49:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 tearDown
@@ -192,31 +194,13 @@
     Smalltalk at: #SourceCodeManager put: scm.
     AbstractSourceCodeManager managerPerMatchingModuleDefinitions: scmPerPackage.
     Class tryLocalSourceFirst: tryLocalSourceFirst.
-
     HGPackageWorkingCopyRegistry current flush:'mocks*'.
-
-    HGRepositoriesResource current directoryForRepositories directoryContentsAsFilenames do:[:e|
-            [
-                Verbose == true ifTrue:[
-                    Transcript cr; show: '+-- removing '; showCR: e pathName.
-                ].
-                e asFilename recursiveRemove.
-            ] on: Error do:[:ex|
-                "Stupid windows"
-                OperatingSystem isMSWINDOWSlike ifTrue:[
-                    Delay waitForSeconds: 3.
-                    e asFilename recursiveRemove.
-                ] ifFalse:[
-                    ex pass
-                ].
-            ]
-        ].
-
     repositories := nil.
+    HGRepositoriesResource current tearDownRepositoryDirectory
 
     "Created: / 19-09-2012 / 19:03:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 30-09-2012 / 05:26:48 / jv"
-    "Modified: / 25-08-2015 / 08:31:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 08-02-2017 / 09:49:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGTestCase methodsFor:'utilities'!