diff --git a/setup/test.py b/setup/test.py index ba364dd46d..71efa6fe70 100644 --- a/setup/test.py +++ b/setup/test.py @@ -62,6 +62,8 @@ def find_tests(which_tests=None): if ok('misc'): from calibre.ebooks.metadata.tag_mapper import find_tests a(find_tests()) + from calibre.utils.shared_file import find_tests + a(find_tests()) tests = unittest.TestSuite(ans) return tests diff --git a/src/calibre/utils/shared_file.py b/src/calibre/utils/shared_file.py index 217d409357..394c0cd86d 100644 --- a/src/calibre/utils/shared_file.py +++ b/src/calibre/utils/shared_file.py @@ -172,32 +172,34 @@ else: def raise_winerror(x): raise NotImplementedError(), None, sys.exc_info()[2] -def test(): - import repr as reprlib - - def eq(x, y): - if x != y: - raise AssertionError('%s != %s' % (reprlib.repr(x), reprlib.repr(y))) - +def find_tests(): + import unittest from calibre.ptempfile import TemporaryDirectory - with TemporaryDirectory() as tdir: - fname = os.path.join(tdir, 'test.txt') - with share_open(fname, 'wb') as f: - f.write(b'a' * 20 * 1024) - eq(fname, f.name) - f = share_open(fname, 'rb') - eq(f.read(1), b'a') - if iswindows: - os.rename(fname, fname+'.moved') - os.remove(fname+'.moved') - else: - os.remove(fname) - eq(f.read(1), b'a') - f2 = share_open(fname, 'w+b') - f2.write(b'b' * 10 * 1024) - f2.seek(0) - eq(f.read(10000), b'a'*10000) - eq(f2.read(100), b'b' * 100) - f3 = share_open(fname, 'rb') - eq(f3.read(100), b'b' * 100) + class SharedFileTest(unittest.TestCase): + + def test_shared_file(self): + eq = self.assertEqual + + with TemporaryDirectory() as tdir: + fname = os.path.join(tdir, 'test.txt') + with share_open(fname, 'wb') as f: + f.write(b'a' * 20 * 1024) + eq(fname, f.name) + f = share_open(fname, 'rb') + eq(f.read(1), b'a') + if iswindows: + os.rename(fname, fname+'.moved') + os.remove(fname+'.moved') + else: + os.remove(fname) + eq(f.read(1), b'a') + f2 = share_open(fname, 'w+b') + f2.write(b'b' * 10 * 1024) + f2.seek(0) + eq(f.read(10000), b'a'*10000) + eq(f2.read(100), b'b' * 100) + f3 = share_open(fname, 'rb') + eq(f3.read(100), b'b' * 100) + + return unittest.defaultTestLoader.loadTestsFromTestCase(SharedFileTest)