Index: grit/tool/build_unittest.py |
diff --git a/grit/tool/build_unittest.py b/grit/tool/build_unittest.py |
index d35778334218e3723e9f43c19afc43f1ad5c7249..bf657249871081c0aec477d3a11a5dd44932d06a 100644 |
--- a/grit/tool/build_unittest.py |
+++ b/grit/tool/build_unittest.py |
@@ -301,6 +301,53 @@ class BuildUnittest(unittest.TestCase): |
self.assertTrue(abs(second_mtime - UNCHANGED) > 5) |
self.assertTrue(abs(third_mtime - UNCHANGED) < 5) |
+ def testGenerateDepFileWithDependOnStamp(self): |
+ output_dir = tempfile.mkdtemp() |
+ builder = build.RcBuilder() |
+ class DummyOpts(object): |
+ def __init__(self): |
+ self.input = util.PathFromRoot('grit/testdata/substitute.grd') |
+ self.verbose = False |
+ self.extra_verbose = False |
+ expected_dep_file_name = 'substitute.grd.d' |
+ expected_stamp_file_name = expected_dep_file_name + '.stamp' |
+ expected_dep_file = os.path.join(output_dir, expected_dep_file_name) |
+ expected_stamp_file = os.path.join(output_dir, expected_stamp_file_name) |
+ if os.path.isfile(expected_stamp_file): |
+ os.remove(expected_stamp_file) |
+ builder.Run(DummyOpts(), ['-o', output_dir, |
+ '--depdir', output_dir, |
+ '--depfile', expected_dep_file, |
+ '--depend-on-stamp']) |
+ self.failUnless(os.path.isfile(expected_stamp_file)) |
+ first_mtime = os.stat(expected_stamp_file).st_mtime |
+ |
+ # Reset mtime to very old. |
+ OLDTIME = 10 |
+ os.utime(expected_stamp_file, (OLDTIME, OLDTIME)) |
+ |
+ builder.Run(DummyOpts(), ['-o', output_dir, |
+ '--depdir', output_dir, |
+ '--depfile', expected_dep_file, |
+ '--depend-on-stamp']) |
+ self.failUnless(os.path.isfile(expected_stamp_file)) |
+ second_mtime = os.stat(expected_stamp_file).st_mtime |
+ |
+ # Some OS have a 2s stat resolution window, so can't do a direct comparison. |
+ self.assertTrue((second_mtime - OLDTIME) > 5) |
+ self.assertTrue(abs(second_mtime - first_mtime) < 5) |
+ |
+ self.failUnless(os.path.isfile(expected_dep_file)) |
+ with open(expected_dep_file) as f: |
+ line = f.readline() |
+ (dep_output_file, deps_string) = line.split(': ') |
+ deps = deps_string.split(' ') |
+ |
+ self.failUnlessEqual(expected_stamp_file_name, dep_output_file) |
+ self.failUnlessEqual(1, len(deps)) |
+ self.failUnlessEqual(deps[0], |
+ util.PathFromRoot('grit/testdata/substitute.xmb')) |
+ |
if __name__ == '__main__': |
unittest.main() |