author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 17 Apr 2018 16:24:47 +0100 | |
branch | jv |
changeset 1971 | de93bc901dba |
parent 1966 | 99c870d21885 |
child 1974 | f2eaf05205d6 |
permissions | -rw-r--r-- |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/regression' }" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: RegressionTests }" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
TestCase subclass:#VMSpawningTestCase |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'EXIT_CODE_SUCCESS EXIT_CODE_FAILURE EXIT_CODE_ERROR |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
EXIT_CODE_SKIPPED' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
poolDictionaries:'' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
category:'tests-Regression-Abstract' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
!VMSpawningTestCase class methodsFor:'initialization'! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
initialize |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
"Invoked at system start or when the class is dynamically loaded." |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
"/ please change as required (and remove this comment) |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
EXIT_CODE_SUCCESS := 0. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
EXIT_CODE_FAILURE := 1. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
EXIT_CODE_ERROR := 2. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
"/ Never define EXIT_CODE_SKIPPED as 3. On Windows, |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
"/ 3 is used by abort() so then we'd not be able to |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
"/ tell between skip and crash!! Sigh. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
EXIT_CODE_SKIPPED := 97. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
"Modified: / 03-09-2016 / 08:23:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
"Modified: / 08-09-2016 / 12:44:05 / jv" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
! ! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
!VMSpawningTestCase class methodsFor:'queries'! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
isAbstract |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
"Return if this class is an abstract class. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
True is returned here for myself only; false for subclasses. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
Abstract subclasses must redefine this again." |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
^ self == RegressionTests::VMSpawningTestCase. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
! ! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
!VMSpawningTestCase methodsFor:'private'! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
spawnSelector:selector |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
"Perform selector in freshly spawned Smalltalk." |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
| tempDir | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
tempDir := Filename newTemporary. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
tempDir makeDirectory. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
self spawnSelector:selector inDirectory:tempDir. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
] ensure:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
(tempDir notNil and:[ tempDir exists ]) ifTrue:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
tempDir recursiveRemove. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
] on:Error |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
do:[:ex | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
OperatingSystem isMSWINDOWSlike ifFalse:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
ex reject. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
"Created: / 05-01-2017 / 23:08:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
"Modified: / 06-01-2017 / 22:07:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
spawnSelector:selector inDirectory:directory |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
"Perform `selector` in new smalltalk process. Set new process's working directory to `directory`" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
| testcaseFile script | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
directory makeDirectory. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
testcaseFile := directory |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
/ ((Smalltalk fileNameForClass:self class) , '.st'). |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
self class fileOutAs:testcaseFile. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
script := 'NoHandlerError emergencyHandler:[:ex | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
ex suspendedContext fullPrintAllOn: Stdout. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
Stdout nextPutAll: ''ERROR (unhandled) '', ex printString. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
Smalltalk exit: %7 |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
Smalltalk packagePath: %1. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
Smalltalk loadPackage:%2. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
Smalltalk fileIn: %3. |
1613
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
88 |
Smalltalk addStartBlock:[ |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
89 |
Processor exitWhenNoMoreUserProcesses: false. |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
90 |
[ |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
91 |
(%4 selector: %5) spawnSelectorInternal: %6. |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
92 |
] ensure:[ |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
93 |
Smalltalk exit: %7 |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
94 |
] |
713eead17134
Added workaround for (maybe) a race condition in `ProcessorScheduler`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1602
diff
changeset
|
95 |
]. |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
bindWith:Smalltalk packagePath asArray storeString |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
with:self class package storeString |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
with:testcaseFile pathName storeString |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
with:self class name |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
with:testSelector storeString |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
with:selector storeString |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
with:EXIT_CODE_ERROR storeString. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
(directory / 'run.st') writingFileDo:[:f | f nextPutAll:script. ]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
self spawnSmalltalk: { '--abortOnSEGV'. '-I'. '--quick'. '--load'. (directory / 'run.st') pathName } inDirectory: directory |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
"Created: / 06-01-2017 / 22:06:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1571
fe6e15b9156f
Oops, fix in VMSpawningTestCase: do not fork code in start block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1567
diff
changeset
|
108 |
"Modified: / 26-01-2017 / 19:29:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
spawnSelectorInternal:selector |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
self perform:selector. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
Stdout |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
cr; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
nextPutAll:'PASSED'; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
cr. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
Smalltalk exit:EXIT_CODE_SUCCESS |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
] on:TestResult skipped |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
do:[:skip | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
Stdout |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
cr; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
nextPutAll:'SKIPPED'; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
cr. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
Smalltalk exit:EXIT_CODE_SKIPPED. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
] on:TestResult failure |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
do:[:failure | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
Stdout |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
cr; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
nextPutAll:'FAILURE: '; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
nextPutAll:failure description; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
cr. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
Smalltalk exit:EXIT_CODE_FAILURE. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
on:TestResult exError |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
do:[:error | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
Stdout |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
cr; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
nextPutAll:'ERROR: '; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
nextPutAll:error description; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
cr. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
Smalltalk exit:EXIT_CODE_ERROR. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
"Created: / 05-01-2017 / 23:02:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
|
1971
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
150 |
spawnSmalltalk:argv |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
151 |
| tempDir | |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
152 |
[ |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
153 |
tempDir := Filename newTemporary. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
154 |
tempDir makeDirectory. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
155 |
self spawnSmalltalk:argv inDirectory:tempDir. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
156 |
] ensure:[ |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
157 |
(tempDir notNil and:[ tempDir exists ]) ifTrue:[ |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
158 |
[ |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
159 |
tempDir recursiveRemove. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
160 |
] on:Error |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
161 |
do:[:ex | |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
162 |
OperatingSystem isMSWINDOWSlike ifFalse:[ |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
163 |
ex reject. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
164 |
]. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
165 |
] |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
166 |
]. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
167 |
]. |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
168 |
|
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
169 |
"Created: / 17-04-2018 / 15:56:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
170 |
! |
de93bc901dba
Issue #205: added regression tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1966
diff
changeset
|
171 |
|
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
spawnSmalltalk:argv inDirectory:directory |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
A helper method to spawn a new smalltalk process using current executable and |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
given arguments (in `argv`). Set initial working copy of freskly spawned process |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
to `directory`. Wait until spawned smalltalk finishes and then if process exit status |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
* is EXIT_CODE_SUCCESS do nothing and return |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
* is EXIT_CODE_SKIPPED then signal skipped test by means of #skipIf:description: |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
* is EXIT_CODE_FAILURE then signal test failure by means of failed #assert: |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
* is anything else then signal test error by means of #error:" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
| exe args environment outputFile output pid blocker status | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
exe := OperatingSystem pathOfSTXExecutable. |
1966
99c870d21885
Do not load preferences when spawning a VM
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1959
diff
changeset
|
186 |
args := { exe } , #('--abortOnSEGV') , argv , #('--no-preferences'). |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
args := String |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
streamContents:[:s | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
args |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
do:[:each | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
s |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
nextPut:$"; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
nextPutAll:each; |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
nextPut:$" |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
separatedBy:[ s space ] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
outputFile := directory / 'output.txt'. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
output := outputFile writeStream. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
environment := OperatingSystem isUNIXlike ifTrue:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
OperatingSystem getEnvironment copy |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
] ifFalse:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
environment := Dictionary new |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
blocker := Semaphore new. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
Processor |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
monitor:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
pid := OperatingSystem |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
exec:exe |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
withArguments:args |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
environment:environment |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
fileDescriptors:{ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
0. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
216 |
output fileDescriptor. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
output fileDescriptor |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
} |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
fork:true |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
newPgrp:false |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
inDirectory:directory pathName |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
showWindow:true |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
] |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
action:[:s | |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
status := s. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
blocker signal. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
output close. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
pid isNil ifTrue:[ |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
self error:'Failed to spawn test'. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
^ self. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
]. |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
233 |
[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
234 |
blocker wait. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
235 |
status code == EXIT_CODE_SUCCESS ifFalse:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
236 |
status code == EXIT_CODE_SKIPPED ifTrue:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
237 |
self skipIf:true description:'Skipped'. |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
] ifFalse:[ |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
239 |
status code == EXIT_CODE_FAILURE ifTrue:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
240 |
" |
1959
d05ea54888ee
Added tests for `Context >> #unwindAndRestart` and `Context >> resend`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1664
diff
changeset
|
241 |
(directory / 'output.txt') contents asString |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
242 |
" |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
243 |
self writeFile: outputFile to: Stdout labeled: 'TEST FAILED'. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
244 |
self assert:false description:'Assertion failed, see log'. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
245 |
] ifFalse:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
246 |
" |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
247 |
directory inspect |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
248 |
" |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
249 |
self writeFile: outputFile to: Stdout labeled: 'TEST ERROR'. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
250 |
self error:'Error occured'. |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
]. |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
254 |
] on: TerminateProcessRequest do:[:ex| |
1959
d05ea54888ee
Added tests for `Context >> #unwindAndRestart` and `Context >> resend`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1664
diff
changeset
|
255 |
pid notNil ifTrue:[ OperatingSystem killProcess: pid ]. |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
256 |
self writeFile: outputFile to: Stdout labeled: 'TEST TERMINATED'. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
257 |
ex pass. |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
]. |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
"Created: / 06-01-2017 / 11:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
261 |
"Modified: / 28-07-2017 / 10:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1959
d05ea54888ee
Added tests for `Context >> #unwindAndRestart` and `Context >> resend`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1664
diff
changeset
|
262 |
"Modified (format): / 17-11-2017 / 14:03:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1966
99c870d21885
Do not load preferences when spawning a VM
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1959
diff
changeset
|
263 |
"Modified: / 02-01-2018 / 16:26:09 / jv" |
1664
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
264 |
! |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
265 |
|
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
266 |
writeFile: aFilename to: aStream labeled: aString |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
267 |
" |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
268 |
Write contents of given `aFilename` to given `aStream` with given label (`aString`). |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
269 |
Utility method for spawnSmalltalk:inDirectory: to ease the debugging. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
270 |
" |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
271 |
aStream |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
272 |
nextPutAll: '== '; |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
273 |
nextPutAll: aString; |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
274 |
nextPutAll: ' (testcase '; |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
275 |
nextPutAll: self printString; |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
276 |
nextPutLine:') =='. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
277 |
aFilename isNil ifTrue:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
278 |
aStream nextPutLine: 'No file given!!' |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
279 |
] ifFalse:[ aFilename exists ifFalse:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
280 |
aStream nextPutAll: 'File does not exist: '; nextPutLine: aFilename pathName |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
281 |
] ifTrue:[ |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
282 |
aFilename readingFileDo:[:s | |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
283 |
[ s atEnd ] whileFalse:[ aStream nextPutLine:s nextLine.]. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
284 |
]. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
285 |
]]. |
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
286 |
|
ebdc4db610c1
VMSpawningTestCase: Kill the spawned VM on timeout and report its output
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1613
diff
changeset
|
287 |
"Created: / 28-07-2017 / 10:48:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
! ! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
290 |
!VMSpawningTestCase class methodsFor:'documentation'! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
291 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
292 |
version_HG |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
293 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
^ '$Changeset: <not expanded> $' |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
! ! |
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
296 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
|
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
VMSpawningTestCase initialize! |