author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 07 Jul 2016 11:00:03 +0100 | |
branch | jv |
changeset 1502 | b52f4f0d4a0b |
parent 1500 | d406a10b2965 |
child 1530 | b21a5e9a6c26 |
permissions | -rw-r--r-- |
1447 | 1 |
"{ Package: 'stx:goodies/regression' }" |
1172 | 2 |
|
3 |
"{ NameSpace: RegressionTests }" |
|
4 |
||
5 |
TestCase subclass:#VMCrashTestCase |
|
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'EXIT_CODE_SUCCESS EXIT_CODE_FAILURE EXIT_CODE_ERROR' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'tests-Regression-Abstract' |
|
10 |
! |
|
11 |
||
12 |
!VMCrashTestCase class methodsFor:'documentation'! |
|
13 |
||
14 |
documentation |
|
15 |
" |
|
16 |
A specialized abstract test case class for writing |
|
17 |
VM crash tests. The test is run in separate process |
|
18 |
if it eventually crashes the VM, it won't take whole test |
|
19 |
suite with it. |
|
20 |
||
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
21 |
Each test case *must* be annotated by one <spawn:> annotation, |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
22 |
argument must be either `true` of `false`. If `true` then the |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
23 |
test is run in a freshly started VM. If `false`, test is run |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
24 |
in the same VM. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
25 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
26 |
As this is meant as a base class for regression tests that used to |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
27 |
kill the VM, normally you should annotate tests with <spawn: true> |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
28 |
|
1172 | 29 |
[author:] |
1447 | 30 |
Jan Vrany <jan.vrany@fit.cvut.cz> |
1172 | 31 |
|
32 |
[instance variables:] |
|
33 |
||
34 |
[class variables:] |
|
35 |
||
36 |
[see also:] |
|
37 |
||
38 |
" |
|
39 |
! ! |
|
40 |
||
41 |
!VMCrashTestCase class methodsFor:'initialization'! |
|
42 |
||
43 |
initialize |
|
44 |
"Invoked at system start or when the class is dynamically loaded." |
|
45 |
||
46 |
"/ please change as required (and remove this comment) |
|
47 |
||
48 |
EXIT_CODE_SUCCESS := 0. |
|
49 |
EXIT_CODE_FAILURE := 1. |
|
50 |
EXIT_CODE_ERROR := 2. |
|
51 |
||
52 |
"Modified: / 05-09-2014 / 18:17:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
53 |
! ! |
|
54 |
||
55 |
!VMCrashTestCase class methodsFor:'testing'! |
|
56 |
||
57 |
isAbstract |
|
58 |
^ self == RegressionTests::VMCrashTestCase |
|
59 |
! ! |
|
60 |
||
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
61 |
!VMCrashTestCase methodsFor:'accessing'! |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
62 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
63 |
timeout |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
64 |
"Returns a default timeout (sec) for the test. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
65 |
If nil is returned, no timeout enforced. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
66 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
67 |
Note that the timeout is set only when running under |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
68 |
report runner, interactive tools does not use it" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
69 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
70 |
| method | |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
71 |
method := self class lookupMethodFor: testSelector. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
72 |
method annotationsAt:#timeout: do:[:annotation| |
1447 | 73 |
^annotation arguments first |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
74 |
]. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
75 |
^60"sec - default timeout" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
76 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
77 |
"Created: / 08-09-2014 / 13:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
78 |
! ! |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
79 |
|
1172 | 80 |
!VMCrashTestCase methodsFor:'running'! |
81 |
||
82 |
runCase |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
83 |
"Perform the testcase. |
1172 | 84 |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
85 |
If testcase is annotated by <spawn: false> the test is run in the |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
86 |
very same VM. If <spawn: true>, a new VM is started and the testcase |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
87 |
in run in that new VM" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
88 |
|
1194
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
89 |
| tempDir testcaseFile exe args script environment outputFile output pid blocker status spawn | |
1172 | 90 |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
91 |
spawn := (self class lookupMethodFor: testSelector) annotationAt: #spawn:. |
1447 | 92 |
spawn isNil ifTrue:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
93 |
self error: 'No <spawn:> annotation'. |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
94 |
]. |
1447 | 95 |
(spawn argumentAt: 1) == false ifTrue:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
96 |
^ super runCase. |
1447 | 97 |
] ifFalse:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
98 |
(spawn argumentAt: 1) ~~ true ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
99 |
self error: 'Argument to <spawn:> must be either `true` or `false`'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
100 |
] |
1172 | 101 |
]. |
102 |
||
103 |
[ |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
104 |
tempDir := Filename newTemporary. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
105 |
tempDir makeDirectory. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
106 |
testcaseFile := tempDir / ((Smalltalk fileNameForClass: self class) , '.st'). |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
107 |
self class fileOutAs: testcaseFile. |
1172 | 108 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
109 |
script := 'Smalltalk packagePath: %1. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
110 |
Smalltalk loadPackage:%2. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
111 |
Smalltalk fileIn: %3. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
112 |
(%4 selector: %5) runCaseInternal.' |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
113 |
bindWith: Smalltalk packagePath asArray storeString |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
114 |
with: self class package storeString |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
115 |
with: testcaseFile pathName storeString |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
116 |
with: self class name |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
117 |
with: testSelector storeString. |
1172 | 118 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
119 |
exe := OperatingSystem pathOfSTXExecutable. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
120 |
args := { exe . '--abortOnSEGV' . '--execute' . ( tempDir / 'run.st' ) pathName }. |
1172 | 121 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
122 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
123 |
args := String streamContents:[:s| |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
124 |
args |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
125 |
do:[:each | s nextPut:$"; nextPutAll: each; nextPut: $"] |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
126 |
separatedBy: [ s space ] |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
127 |
] |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
128 |
]. |
1172 | 129 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
130 |
outputFile := tempDir / 'output.txt'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
131 |
output := outputFile writeStream. |
1172 | 132 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
133 |
"/ Now, spit out some helper files that for debugging. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
134 |
( tempDir / 'run.st' ) writingFileDo:[ :f | |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
135 |
f nextPutAll: script. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
136 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
137 |
environment := OperatingSystem isUNIXlike |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
138 |
ifTrue:[OperatingSystem getEnvironment copy] |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
139 |
ifFalse:[environment := Dictionary new]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
140 |
blocker := Semaphore new. |
1172 | 141 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
142 |
Processor monitor:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
143 |
pid := OperatingSystem exec: exe withArguments:args |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
144 |
environment:environment |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
145 |
fileDescriptors:{0 . output fileDescriptor . output fileDescriptor } |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
146 |
fork:true |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
147 |
newPgrp:false |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
148 |
inDirectory: Filename currentDirectory pathName |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
149 |
] action: [ :s | |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
150 |
status := s. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
151 |
blocker signal. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
152 |
]. |
1172 | 153 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
154 |
output close. |
1172 | 155 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
156 |
pid isNil ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
157 |
self error: 'Failed to spawn test'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
158 |
^ self. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
159 |
]. |
1172 | 160 |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
161 |
blocker wait. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
162 |
status code == EXIT_CODE_SUCCESS ifFalse:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
163 |
status code == EXIT_CODE_FAILURE ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
164 |
(outputFile notNil and:[ outputFile exists ]) ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
165 |
Stdout nextPutAll: '== TEST FAILED: '; nextPutAll: testSelector; nextPutLine:' =='. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
166 |
outputFile readingFileDo:[:s| |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
167 |
[ s atEnd ] whileFalse:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
168 |
Stdout nextPutLine: s nextLine. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
169 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
170 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
171 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
172 |
self assert: false description: 'Assertion failed, see log'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
173 |
] ifFalse:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
174 |
(outputFile notNil and:[ outputFile exists ]) ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
175 |
Stdout nextPutAll: '== TEST ERROR: '; nextPutAll: testSelector; nextPutLine:' =='. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
176 |
outputFile readingFileDo:[:s| |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
177 |
[ s atEnd ] whileFalse:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
178 |
Stdout nextPutLine: s nextLine. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
179 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
180 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
181 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
182 |
self error: 'Error occured'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
183 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
184 |
]. |
1447 | 185 |
] ensure:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
186 |
(tempDir notNil and:[tempDir exists]) ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
187 |
[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
188 |
tempDir recursiveRemove. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
189 |
] on: Error do:[:ex | |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
190 |
OperatingSystem isMSWINDOWSlike ifFalse:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
191 |
ex reject. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
192 |
]. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
193 |
] |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
194 |
]. |
1172 | 195 |
]. |
196 |
||
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
197 |
" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
198 |
VMCrashTestCase run:#test_infrastructure |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
199 |
" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
200 |
|
1172 | 201 |
"Created: / 04-09-2014 / 18:13:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1199
81fcf185ef45
class: RegressionTests::VMCrashTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1194
diff
changeset
|
202 |
"Modified: / 19-09-2014 / 16:43:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
203 |
"Modified: / 07-07-2016 / 10:53:30 / jv" |
1172 | 204 |
! |
205 |
||
206 |
runCaseInternal |
|
207 |
[ |
|
1447 | 208 |
super runCase. |
209 |
Stdout cr; |
|
210 |
nextPutAll: 'PASSED'; cr. |
|
1172 | 211 |
] on: TestResult failure do:[:failure | |
1447 | 212 |
Stdout cr; |
213 |
nextPutAll: 'FAILURE: '; nextPutAll: failure description; cr. |
|
214 |
Smalltalk exit: EXIT_CODE_FAILURE. |
|
1172 | 215 |
] on: TestResult exError do:[:error | |
1447 | 216 |
Stdout cr; |
217 |
nextPutAll: 'ERROR: '; nextPutAll: error description; cr. |
|
218 |
Smalltalk exit: EXIT_CODE_ERROR. |
|
1172 | 219 |
]. |
220 |
||
221 |
"Created: / 04-09-2014 / 17:41:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
222 |
"Modified: / 05-09-2014 / 18:37:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
223 |
! ! |
|
224 |
||
225 |
!VMCrashTestCase methodsFor:'tests - infrastructure'! |
|
226 |
||
227 |
test_infrastructure |
|
228 |
" |
|
229 |
VMCrashTestCase run:#test_infrastructure |
|
230 |
" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
231 |
<spawn: false> |
1172 | 232 |
|
233 |
| result | |
|
234 |
||
235 |
result := self class run: #tst_pass. |
|
236 |
self assert: result passedCount = 1. |
|
237 |
self assert: result failureCount = 0. |
|
238 |
self assert: result errorCount = 0. |
|
239 |
||
240 |
result := self class run: #tst_fail. |
|
241 |
self assert: result passedCount = 0. |
|
242 |
self assert: result failureCount = 1. |
|
243 |
self assert: result errorCount = 0. |
|
244 |
||
245 |
result := self class run: #tst_error. |
|
246 |
self assert: result passedCount = 0. |
|
247 |
self assert: result failureCount = 0. |
|
248 |
self assert: result errorCount = 1. |
|
249 |
||
250 |
" |
|
1447 | 251 |
VMCrashTestCase run: #tst_crash. |
1172 | 252 |
" |
253 |
result := self class run: #tst_crash. |
|
254 |
self assert: result passedCount = 0. |
|
255 |
self assert: result failureCount = 0. |
|
256 |
self assert: result errorCount = 1. |
|
257 |
||
258 |
"Created: / 05-09-2014 / 18:22:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
259 |
"Modified: / 08-09-2014 / 12:26:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 260 |
! |
261 |
||
262 |
tst_crash |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
263 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
264 |
<spawn: true> |
1447 | 265 |
|
266 |
| bytes | |
|
1172 | 267 |
|
1194
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
268 |
Stdout nextPutLine: 'Going to crash now!!'. |
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
269 |
|
1172 | 270 |
bytes := ExternalBytes address: 16r10 size: 100. |
271 |
bytes byteAt: 1 put: 10. |
|
272 |
||
273 |
"Created: / 05-09-2014 / 18:24:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1194
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
274 |
"Modified: / 16-09-2014 / 20:30:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 275 |
! |
276 |
||
277 |
tst_error |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
278 |
<spawn: true> |
1172 | 279 |
self error:'Error' |
280 |
||
281 |
"Created: / 05-09-2014 / 18:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
282 |
"Modified: / 08-09-2014 / 12:26:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 283 |
! |
284 |
||
285 |
tst_fail |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
286 |
<spawn: true> |
1172 | 287 |
self assert: false. |
288 |
||
289 |
"Created: / 05-09-2014 / 18:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
290 |
"Modified: / 08-09-2014 / 12:26:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 291 |
! |
292 |
||
1447 | 293 |
tst_pass |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
294 |
<spawn: true> |
1172 | 295 |
|
296 |
"Created: / 05-09-2014 / 18:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
297 |
"Modified: / 08-09-2014 / 12:26:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 298 |
! ! |
299 |
||
300 |
!VMCrashTestCase class methodsFor:'documentation'! |
|
301 |
||
302 |
version |
|
303 |
^ '$Header$' |
|
304 |
! |
|
305 |
||
306 |
version_CVS |
|
307 |
^ '$Header$' |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
308 |
! |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
309 |
|
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
310 |
version_HG |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
311 |
|
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
312 |
^ '$Changeset: <not expanded> $' |
1172 | 313 |
! ! |
314 |
||
315 |
||
316 |
VMCrashTestCase initialize! |