Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 1 | """Tests for distutils.dep_util.""" |
| 2 | import unittest |
| 3 | import os |
| 4 | import time |
| 5 | |
| 6 | from distutils.dep_util import newer, newer_pairwise, newer_group |
| 7 | from distutils.errors import DistutilsFileError |
| 8 | from distutils.tests import support |
Éric Araujo | 70ec44a | 2010-11-06 02:44:43 +0000 | [diff] [blame] | 9 | from test.support import run_unittest |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 10 | |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 11 | class DepUtilTestCase(support.TempdirManager, unittest.TestCase): |
| 12 | |
| 13 | def test_newer(self): |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 14 | |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 15 | tmpdir = self.mkdtemp() |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 16 | new_file = os.path.join(tmpdir, 'new') |
| 17 | old_file = os.path.abspath(__file__) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 18 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 19 | # Raise DistutilsFileError if 'new_file' does not exist. |
| 20 | self.assertRaises(DistutilsFileError, newer, new_file, old_file) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 21 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 22 | # Return true if 'new_file' exists and is more recently modified than |
| 23 | # 'old_file', or if 'new_file' exists and 'old_file' doesn't. |
| 24 | self.write_file(new_file) |
| 25 | self.assertTrue(newer(new_file, 'I_dont_exist')) |
| 26 | self.assertTrue(newer(new_file, old_file)) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 27 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 28 | # Return false if both exist and 'old_file' is the same age or younger |
| 29 | # than 'new_file'. |
| 30 | self.assertFalse(newer(old_file, new_file)) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 31 | |
| 32 | def test_newer_pairwise(self): |
| 33 | tmpdir = self.mkdtemp() |
| 34 | sources = os.path.join(tmpdir, 'sources') |
| 35 | targets = os.path.join(tmpdir, 'targets') |
| 36 | os.mkdir(sources) |
| 37 | os.mkdir(targets) |
| 38 | one = os.path.join(sources, 'one') |
| 39 | two = os.path.join(sources, 'two') |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 40 | three = os.path.abspath(__file__) # I am the old file |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 41 | four = os.path.join(targets, 'four') |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 42 | self.write_file(one) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 43 | self.write_file(two) |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 44 | self.write_file(four) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 45 | |
Ezio Melotti | b3aedd4 | 2010-11-20 19:04:17 +0000 | [diff] [blame^] | 46 | self.assertEqual(newer_pairwise([one, two], [three, four]), |
| 47 | ([one],[three])) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 48 | |
| 49 | def test_newer_group(self): |
| 50 | tmpdir = self.mkdtemp() |
| 51 | sources = os.path.join(tmpdir, 'sources') |
| 52 | os.mkdir(sources) |
| 53 | one = os.path.join(sources, 'one') |
| 54 | two = os.path.join(sources, 'two') |
| 55 | three = os.path.join(sources, 'three') |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 56 | old_file = os.path.abspath(__file__) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 57 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 58 | # return true if 'old_file' is out-of-date with respect to any file |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 59 | # listed in 'sources'. |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 60 | self.write_file(one) |
| 61 | self.write_file(two) |
| 62 | self.write_file(three) |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 63 | self.assertTrue(newer_group([one, two, three], old_file)) |
| 64 | self.assertFalse(newer_group([one, two, old_file], three)) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 65 | |
| 66 | # missing handling |
| 67 | os.remove(one) |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 68 | self.assertRaises(OSError, newer_group, [one, two, old_file], three) |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 69 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 70 | self.assertFalse(newer_group([one, two, old_file], three, |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 71 | missing='ignore')) |
| 72 | |
Tarek Ziadé | a90a8a1 | 2009-12-10 19:37:05 +0000 | [diff] [blame] | 73 | self.assertTrue(newer_group([one, two, old_file], three, |
Tarek Ziadé | 7ecb9c6 | 2009-12-10 15:35:35 +0000 | [diff] [blame] | 74 | missing='newer')) |
| 75 | |
| 76 | |
| 77 | def test_suite(): |
| 78 | return unittest.makeSuite(DepUtilTestCase) |
| 79 | |
| 80 | if __name__ == "__main__": |
Éric Araujo | 70ec44a | 2010-11-06 02:44:43 +0000 | [diff] [blame] | 81 | run_unittest(test_suite()) |