Skip to content

Commit f45f3e9

Browse files
authored
Add running of integration tests and fix some issues (#76)
This PR adds the support for running the SOM integration tests as introduced with SOM-st/SOM#128 and SOM-st/SOM#129. SOM++ has various tests not passing, often because SOM does not yet specify what the expected behavior should be.
2 parents 6b807e1 + 906ee3d commit f45f3e9

File tree

3 files changed

+175
-1
lines changed

3 files changed

+175
-1
lines changed

.github/workflows/ci.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ jobs:
6868
cd cmake-build
6969
./SOM++ -cp ../Smalltalk ../TestSuite/TestHarness.som
7070
71+
- name: Integration Tests
72+
run: |
73+
python -m pip install --upgrade pip
74+
pip install pytest
75+
export VM=./cmake-build/SOM++
76+
export CLASSPATH=Smalltalk
77+
export AWFY=core-lib/Examples/AreWeFastYet/Core
78+
export TEST_EXPECTATIONS=./integration-tests.yml
79+
pytest core-lib/IntegrationTests
80+
7181
- name: Clang Tidy
7282
if: matrix.compiler == 'clang'
7383
run: |

core-lib

Submodule core-lib updated 252 files

integration-tests.yml

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
known_failures:
2+
- Tests/int18.som
3+
4+
5+
failing_as_unspecified:
6+
- Tests/arbint_double_div_err.som
7+
- Tests/arbint_double_div_zero_err.som
8+
- Tests/arbint_modulus_err.som
9+
- Tests/array_at_idx0_err.som
10+
- Tests/array_at_idx2_err.som
11+
- Tests/array_at_idx_err.som
12+
- Tests/array_at_negative_idx_err.som
13+
- Tests/array_at_put_idx0_err.som
14+
- Tests/array_at_put_idx2_err.som
15+
- Tests/call2.som
16+
17+
# I think this one is about E vs e, but maybe also double rendering and e+59 or e59
18+
- Tests/double2.som
19+
- Tests/double_double_div.som
20+
- Tests/int_double_div.som
21+
22+
# printing is not specified
23+
# 18446744073709552000
24+
# or 1.8446744073709552e19 are both valid options
25+
- Tests/integer_asdouble.som
26+
- Tests/sin.som
27+
- Tests/cos.som
28+
29+
30+
# I think IEEE allows for infinities here, and we probably want that
31+
- Tests/double1.som
32+
- Tests/double3.som
33+
- Tests/double4.som
34+
- Tests/double5.som
35+
- Tests/double6.som
36+
- Tests/double7.som
37+
- Tests/double8.som
38+
- Tests/double9.som
39+
- Tests/double11.som
40+
- Tests/double12.som
41+
- Tests/double13.som
42+
43+
# Java seems to do some rounding in the transition, but it's also requiring bigints
44+
- Tests/double_asinteger.som
45+
46+
47+
# - Tests/fromstring.som
48+
- Tests/fromstring_double.som
49+
50+
51+
- Tests/double_double_div_err.som
52+
- Tests/double_double_div_zero_err1.som
53+
- Tests/double_double_div_zero_err2.som
54+
- Tests/double_double_div_zero_err3.som
55+
- Tests/double_double_div_zero_err4.som
56+
- Tests/double_modulus.som
57+
- Tests/double_modulus_err.som
58+
59+
- Tests/exit_double.som
60+
- Tests/exit_int_too_big.som
61+
- Tests/exit_string.som
62+
63+
- Tests/fromstring_double_err.som
64+
- Tests/fromstring_err.som
65+
66+
# - Tests/hashcode2.som
67+
68+
- Tests/inst_var_at_bad_idx.som
69+
- Tests/inst_var_at_put_bad_idx.som
70+
71+
- Tests/instance_fields_overlap/test.som
72+
- Tests/instance_fields_overlap2.som
73+
74+
- Tests/ic1.som
75+
76+
# - Tests/int3.som
77+
- Tests/int4.som
78+
- Tests/int5.som
79+
80+
- Tests/int5.som
81+
- Tests/int8.som
82+
- Tests/int9.som
83+
84+
- Tests/int10.som
85+
- Tests/int11.som
86+
- Tests/int12.som
87+
- Tests/int13.som
88+
- Tests/int14.som
89+
- Tests/int15.som
90+
- Tests/int16.som
91+
- Tests/int17.som
92+
- Tests/int19.som
93+
94+
# too large shifts would take too much memory to support
95+
# need to specify this some how
96+
- Tests/int20.som
97+
- Tests/int21.som
98+
- Tests/int22.som
99+
- Tests/int23.som
100+
- Tests/int24.som
101+
- Tests/int25.som
102+
- Tests/int27.som
103+
- Tests/int28.som
104+
- Tests/int30.som
105+
- Tests/int31.som
106+
# - Tests/int32.som
107+
108+
- Tests/int_double_div_err.som
109+
- Tests/int_double_div_zero_err.som
110+
- Tests/int_modulus.som
111+
- Tests/int_modulus_err.som
112+
113+
- Tests/load_string.som
114+
115+
- Tests/mutate_methods.som
116+
- Tests/mutate_superclass_method/test.som
117+
118+
- Tests/nested_backtrace1.som
119+
- Tests/nested_backtrace2.som
120+
121+
- Tests/obj2.som
122+
123+
- Tests/array_literals.som
124+
- Tests/perform_string.som
125+
- Tests/perform_witharguments_wrong.som
126+
- Tests/perform_unknown.som
127+
128+
- Tests/remainder_zero.som
129+
- Tests/round.som
130+
131+
- Tests/shift_right.som
132+
- Tests/shift_right_too_big.som
133+
- Tests/shift_right_type_err.som
134+
135+
- Tests/str_escape_unknown.som
136+
137+
- Tests/system2.som
138+
- Tests/system_global_lookup_string.som
139+
- Tests/system_global_put_string.som
140+
141+
- Tests/test_literals_limit_1.som
142+
- Tests/unknown_field_write.som
143+
144+
# This should be specified so that the "set" of fields cannot be changed reflectively
145+
# they obtained array can be changed, but it is expected to have no effect.
146+
- Tests/mutate_fields.som
147+
148+
# specify true, false, nil as literals not globals
149+
- Tests/system_global.som
150+
151+
# utf8 support required
152+
- Tests/string_length.som
153+
- Tests/is_letters.som
154+
- Tests/substring.som
155+
156+
unsupported:
157+
# JS doesn't have a sqrt implementation for BigIntegers
158+
- Tests/int26.som
159+
- Tests/int29.som
160+
161+
# som++ specific
162+
- Tests/to32bits.som
163+
- Tests/binary_super.som
164+
- Tests/test_literals_limit_2.som

0 commit comments

Comments
 (0)