From dc39bf76e7255d4a022216cc96c7bc0a9b1679fc Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 25 Apr 2010 06:09:23 +1200 Subject: Do not follow symlinks when statting. Report all hardlinks to the same file as duplicates. This is probably stupid, but avoids a bug: if foo and bar are hardlinks to the same inode, and foobar is not, but has identical content, then previously it would be random whether foo or bar was reported as the hardlinks. Further, only one of foo and bar would be made into a hardlink with foobar. So the next run would report the other one as a duplicate. --- testit | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'testit') diff --git a/testit b/testit index e385366..28ec43d 100755 --- a/testit +++ b/testit @@ -92,7 +92,16 @@ class TwoHardlinksToSameContent(TestCase): def setUp(self): self.create('foo', 'foo') self.hardlink('foo', 'bar') - self.identical = [] + self.identical = ['foo', 'bar'] + + +class TwoHardlinksToSameContentPlusSecondIdenticalCopy(TestCase): + + def setUp(self): + self.create('foo', 'foo') + self.hardlink('foo', 'bar') + self.create('foobar', 'foo') + self.identical = ['foo', 'bar', 'foobar'] class Symlink(TestCase): @@ -110,12 +119,17 @@ def main(): issubclass(o, TestCase) and o != TestCase] for klass in klasses: - test = klass() - test.setUp() - test.test() - test.tearDown() - test.cleanup() - print "Test PASS: %s" % (klass.__name__) + try: + test = klass() + test.setUp() + test.test() + test.tearDown() + test.cleanup() + except Exception, e: + print 'Test FAIL: %s' % klass.__name__ + raise e + else: + print "Test PASS: %s" % klass.__name__ if __name__ == '__main__': -- cgit v1.2.1