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.
--- 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'!