Skip to content

Commit edd3504

Browse files
committed
Merge branch 'main' into 3.6
2 parents f610b3d + e160000 commit edd3504

File tree

4 files changed

+53
-23
lines changed

4 files changed

+53
-23
lines changed

Tests/modules/system_related/test_os.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,20 @@ def test_strerror(self):
3737
elif is_osx:
3838
self.assertEqual(os.strerror(40), "Message too long")
3939

40+
4041
def test_open_abplus(self):
4142
# equivalent to open(self.temp_file, "ab+"), see also test_file.test_open_abplus
4243
fd = os.open(self.temp_file, os.O_APPEND | os.O_CREAT | os.O_RDWR)
4344
try:
4445
f = open(fd, mode="ab+", closefd=False)
45-
f.write(b"abc")
46-
f.seek(0)
47-
self.assertEqual(f.read(2), b"ab")
48-
f.write(b"def")
49-
self.assertEqual(f.read(2), b"")
50-
f.seek(0)
51-
self.assertEqual(f.read(6), b"abcdef")
46+
f.raw.write(b"abcxxxx")
47+
f.raw.seek(0)
48+
self.assertEqual(f.raw.read(2), b"ab")
49+
f.raw.seek(0, 2)
50+
f.raw.write(b"def")
51+
self.assertEqual(f.raw.read(2), b"")
52+
f.raw.seek(0)
53+
self.assertEqual(f.raw.read(), b"abcxxxxdef")
5254
f.close()
5355
finally:
5456
os.close(fd)

Tests/test_dict_stdlib.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ def load_tests(loader, standard_tests, pattern):
2323
test.test_dict.DictTest('test_oob_indexing_dictiter_iternextitem'),
2424
test.test_dict.DictTest('test_setdefault_atomic'),
2525
]
26+
27+
skip_tests = []
2628
if is_mono:
27-
failing_tests += [
29+
skip_tests += [
2830
test.test_dict.DictTest('test_container_iterator'), # https://github.com/IronLanguages/ironpython3/issues/544
2931
]
3032

31-
return generate_suite(tests, failing_tests)
33+
return generate_suite(tests, failing_tests, skip_tests)
3234

3335
else:
3436
return tests

Tests/test_file.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -845,14 +845,15 @@ def test_open_wbplus(self):
845845
f.seek(0)
846846
self.assertEqual(f.read(), b"abdez")
847847

848+
848849
def test_open_abplus(self):
849850
with open(self.temp_file, "ab+") as f:
850-
f.write(b"abc")
851-
f.seek(0)
852-
self.assertEqual(f.read(2), b"ab")
853-
f.write(b"def")
854-
self.assertEqual(f.read(2), b"")
855-
f.seek(0)
856-
self.assertEqual(f.read(6), b"abcdef")
851+
f.raw.write(b"abc")
852+
f.raw.seek(0)
853+
self.assertEqual(f.raw.read(2), b"ab")
854+
f.raw.write(b"def")
855+
self.assertEqual(f.raw.read(2), b"")
856+
f.raw.seek(0)
857+
self.assertEqual(f.raw.read(6), b"abcdef")
857858

858859
run_test(__name__)

Tests/test_strformat.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,27 @@ class bad2(object):
226226
def __format__(self, *args):
227227
return 42
228228

229-
self.assertRaisesMessage(TypeError, "bad.__format__ must return a str, not NoneType" if is_cli else "__format__ must return a str, not NoneType", '{0}'.format, bad())
230-
self.assertRaisesMessage(TypeError, "bad2.__format__ must return a str, not int" if is_cli else "__format__ must return a str, not int", '{0}'.format, bad2())
229+
if is_cli:
230+
self.assertRaisesMessage(TypeError, "bad.__format__ must return a str, not NoneType", '{0}'.format, bad())
231+
self.assertRaisesMessage(TypeError, "bad2.__format__ must return a str, not int", '{0}'.format, bad2())
232+
elif sys.version_info >= (3, 5):
233+
self.assertRaisesMessage(TypeError, "__format__ must return a str, not NoneType", '{0}'.format, bad())
234+
self.assertRaisesMessage(TypeError, "__format__ must return a str, not int", '{0}'.format, bad2())
235+
else:
236+
self.assertRaisesMessage(TypeError, "__format__ method did not return string", '{0}'.format, bad())
237+
self.assertRaisesMessage(TypeError, "__format__ method did not return string", '{0}'.format, bad2())
231238

232239
self.assertRaisesMessage(ValueError, "Unknown conversion specifier x", '{0!x}'.format, 'abc')
233240

234-
self.assertRaisesMessage(TypeError, "bad.__format__ must return a str, not NoneType" if is_cli else "__format__ must return a str, not NoneType", format, bad())
235-
self.assertRaisesMessage(TypeError, "bad2.__format__ must return a str, not int" if is_cli else "__format__ must return a str, not int", format, bad2())
241+
if is_cli:
242+
self.assertRaisesMessage(TypeError, "bad.__format__ must return a str, not NoneType", format, bad())
243+
self.assertRaisesMessage(TypeError, "bad2.__format__ must return a str, not int", format, bad2())
244+
elif sys.version_info >= (3, 5):
245+
self.assertRaisesMessage(TypeError, "__format__ must return a str, not NoneType", format, bad())
246+
self.assertRaisesMessage(TypeError, "__format__ must return a str, not int", format, bad2())
247+
else:
248+
self.assertRaisesMessage(TypeError, "__format__ method did not return string", format, bad())
249+
self.assertRaisesMessage(TypeError, "__format__ method did not return string", format, bad2())
236250

237251
def test_object__format__(self):
238252
self.assertEqual(object.__format__("aaa", ""), "aaa")
@@ -281,7 +295,10 @@ def test_str___format___errors(self):
281295
if char == ',':
282296
errors.append(('10' + char, "Cannot specify ',' with 's'."))
283297
elif char == '_':
284-
errors.append(('10' + char, "Cannot specify '_' with 's'."))
298+
if is_cli or sys.version_info >= (3, 6):
299+
errors.append(('10' + char, "Cannot specify '_' with 's'."))
300+
else:
301+
errors.append(('10' + char, "Unknown format code '_' for object of type 'str'"))
285302
elif 0x20 < x < 0x80:
286303
errors.append(('10' + char, "Unknown format code '%s' for object of type 'str'" % char))
287304
else:
@@ -570,7 +587,10 @@ def test_float___format__(self):
570587
def test_float___format___errors(self):
571588
errors = []
572589

573-
okChars = set(['\0', '%', 'E', 'F', 'G', 'e', 'f', 'g', 'n', ',', '_'] + [chr(x) for x in range(ord('0'), ord('9') + 1)])
590+
okChars = set(['\0', '%', 'E', 'F', 'G', 'e', 'f', 'g', 'n', ','] + [chr(x) for x in range(ord('0'), ord('9') + 1)])
591+
if is_cli or sys.version_info >= (3, 6):
592+
okChars.add('_')
593+
574594
# verify the okChars are actually ok
575595
for char in okChars:
576596
2.0.__format__('10' + char)
@@ -911,6 +931,9 @@ def test_int___format__(self):
911931
]
912932

913933
for value, spec, result in tests_thousands:
934+
if not is_cli and sys.version_info < (3, 6) and "_" in spec:
935+
continue
936+
914937
assert "d" not in spec
915938
self.assertEqual(value.__format__(spec), result)
916939
self.assertEqual(big(value).__format__(spec), result)
@@ -965,7 +988,9 @@ def test_int___format___errors(self):
965988
else:
966989
errors.append((OverflowError, sys.maxsize + 1, 'c', "Python int too large to convert to C long"))
967990

968-
okChars = set(['%', 'E', 'F', 'G', 'X', 'x', 'b', 'c', 'd', 'o', 'e', 'f', 'g', 'n', ',', '_'] + [chr(x) for x in range(ord('0'), ord('9') + 1)])
991+
okChars = set(['%', 'E', 'F', 'G', 'X', 'x', 'b', 'c', 'd', 'o', 'e', 'f', 'g', 'n', ','] + [chr(x) for x in range(ord('0'), ord('9') + 1)])
992+
if is_cli or sys.version_info >= (3, 6):
993+
okChars.add('_')
969994

970995
# verify the okChars are actually ok
971996
for char in okChars:

0 commit comments

Comments
 (0)