diff options
Diffstat (limited to 'summainlib_tests.py')
-rw-r--r-- | summainlib_tests.py | 129 |
1 files changed, 67 insertions, 62 deletions
diff --git a/summainlib_tests.py b/summainlib_tests.py index e2a3c0f..d982aae 100644 --- a/summainlib_tests.py +++ b/summainlib_tests.py @@ -24,7 +24,7 @@ class FakeChecksummer(object): def update(self, data): pass - + def hexdigest(self): return 'abc' @@ -39,13 +39,13 @@ class FakeOpenFile(object): data = self.data[:amount] self.data = self.data[len(data):] return data - + def close(self): pass def __enter__(self): return self - + def __exit__(self, a, b, c): pass @@ -67,16 +67,16 @@ class FilesystemObjectTests(unittest.TestCase): def setUp(self): self.st = { - summainlib.RESULT_MTIME_SEC: 1262307723, - summainlib.RESULT_MTIME_NSEC: 123456789, - summainlib.RESULT_MODE: stat.S_IFREG | 0644, - summainlib.RESULT_INO: 12765, - summainlib.RESULT_DEV: 42, - summainlib.RESULT_NLINK: 2, - summainlib.RESULT_SIZE: 1, - summainlib.RESULT_UID: 0, - summainlib.RESULT_GID: 0 - } + summainlib.RESULT_MTIME_SEC: 1262307723, + summainlib.RESULT_MTIME_NSEC: 123456789, + summainlib.RESULT_MODE: stat.S_IFREG | 0644, + summainlib.RESULT_INO: 12765, + summainlib.RESULT_DEV: 42, + summainlib.RESULT_NLINK: 2, + summainlib.RESULT_SIZE: 1, + summainlib.RESULT_UID: 0, + summainlib.RESULT_GID: 0 + } self.nn = summainlib.NumberNormalizer() self.pn = summainlib.SamePath() @@ -85,31 +85,34 @@ class FilesystemObjectTests(unittest.TestCase): def new(self, name, mode=None): if mode is not None: self.st[summainlib.RESULT_MODE] = mode - return summainlib.FilesystemObject(name, self.nn, self.pn, - self.exclude, - stat_result=self.st, - sha1=FakeChecksummer(), - sha224=FakeChecksummer(), - sha256=FakeChecksummer(), - sha384=FakeChecksummer(), - sha512=FakeChecksummer(), - md5=FakeChecksummer(), - open_file=FakeOpenFile(), - readlink=FakeReadlink(self), - xattrs={}) + return summainlib.FilesystemObject( + name, + self.nn, + self.pn, + self.exclude, + stat_result=self.st, + sha1=FakeChecksummer(), + sha224=FakeChecksummer(), + sha256=FakeChecksummer(), + sha384=FakeChecksummer(), + sha512=FakeChecksummer(), + md5=FakeChecksummer(), + open_file=FakeOpenFile(), + readlink=FakeReadlink(self), + xattrs={}) def test_raises_keyerror_for_unknown_field(self): self.assertRaises(KeyError, self.new('foo').__getitem__, 'UNKNOWNHASH') - + def test_formats_simple_name_identically(self): self.assertEqual(self.new('foo')['Name'], 'foo') - + def test_formats_space_correctly(self): self.assertEqual(self.new('foo bar')['Name'], 'foo%20bar') - + def test_formats_mtime_correctly(self): - self.assertEqual(self.new('foo')['Mtime'], + self.assertEqual(self.new('foo')['Mtime'], '2010-01-01 01:02:03.123456789 +0000') def test_formats_mode_for_regular_file_correctly(self): @@ -180,36 +183,39 @@ class FilesystemObjectNormalizedNumbersTests(unittest.TestCase): self.pn = summainlib.SamePath() self.exclude = [] self.checksums = ['SHA1'] - + def reset(self): self.dev += 1 self.nn.reset() def new(self, name): st = { - summainlib.RESULT_INO: self.ino, - summainlib.RESULT_DEV: self.dev, - summainlib.RESULT_MTIME_SEC: 0, - summainlib.RESULT_MTIME_NSEC: 0, - summainlib.RESULT_MODE: stat.S_IFREG|0, - summainlib.RESULT_NLINK: 1, - summainlib.RESULT_SIZE: 0, - summainlib.RESULT_UID: 0, - summainlib.RESULT_GID: 0 - } + summainlib.RESULT_INO: self.ino, + summainlib.RESULT_DEV: self.dev, + summainlib.RESULT_MTIME_SEC: 0, + summainlib.RESULT_MTIME_NSEC: 0, + summainlib.RESULT_MODE: stat.S_IFREG | 0, + summainlib.RESULT_NLINK: 1, + summainlib.RESULT_SIZE: 0, + summainlib.RESULT_UID: 0, + summainlib.RESULT_GID: 0 + } self.ino += 1 - return summainlib.FilesystemObject(name, self.nn, self.pn, - self.exclude, - stat_result=st, - sha1=FakeChecksummer(), - sha224=FakeChecksummer(), - sha256=FakeChecksummer(), - sha384=FakeChecksummer(), - sha512=FakeChecksummer(), - md5=FakeChecksummer(), - open_file=FakeOpenFile(), - readlink=FakeReadlink(self), - xattrs={}) + return summainlib.FilesystemObject( + name, + self.nn, + self.pn, + self.exclude, + stat_result=st, + sha1=FakeChecksummer(), + sha224=FakeChecksummer(), + sha256=FakeChecksummer(), + sha384=FakeChecksummer(), + sha512=FakeChecksummer(), + md5=FakeChecksummer(), + open_file=FakeOpenFile(), + readlink=FakeReadlink(self), + xattrs={}) def test_inode_numbers_are_repeatable(self): a1 = self.new('foo') @@ -226,32 +232,31 @@ class FilesystemObjectNormalizedNumbersTests(unittest.TestCase): self.assertEqual(a1['Ino'], b1['Ino']) self.assertEqual(a2['Dev'], b2['Dev']) self.assertEqual(a2['Ino'], b2['Ino']) - - + + class NumberNormalizerTests(unittest.TestCase): def setUp(self): self.nn = summainlib.NumberNormalizer() - + def test_returns_1_2_3_regardless_of_input_numbers(self): self.assertEqual([self.nn.get_ino(i) for i in [10, 11, 12]], [1, 2, 3]) - + def test_returns_1_1_1_when_input_number_is_repeated(self): self.assertEqual([self.nn.get_ino(i) for i in [10, 10, 10]], [1, 1, 1]) - - + + class PathNormalizerTests(unittest.TestCase): def setUp(self): self.pn = summainlib.PathNormalizer('secret') - + def test_returns_different_paths_for_different_inputs(self): - self.assertNotEqual(self.pn.normalize('/foo/bar'), + self.assertNotEqual(self.pn.normalize('/foo/bar'), self.pn.normalize('/ping/pong')) - + def test_returns_same_paths_for_same_input(self): self.assertEqual(self.pn.normalize('/foo/bar'), self.pn.normalize('/foo/bar')) - |