Skip to content

Commit b3af90d

Browse files
authored
Re-enable some tests (#1558)
* Re-enable test_ordered_dict * Re-enable more tests * Skip test_ordered_dict failures * Skip intermittent failures * Re-enable test_base64 * Disable failing tests * Re-enable ctypes.test_structures * Set IsolationLevel=PROCESS for test_base64 * Re-enable test on posix * Disable on macOS
1 parent dd03adb commit b3af90d

12 files changed

Lines changed: 750 additions & 41 deletions

Src/IronPython/Runtime/DictionaryOps.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@ public static object pop(PythonDictionary self, object key, object defaultValue)
9999
}
100100
}
101101

102-
public static PythonTuple popitem(IDictionary<object, object> self) {
103-
IEnumerator<KeyValuePair<object, object>> ie = self.GetEnumerator();
102+
public static PythonTuple popitem(PythonDictionary self) {
103+
using IEnumerator<KeyValuePair<object, object>> ie = self.GetEnumerator();
104104
if (ie.MoveNext()) {
105105
object key = ie.Current.Key;
106106
object val = ie.Current.Value;
107-
self.Remove(key);
107+
self.RemoveDirect(key);
108108
return PythonTuple.MakeTuple(key, val);
109109
}
110110
throw PythonOps.KeyError("dictionary is empty");

Src/IronPythonTest/Cases/CPythonCasesManifest.ini

Lines changed: 30 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ Ignore=true
5555
[CPython.ctypes.test_slicing]
5656
Ignore=true # https://github.com/IronLanguages/ironpython3/issues/1299
5757

58+
[CPython.ctypes.test_structures] # IronPython.test_structures_ctypes_stdlib
59+
Ignore=true
60+
5861
[CPython.ctypes.test_unicode]
5962
Ignore=true
6063
Reason=https://github.com/IronLanguages/ironpython2/issues/405
@@ -106,6 +109,9 @@ Ignore=true
106109
RunCondition=$(IS_OSX)
107110
Ignore=true
108111

112+
[CPython.test_abc] # IronPython.test_abc_stdlib
113+
Ignore=true
114+
109115
[CPython.test_aifc] # Module will be removed in 3.13 - https://github.com/IronLanguages/ironpython3/issues/1352
110116
Ignore=true
111117
Reason=ImportError: No module named audioop
@@ -172,6 +178,9 @@ Ignore=true
172178
Ignore=true
173179
Reason=ImportError: No module named audioop
174180

181+
[CPython.test_base64] # IronPython.test_base64_stdlib
182+
Ignore=true
183+
175184
[CPython.test_bdb] # new in 3.6
176185
Ignore=true
177186

@@ -198,6 +207,9 @@ Ignore=true
198207
RunCondition=$(IS_DEBUG) # https://github.com/IronLanguages/ironpython3/issues/1067
199208
Timeout=600000 # 10 minute timeout
200209

210+
[CPython.test_call] # IronPython.test_call_stdlib
211+
Ignore=true
212+
201213
[CPython.test_capi]
202214
Ignore=true
203215
Reason=ImportError: No module named _testcapi
@@ -226,6 +238,9 @@ Ignore=true
226238
[CPython.test_code]
227239
Ignore=true
228240

241+
[CPython.test_code_module] # IronPython.test_code_module_stdlib
242+
Ignore=true
243+
229244
[CPython.test_codeccallbacks] # IronPython.test_codeccallbacks_stdlib
230245
Ignore=true
231246

@@ -445,6 +460,9 @@ RunCondition=NOT $(IS_POSIX) # TODO: debug
445460
[CPython.test_filecmp]
446461
NotParallelSafe=true # Creates/deletes a directory with a static name 'dir' in $TEMP
447462

463+
[CPython.test_fileinput] # IronPython.test_fileinput_stdlib
464+
Ignore=true
465+
448466
[CPython.test_fileio]
449467
Ignore=true
450468

@@ -592,6 +610,9 @@ Ignore=true
592610
[CPython.test_lib2to3]
593611
Ignore=true
594612

613+
[CPython.test_linecache]
614+
Ignore=true # blocked by https://github.com/IronLanguages/ironpython3/issues/1245 - using the test_linecache_stdlib approach makes the issue disappear...
615+
595616
[CPython.test_list]
596617
IsolationLevel=ENGINE
597618
MaxRecursion=100
@@ -686,11 +707,17 @@ Ignore=true
686707
RunCondition=$(IS_WINDOWS) # TODO: failing on posix
687708
IsolationLevel=PROCESS # Manipulates environment variables
688709

710+
[CPython.test_opcodes] # IronPython.test_opcodes_stdlib
711+
Ignore=true
712+
689713
[CPython.test_openpty]
690714
RunCondition=$(IS_POSIX)
691715
Ignore=true
692716
Reason=unittest.case.SkipTest: os.openpty() not available.
693717

718+
[CPython.test_ordered_dict] # IronPython.test_ordered_dict_stdlib
719+
Ignore=true
720+
694721
[CPython.test_os]
695722
Ignore=true
696723

@@ -804,6 +831,7 @@ Reason=unittest.case.SkipTest: No module named 'readline'
804831

805832
[CPython.test_regrtest]
806833
IsolationLevel=PROCESS
834+
Ignore=true # lots of failures
807835

808836
[CPython.test_reprlib]
809837
Ignore=true
@@ -1089,9 +1117,8 @@ Reason=https://github.com/IronLanguages/ironpython3/issues/581
10891117
IsolationLevel=ENGINE
10901118
MaxRecursion=100
10911119

1092-
[CPython.test_userlist]
1093-
IsolationLevel=ENGINE
1094-
MaxRecursion=100
1120+
[CPython.test_userlist] # IronPython.test_userlist_stdlib
1121+
Ignore=true
10951122

10961123
[CPython.test_venv]
10971124
Ignore=true
@@ -1175,38 +1202,5 @@ RunCondition=NOT $(IS_MONO) # TODO: debug
11751202

11761203
# -------------------- The following worked in 3.4 ---------------------------
11771204

1178-
[CPython.ctypes.test_structures]
1179-
Ignore=true # 2 failures
1180-
1181-
[CPython.test_abc]
1182-
Ignore=true # test_works_with_init_subclass - https://github.com/IronLanguages/ironpython3/issues/1448
1183-
1184-
[CPython.test_base64]
1185-
Ignore=true # https://github.com/IronLanguages/ironpython3/issues/1135
1186-
1187-
[CPython.test_call]
1188-
Ignore=true # test_kwargs_order - https://github.com/IronLanguages/ironpython3/issues/1460
1189-
1190-
[CPython.test_code_module]
1191-
Ignore=true # test_context_tb
1192-
1193-
[CPython.test_fileinput]
1194-
Ignore=true # test_errors - https://github.com/IronLanguages/ironpython3/issues/1452
1195-
11961205
[CPython.test_int]
11971206
Ignore=true # blocked by https://github.com/IronLanguages/ironpython3/issues/105
1198-
1199-
[CPython.test_linecache]
1200-
Ignore=true # two failures
1201-
1202-
[CPython.test_opcodes]
1203-
Ignore=true # __annotations__
1204-
1205-
[CPython.test_ordered_dict]
1206-
Ignore=true # multiple failures
1207-
1208-
[CPython.test_regrtest]
1209-
Ignore=true # lots of failures
1210-
1211-
[CPython.test_userlist]
1212-
Ignore=true # test_free_after_iterating

Src/IronPythonTest/Cases/IronPythonCasesManifest.ini

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ WorkingDirectory=$(TEST_FILE_DIR)
44
Redirect=false
55
Timeout=120000 # 2 minute timeout
66

7-
[CPython.test_array_stdlib]
8-
IsolationLevel=PROCESS # https://github.com/IronLanguages/ironpython3/issues/489
7+
[IronPython.test_base64_stdlib]
8+
IsolationLevel=PROCESS # https://github.com/IronLanguages/ironpython3/issues/1440
99

1010
[IronPython.test_builtin_stdlib]
1111
RunCondition=NOT $(IS_MONO)
@@ -140,6 +140,10 @@ Ignore=true
140140
IsolationLevel=PROCESS
141141
NotParallelSafe=true # Creates temporary fixed-name modules
142142

143+
[IronPython.test_userlist_stdlib]
144+
IsolationLevel=ENGINE
145+
MaxRecursion=100
146+
143147
[IronPython.test_weakref]
144148
RunCondition=NOT $(IS_MONO) # weakref failures
145149

Tests/test_abc_stdlib.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Licensed to the .NET Foundation under one or more agreements.
2+
# The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
# See the LICENSE file in the project root for more information.
4+
5+
##
6+
## Run selected tests from test_abc from StdLib
7+
##
8+
9+
import unittest
10+
import sys
11+
12+
from iptest import run_test
13+
14+
import test.test_abc
15+
16+
def load_tests(loader, standard_tests, pattern):
17+
if sys.implementation.name == 'ironpython':
18+
suite = unittest.TestSuite()
19+
suite.addTest(test.test_abc.TestABC('test_ABC_helper'))
20+
suite.addTest(test.test_abc.TestABC('test_abstractclassmethod_basics'))
21+
suite.addTest(test.test_abc.TestABC('test_abstractmethod_basics'))
22+
suite.addTest(test.test_abc.TestABC('test_abstractmethod_integration'))
23+
suite.addTest(test.test_abc.TestABC('test_abstractproperty_basics'))
24+
suite.addTest(test.test_abc.TestABC('test_abstractstaticmethod_basics'))
25+
suite.addTest(test.test_abc.TestABC('test_all_new_methods_are_called'))
26+
suite.addTest(test.test_abc.TestABC('test_customdescriptors_with_abstractmethod'))
27+
suite.addTest(test.test_abc.TestABC('test_descriptors_with_abstractmethod'))
28+
suite.addTest(test.test_abc.TestABC('test_isinstance_invalidation'))
29+
suite.addTest(test.test_abc.TestABC('test_metaclass_abc'))
30+
suite.addTest(test.test_abc.TestABC('test_register_as_class_deco'))
31+
suite.addTest(test.test_abc.TestABC('test_register_non_class'))
32+
suite.addTest(test.test_abc.TestABC('test_registration_basics'))
33+
suite.addTest(test.test_abc.TestABC('test_registration_builtins'))
34+
suite.addTest(test.test_abc.TestABC('test_registration_edge_cases'))
35+
suite.addTest(test.test_abc.TestABC('test_registration_transitiveness'))
36+
suite.addTest(unittest.expectedFailure(test.test_abc.TestABCWithInitSubclass('test_works_with_init_subclass'))) # https://github.com/IronLanguages/ironpython3/issues/1448
37+
suite.addTest(test.test_abc.TestLegacyAPI('test_abstractclassmethod_basics'))
38+
suite.addTest(test.test_abc.TestLegacyAPI('test_abstractproperty_basics'))
39+
suite.addTest(test.test_abc.TestLegacyAPI('test_abstractstaticmethod_basics'))
40+
return suite
41+
42+
else:
43+
return loader.loadTestsFromModule(test.test_abc, pattern)
44+
45+
run_test(__name__)

Tests/test_base64_stdlib.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Licensed to the .NET Foundation under one or more agreements.
2+
# The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
# See the LICENSE file in the project root for more information.
4+
5+
##
6+
## Run selected tests from test_base64 from StdLib
7+
##
8+
9+
import unittest
10+
import sys
11+
12+
from iptest import is_posix, run_test
13+
14+
import test.test_base64
15+
16+
def load_tests(loader, standard_tests, pattern):
17+
if sys.implementation.name == 'ironpython':
18+
suite = unittest.TestSuite()
19+
suite.addTest(test.test_base64.BaseXYTestCase('test_ErrorHeritage'))
20+
suite.addTest(test.test_base64.BaseXYTestCase('test_a85_padding'))
21+
suite.addTest(test.test_base64.BaseXYTestCase('test_a85decode'))
22+
suite.addTest(test.test_base64.BaseXYTestCase('test_a85decode_errors'))
23+
suite.addTest(test.test_base64.BaseXYTestCase('test_a85encode'))
24+
suite.addTest(test.test_base64.BaseXYTestCase('test_b16decode'))
25+
suite.addTest(test.test_base64.BaseXYTestCase('test_b16encode'))
26+
suite.addTest(test.test_base64.BaseXYTestCase('test_b32decode'))
27+
suite.addTest(test.test_base64.BaseXYTestCase('test_b32decode_casefold'))
28+
suite.addTest(test.test_base64.BaseXYTestCase('test_b32decode_error'))
29+
suite.addTest(test.test_base64.BaseXYTestCase('test_b32encode'))
30+
suite.addTest(test.test_base64.BaseXYTestCase('test_b64decode'))
31+
suite.addTest(test.test_base64.BaseXYTestCase('test_b64decode_invalid_chars'))
32+
suite.addTest(test.test_base64.BaseXYTestCase('test_b64decode_padding_error'))
33+
suite.addTest(test.test_base64.BaseXYTestCase('test_b64encode'))
34+
suite.addTest(test.test_base64.BaseXYTestCase('test_b85_padding'))
35+
suite.addTest(test.test_base64.BaseXYTestCase('test_b85decode'))
36+
suite.addTest(test.test_base64.BaseXYTestCase('test_b85decode_errors'))
37+
suite.addTest(test.test_base64.BaseXYTestCase('test_b85encode'))
38+
suite.addTest(test.test_base64.BaseXYTestCase('test_decode_nonascii_str'))
39+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_decode'))
40+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_decodebytes'))
41+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_decodestring_warns'))
42+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_encode'))
43+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_encodebytes'))
44+
suite.addTest(test.test_base64.LegacyBase64TestCase('test_encodestring_warns'))
45+
suite.addTest(test.test_base64.TestMain('test_decode'))
46+
suite.addTest(test.test_base64.TestMain('test_encode_decode'))
47+
suite.addTest(test.test_base64.TestMain('test_encode_file'))
48+
if is_posix:
49+
suite.addTest(test.test_base64.TestMain('test_encode_from_stdin'))
50+
else:
51+
suite.addTest(unittest.expectedFailure(test.test_base64.TestMain('test_encode_from_stdin'))) # https://github.com/IronLanguages/ironpython3/issues/1135
52+
return suite
53+
54+
else:
55+
return loader.loadTestsFromModule(test.test_base64, pattern)
56+
57+
run_test(__name__)

Tests/test_call_stdlib.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Licensed to the .NET Foundation under one or more agreements.
2+
# The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
# See the LICENSE file in the project root for more information.
4+
5+
##
6+
## Run selected tests from test_call from StdLib
7+
##
8+
9+
import unittest
10+
import sys
11+
12+
from iptest import run_test
13+
14+
import test.test_call
15+
16+
def load_tests(loader, standard_tests, pattern):
17+
if sys.implementation.name == 'ironpython':
18+
suite = unittest.TestSuite()
19+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_0'))
20+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_0_ext'))
21+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_0_kw'))
22+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_1'))
23+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_1_ext'))
24+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_1_kw'))
25+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_2'))
26+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_2_ext'))
27+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs0_2_kw'))
28+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_0'))
29+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_0_ext'))
30+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_0_kw'))
31+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_1'))
32+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_1_ext'))
33+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_1_kw'))
34+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_2'))
35+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_2_ext'))
36+
suite.addTest(test.test_call.CFunctionCalls('test_oldargs1_2_kw'))
37+
suite.addTest(test.test_call.CFunctionCalls('test_varargs0'))
38+
suite.addTest(test.test_call.CFunctionCalls('test_varargs0_ext'))
39+
suite.addTest(test.test_call.CFunctionCalls('test_varargs0_kw'))
40+
suite.addTest(test.test_call.CFunctionCalls('test_varargs1'))
41+
suite.addTest(test.test_call.CFunctionCalls('test_varargs1_ext'))
42+
suite.addTest(test.test_call.CFunctionCalls('test_varargs1_kw'))
43+
suite.addTest(test.test_call.CFunctionCalls('test_varargs2'))
44+
suite.addTest(test.test_call.CFunctionCalls('test_varargs2_ext'))
45+
suite.addTest(test.test_call.CFunctionCalls('test_varargs2_kw'))
46+
suite.addTest(test.test_call.FastCallTests('test_fastcall'))
47+
suite.addTest(test.test_call.FastCallTests('test_fastcall_dict'))
48+
suite.addTest(test.test_call.FastCallTests('test_fastcall_keywords'))
49+
# suite.addTest(test.test_call.FunctionCalls('test_kwargs_order')) # intermittent failures due to https://github.com/IronLanguages/ironpython3/issues/1460
50+
return suite
51+
52+
else:
53+
return loader.loadTestsFromModule(test.test_call, pattern)
54+
55+
run_test(__name__)

Tests/test_code_module_stdlib.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Licensed to the .NET Foundation under one or more agreements.
2+
# The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
# See the LICENSE file in the project root for more information.
4+
5+
##
6+
## Run selected tests from test_code_module from StdLib
7+
##
8+
9+
import unittest
10+
import sys
11+
12+
from iptest import run_test
13+
14+
import test.test_code_module
15+
16+
def load_tests(loader, standard_tests, pattern):
17+
if sys.implementation.name == 'ironpython':
18+
suite = unittest.TestSuite()
19+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_banner'))
20+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_cause_tb'))
21+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_console_stderr'))
22+
suite.addTest(unittest.expectedFailure(test.test_code_module.TestInteractiveConsole('test_context_tb'))) # https://github.com/IronLanguages/ironpython3/issues/1557
23+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_exit_msg'))
24+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_ps1'))
25+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_ps2'))
26+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_syntax_error'))
27+
suite.addTest(test.test_code_module.TestInteractiveConsole('test_sysexcepthook'))
28+
return suite
29+
30+
else:
31+
return loader.loadTestsFromModule(test.test_code_module, pattern)
32+
33+
run_test(__name__)

0 commit comments

Comments
 (0)