[Python-checkins] r69868 - python/branches/io-c/Lib/test/test_io.py
benjamin.peterson
python-checkins at python.org
Sun Feb 22 05:12:05 CET 2009
Author: benjamin.peterson
Date: Sun Feb 22 05:12:05 2009
New Revision: 69868
Log:
use a more DRY friendly approach to injecting module contents into test classes
Modified:
python/branches/io-c/Lib/test/test_io.py
Modified: python/branches/io-c/Lib/test/test_io.py
==============================================================================
--- python/branches/io-c/Lib/test/test_io.py (original)
+++ python/branches/io-c/Lib/test/test_io.py Sun Feb 22 05:12:05 2009
@@ -464,16 +464,10 @@
self.assertEqual(f.read(), b"abcxxx")
class CIOTest(IOTest):
- open = io.open
- IOBase = io.IOBase
- BytesIO = io.BytesIO
- FileIO = io.FileIO
+ pass
class PyIOTest(IOTest):
- open = staticmethod(pyio.open)
- IOBase = pyio.IOBase
- BytesIO = pyio.BytesIO
- FileIO = pyio.FileIO
+ pass
class CommonBufferedTests:
@@ -539,7 +533,7 @@
def testErrorThroughDestructor(self):
# Test that the exception state is not modified by a destructor,
# even if close() fails.
- rawio = CloseFailureIO()
+ rawio = self.CloseFailureIO()
def f():
self.tp(rawio).xyzzy
self.assertRaises(AttributeError, f)
@@ -709,11 +703,6 @@
class CBufferedReaderTest(BufferedReaderTest):
tp = io.BufferedReader
- BlockingIOError = io.BlockingIOError
- FileIO = io.FileIO
- MisbehavedRawIO = CMisbehavedRawIO
- MockRawIO = CMockRawIO
- MockFileIO = CMockFileIO
def test_initialization(self):
rawio = self.MockRawIO([b"abc"])
@@ -734,11 +723,6 @@
class PyBufferedReaderTest(BufferedReaderTest):
tp = pyio.BufferedReader
- BlockingIOError = pyio.BlockingIOError
- FileIO = pyio.FileIO
- MisbehavedRawIO = PyMisbehavedRawIO
- MockRawIO = PyMockRawIO
- MockFileIO = PyMockFileIO
class BufferedWriterTest(unittest.TestCase, CommonBufferedTests):
@@ -962,11 +946,6 @@
class CBufferedWriterTest(BufferedWriterTest):
tp = io.BufferedWriter
- BlockingIOError = io.BlockingIOError
- FileIO = io.FileIO
- MockRawIO = CMockRawIO
- MisbehavedRawIO = CMisbehavedRawIO
- MockNonBlockWriterIO = CMockNonBlockWriterIO
def test_initialization(self):
rawio = self.MockRawIO()
@@ -981,12 +960,6 @@
class PyBufferedWriterTest(BufferedWriterTest):
tp = pyio.BufferedWriter
- BlockingIOError = pyio.BlockingIOError
- FileIO = pyio.FileIO
- MockRawIO = PyMockRawIO
- MisbehavedRawIO = PyMisbehavedRawIO
- MockNonBlockWriterIO = PyMockNonBlockWriterIO
-
class BufferedRWPairTest(unittest.TestCase):
@@ -1000,11 +973,9 @@
class CBufferedRWPairTest(BufferedRWPairTest):
tp = io.BufferedRWPair
- MockRawIO = CMockRawIO
class PyBufferedRWPairTest(BufferedRWPairTest):
tp = pyio.BufferedRWPair
- MockRawIO = PyMockRawIO
class BufferedRandomTest(BufferedReaderTest, BufferedWriterTest):
@@ -1140,23 +1111,9 @@
class CBufferedRandomTest(BufferedRandomTest):
tp = io.BufferedRandom
- BlockingIOError = io.BlockingIOError
- FileIO = io.FileIO
- BytesIO = io.BytesIO
- MockRawIO = CMockRawIO
- MockFileIO = CMockFileIO
- MisbehavedRawIO = CMisbehavedRawIO
- MockNonBlockWriterIO = CMockNonBlockWriterIO
class PyBufferedRandomTest(BufferedRandomTest):
tp = pyio.BufferedRandom
- BlockingIOError = pyio.BlockingIOError
- FileIO = pyio.FileIO
- BytesIO = pyio.BytesIO
- MockRawIO = PyMockRawIO
- MockFileIO = PyMockFileIO
- MisbehavedRawIO = PyMisbehavedRawIO
- MockNonBlockWriterIO = PyMockNonBlockWriterIO
# To fully exercise seek/tell, the StatefulIncrementalDecoder has these
@@ -1502,7 +1459,7 @@
def testErrorThroughDestructor(self):
# Test that the exception state is not modified by a destructor,
# even if close() fails.
- rawio = CloseFailureIO()
+ rawio = self.CloseFailureIO()
def f():
self.TextIOWrapper(rawio).xyzzy
self.assertRaises(AttributeError, f)
@@ -1807,11 +1764,6 @@
self.assertEqual(buffer.seekable(), txt.seekable())
class CTextIOWrapperTest(TextIOWrapperTest):
- open = io.open
- BufferedReader = io.BufferedReader
- BufferedWriter = io.BufferedWriter
- TextIOWrapper = io.TextIOWrapper
- BytesIO = io.BytesIO
def test_initialization(self):
r = self.BytesIO(b"\xc3\xa9\n\n")
@@ -1823,11 +1775,7 @@
self.assertRaises(ValueError, t.read)
class PyTextIOWrapperTest(TextIOWrapperTest):
- open = staticmethod(pyio.open)
- BufferedReader = pyio.BufferedReader
- BufferedWriter = pyio.BufferedWriter
- TextIOWrapper = pyio.TextIOWrapper
- BytesIO = pyio.BytesIO
+ pass
class IncrementalNewlineDecoderTest(unittest.TestCase):
@@ -1924,10 +1872,10 @@
self.check_newline_decoding_utf8(decoder)
class CIncrementalNewlineDecoderTest(IncrementalNewlineDecoderTest):
- IncrementalNewlineDecoder = io.IncrementalNewlineDecoder
+ pass
class PyIncrementalNewlineDecoderTest(IncrementalNewlineDecoderTest):
- IncrementalNewlineDecoder = pyio.IncrementalNewlineDecoder
+ pass
# XXX Tests for open()
@@ -2037,27 +1985,42 @@
class CMiscIOTest(MiscIOTest):
io = io
- open = io.open
- BlockingIOError = io.BlockingIOError
- IOBase = io.IOBase
class PyMiscIOTest(MiscIOTest):
io = pyio
- open = staticmethod(pyio.open)
- BlockingIOError = pyio.BlockingIOError
- IOBase = pyio.IOBase
def test_main():
- support.run_unittest(CIOTest, PyIOTest,
- CBufferedReaderTest, PyBufferedReaderTest,
- CBufferedWriterTest, PyBufferedWriterTest,
- CBufferedRWPairTest, PyBufferedRWPairTest,
- CBufferedRandomTest, PyBufferedRandomTest,
- StatefulIncrementalDecoderTest,
- CIncrementalNewlineDecoderTest, PyIncrementalNewlineDecoderTest,
- CTextIOWrapperTest, PyTextIOWrapperTest,
- CMiscIOTest, PyMiscIOTest,
- )
+ tests = (CIOTest, PyIOTest,
+ CBufferedReaderTest, PyBufferedReaderTest,
+ CBufferedWriterTest, PyBufferedWriterTest,
+ CBufferedRWPairTest, PyBufferedRWPairTest,
+ CBufferedRandomTest, PyBufferedRandomTest,
+ StatefulIncrementalDecoderTest,
+ CIncrementalNewlineDecoderTest, PyIncrementalNewlineDecoderTest,
+ CTextIOWrapperTest, PyTextIOWrapperTest,
+ CMiscIOTest, PyMiscIOTest,)
+
+ # Put the namespaces of the IO module we are testing and some useful mock
+ # classes in the __dict__ of each test.
+ mocks = (MockRawIO, MisbehavedRawIO, MockFileIO, CloseFailureIO,
+ MockNonBlockWriterIO)
+ all_members = io.__all__ + ["IncrementalNewlineDecoder"]
+ c_io_ns = {name : getattr(io, name) for name in all_members}
+ py_io_ns = {name : getattr(pyio, name) for name in all_members}
+ globs = globals()
+ c_io_ns.update((x.__name__, globs["C" + x.__name__]) for x in mocks)
+ py_io_ns.update((x.__name__, globs["Py" + x.__name__]) for x in mocks)
+ # Avoid turning open into a bound method.
+ py_io_ns["open"] = pyio.OpenWrapper
+ for test in tests:
+ if test.__name__.startswith("C"):
+ for name, obj in c_io_ns.items():
+ setattr(test, name, obj)
+ elif test.__name__.startswith("Py"):
+ for name, obj in py_io_ns.items():
+ setattr(test, name, obj)
+
+ support.run_unittest(*tests)
if __name__ == "__main__":
test_main()
More information about the Python-checkins
mailing list