aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib-python/3/test/test_tempfile.py')
-rw-r--r--lib-python/3/test/test_tempfile.py43
1 files changed, 30 insertions, 13 deletions
diff --git a/lib-python/3/test/test_tempfile.py b/lib-python/3/test/test_tempfile.py
index 521c2cf72d..1e58ac481f 100644
--- a/lib-python/3/test/test_tempfile.py
+++ b/lib-python/3/test/test_tempfile.py
@@ -3,6 +3,7 @@ import tempfile
import errno
import io
import os
+import pathlib
import signal
import sys
import re
@@ -61,6 +62,9 @@ class TestLowLevelInternals(unittest.TestCase):
with self.assertRaises(TypeError):
tempfile._infer_return_type(b'', None, '')
+ def test_infer_return_type_pathlib(self):
+ self.assertIs(str, tempfile._infer_return_type(pathlib.Path('/')))
+
# Common functionality.
@@ -84,8 +88,13 @@ class BaseTestCase(unittest.TestCase):
nsuf = nbase[len(nbase)-len(suf):]
if dir is not None:
- self.assertIs(type(name), str if type(dir) is str else bytes,
- "unexpected return type")
+ self.assertIs(
+ type(name),
+ str
+ if type(dir) is str or isinstance(dir, os.PathLike) else
+ bytes,
+ "unexpected return type",
+ )
if pre is not None:
self.assertIs(type(name), str if type(pre) is str else bytes,
"unexpected return type")
@@ -430,6 +439,7 @@ class TestMkstempInner(TestBadTempdir, BaseTestCase):
dir = tempfile.mkdtemp()
try:
self.do_create(dir=dir).write(b"blat")
+ self.do_create(dir=pathlib.Path(dir)).write(b"blat")
support.gc_collect()
finally:
os.rmdir(dir)
@@ -667,6 +677,7 @@ class TestMkstemp(BaseTestCase):
dir = tempfile.mkdtemp()
try:
self.do_create(dir=dir)
+ self.do_create(dir=pathlib.Path(dir))
finally:
os.rmdir(dir)
@@ -736,6 +747,7 @@ class TestMkdtemp(TestBadTempdir, BaseTestCase):
dir = tempfile.mkdtemp()
try:
os.rmdir(self.do_create(dir=dir))
+ os.rmdir(self.do_create(dir=pathlib.Path(dir)))
finally:
os.rmdir(dir)
@@ -1026,7 +1038,8 @@ class TestSpooledTemporaryFile(BaseTestCase):
# Verify writelines with a SpooledTemporaryFile
f = self.do_create()
f.writelines((b'x', b'y', b'z'))
- f.seek(0)
+ pos = f.seek(0)
+ self.assertEqual(pos, 0)
buf = f.read()
self.assertEqual(buf, b'xyz')
@@ -1044,7 +1057,8 @@ class TestSpooledTemporaryFile(BaseTestCase):
# when that occurs
f = self.do_create(max_size=30)
self.assertFalse(f._rolled)
- f.seek(100, 0)
+ pos = f.seek(100, 0)
+ self.assertEqual(pos, 100)
self.assertFalse(f._rolled)
f.write(b'x')
self.assertTrue(f._rolled)
@@ -1111,7 +1125,8 @@ class TestSpooledTemporaryFile(BaseTestCase):
def test_text_mode(self):
# Creating a SpooledTemporaryFile with a text mode should produce
# a file object reading and writing (Unicode) text strings.
- f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10)
+ f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10,
+ encoding="utf-8")
f.write("abc\n")
f.seek(0)
self.assertEqual(f.read(), "abc\n")
@@ -1121,8 +1136,8 @@ class TestSpooledTemporaryFile(BaseTestCase):
self.assertFalse(f._rolled)
self.assertEqual(f.mode, 'w+')
self.assertIsNone(f.name)
- self.assertIsNone(f.newlines)
- self.assertIsNone(f.encoding)
+ self.assertEqual(f.newlines, os.linesep)
+ self.assertEqual(f.encoding, "utf-8")
f.write("xyzzy\n")
f.seek(0)
@@ -1135,7 +1150,7 @@ class TestSpooledTemporaryFile(BaseTestCase):
self.assertEqual(f.mode, 'w+')
self.assertIsNotNone(f.name)
self.assertEqual(f.newlines, os.linesep)
- self.assertIsNotNone(f.encoding)
+ self.assertEqual(f.encoding, "utf-8")
def test_text_newline_and_encoding(self):
f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10,
@@ -1146,12 +1161,14 @@ class TestSpooledTemporaryFile(BaseTestCase):
self.assertFalse(f._rolled)
self.assertEqual(f.mode, 'w+')
self.assertIsNone(f.name)
- self.assertIsNone(f.newlines)
- self.assertIsNone(f.encoding)
+ self.assertIsNotNone(f.newlines)
+ self.assertEqual(f.encoding, "utf-8")
- f.write("\u039B" * 20 + "\r\n")
+ f.write("\u039C" * 10 + "\r\n")
+ f.write("\u039D" * 20)
f.seek(0)
- self.assertEqual(f.read(), "\u039B\r\n" + ("\u039B" * 20) + "\r\n")
+ self.assertEqual(f.read(),
+ "\u039B\r\n" + ("\u039C" * 10) + "\r\n" + ("\u039D" * 20))
self.assertTrue(f._rolled)
self.assertEqual(f.mode, 'w+')
self.assertIsNotNone(f.name)
@@ -1360,6 +1377,7 @@ class TestTemporaryDirectory(BaseTestCase):
"were deleted")
d2.cleanup()
+ @support.cpython_only
def test_del_on_collection(self):
# A TemporaryDirectory is deleted when garbage collected
dir = tempfile.mkdtemp()
@@ -1367,7 +1385,6 @@ class TestTemporaryDirectory(BaseTestCase):
d = self.do_create(dir=dir)
name = d.name
del d # Rely on refcounting to invoke __del__
- support.gc_collect()
self.assertFalse(os.path.exists(name),
"TemporaryDirectory %s exists after __del__" % name)
finally: