Index: grit/tool/build_unittest.py |
diff --git a/grit/tool/build_unittest.py b/grit/tool/build_unittest.py |
deleted file mode 100644 |
index bf657249871081c0aec477d3a11a5dd44932d06a..0000000000000000000000000000000000000000 |
--- a/grit/tool/build_unittest.py |
+++ /dev/null |
@@ -1,353 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-'''Unit tests for the 'grit build' tool. |
-''' |
- |
-import codecs |
-import os |
-import sys |
-import tempfile |
-if __name__ == '__main__': |
- sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) |
- |
-import unittest |
- |
-from grit import util |
-from grit.tool import build |
- |
- |
-class BuildUnittest(unittest.TestCase): |
- |
- def testFindTranslationsWithSubstitutions(self): |
- # This is a regression test; we had a bug where GRIT would fail to find |
- # messages with substitutions e.g. "Hello [IDS_USER]" where IDS_USER is |
- # another <message>. |
- 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 |
- builder.Run(DummyOpts(), ['-o', output_dir]) |
- |
- def testGenerateDepFile(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 = os.path.join(output_dir, 'substitute.grd.d') |
- builder.Run(DummyOpts(), ['-o', output_dir, |
- '--depdir', output_dir, |
- '--depfile', expected_dep_file]) |
- |
- 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("resource.h", dep_output_file) |
- self.failUnlessEqual(1, len(deps)) |
- self.failUnlessEqual(deps[0], |
- util.PathFromRoot('grit/testdata/substitute.xmb')) |
- |
- def testGenerateDepFileWithResourceIds(self): |
- output_dir = tempfile.mkdtemp() |
- builder = build.RcBuilder() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/substitute_no_ids.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- expected_dep_file = os.path.join(output_dir, 'substitute_no_ids.grd.d') |
- builder.Run(DummyOpts(), |
- ['-f', util.PathFromRoot('grit/testdata/resource_ids'), |
- '-o', output_dir, |
- '--depdir', output_dir, |
- '--depfile', expected_dep_file]) |
- |
- 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("resource.h", dep_output_file) |
- self.failUnlessEqual(2, len(deps)) |
- self.failUnlessEqual(deps[0], |
- util.PathFromRoot('grit/testdata/substitute.xmb')) |
- self.failUnlessEqual(deps[1], |
- util.PathFromRoot('grit/testdata/resource_ids')) |
- |
- def testAssertOutputs(self): |
- output_dir = tempfile.mkdtemp() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/substitute.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- |
- # Incomplete output file list should fail. |
- builder_fail = build.RcBuilder() |
- self.failUnlessEqual(2, |
- builder_fail.Run(DummyOpts(), [ |
- '-o', output_dir, |
- '-a', os.path.abspath( |
- os.path.join(output_dir, 'en_generated_resources.rc'))])) |
- |
- # Complete output file list should succeed. |
- builder_ok = build.RcBuilder() |
- self.failUnlessEqual(0, |
- builder_ok.Run(DummyOpts(), [ |
- '-o', output_dir, |
- '-a', os.path.abspath( |
- os.path.join(output_dir, 'en_generated_resources.rc')), |
- '-a', os.path.abspath( |
- os.path.join(output_dir, 'sv_generated_resources.rc')), |
- '-a', os.path.abspath( |
- os.path.join(output_dir, 'resource.h'))])) |
- |
- def _verifyWhitelistedOutput(self, |
- filename, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- encoding='utf8'): |
- self.failUnless(os.path.exists(filename)) |
- whitelisted_ids_found = [] |
- non_whitelisted_ids_found = [] |
- with codecs.open(filename, encoding=encoding) as f: |
- for line in f.readlines(): |
- for whitelisted_id in whitelisted_ids: |
- if whitelisted_id in line: |
- whitelisted_ids_found.append(whitelisted_id) |
- for non_whitelisted_id in non_whitelisted_ids: |
- if non_whitelisted_id in line: |
- non_whitelisted_ids_found.append(non_whitelisted_id) |
- self.longMessage = True |
- self.assertEqual(whitelisted_ids, |
- whitelisted_ids_found, |
- '\nin file {}'.format(os.path.basename(filename))) |
- non_whitelisted_msg = ('Non-Whitelisted IDs {} found in {}' |
- .format(non_whitelisted_ids_found, os.path.basename(filename))) |
- self.assertFalse(non_whitelisted_ids_found, non_whitelisted_msg) |
- |
- def testWhitelistStrings(self): |
- output_dir = tempfile.mkdtemp() |
- builder = build.RcBuilder() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/whitelist_strings.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') |
- builder.Run(DummyOpts(), ['-o', output_dir, |
- '-w', whitelist_file]) |
- header = os.path.join(output_dir, 'whitelist_test_resources.h') |
- rc = os.path.join(output_dir, 'en_whitelist_test_strings.rc') |
- |
- whitelisted_ids = ['IDS_MESSAGE_WHITELISTED'] |
- non_whitelisted_ids = ['IDS_MESSAGE_NOT_WHITELISTED'] |
- self._verifyWhitelistedOutput( |
- header, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- ) |
- self._verifyWhitelistedOutput( |
- rc, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- encoding='utf16' |
- ) |
- |
- def testWhitelistResources(self): |
- output_dir = tempfile.mkdtemp() |
- builder = build.RcBuilder() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/whitelist_resources.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') |
- builder.Run(DummyOpts(), ['-o', output_dir, |
- '-w', whitelist_file]) |
- header = os.path.join(output_dir, 'whitelist_test_resources.h') |
- map_cc = os.path.join(output_dir, 'whitelist_test_resources_map.cc') |
- map_h = os.path.join(output_dir, 'whitelist_test_resources_map.h') |
- pak = os.path.join(output_dir, 'whitelist_test_resources.pak') |
- |
- # Ensure the resource map header and .pak files exist, but don't verify |
- # their content. |
- self.failUnless(os.path.exists(map_h)) |
- self.failUnless(os.path.exists(pak)) |
- |
- whitelisted_ids = [ |
- 'IDR_STRUCTURE_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_WHITELISTED', |
- 'IDR_INCLUDE_WHITELISTED', |
- ] |
- non_whitelisted_ids = [ |
- 'IDR_STRUCTURE_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED', |
- 'IDR_INCLUDE_NOT_WHITELISTED', |
- ] |
- for output_file in (header, map_cc): |
- self._verifyWhitelistedOutput( |
- output_file, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- ) |
- |
- def testOutputAllResourceDefinesTrue(self): |
- output_dir = tempfile.mkdtemp() |
- builder = build.RcBuilder() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/whitelist_resources.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') |
- builder.Run(DummyOpts(), ['-o', output_dir, |
- '-w', whitelist_file, |
- '--output-all-resource-defines',]) |
- header = os.path.join(output_dir, 'whitelist_test_resources.h') |
- map_cc = os.path.join(output_dir, 'whitelist_test_resources_map.cc') |
- |
- whitelisted_ids = [ |
- 'IDR_STRUCTURE_WHITELISTED', |
- 'IDR_STRUCTURE_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED', |
- 'IDR_INCLUDE_WHITELISTED', |
- 'IDR_INCLUDE_NOT_WHITELISTED', |
- ] |
- non_whitelisted_ids = [] |
- for output_file in (header, map_cc): |
- self._verifyWhitelistedOutput( |
- output_file, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- ) |
- |
- def testOutputAllResourceDefinesFalse(self): |
- output_dir = tempfile.mkdtemp() |
- builder = build.RcBuilder() |
- class DummyOpts(object): |
- def __init__(self): |
- self.input = util.PathFromRoot('grit/testdata/whitelist_resources.grd') |
- self.verbose = False |
- self.extra_verbose = False |
- whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') |
- builder.Run(DummyOpts(), ['-o', output_dir, |
- '-w', whitelist_file, |
- '--no-output-all-resource-defines',]) |
- header = os.path.join(output_dir, 'whitelist_test_resources.h') |
- map_cc = os.path.join(output_dir, 'whitelist_test_resources_map.cc') |
- |
- whitelisted_ids = [ |
- 'IDR_STRUCTURE_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_WHITELISTED', |
- 'IDR_INCLUDE_WHITELISTED', |
- ] |
- non_whitelisted_ids = [ |
- 'IDR_STRUCTURE_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_TRUE_IF_NOT_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED', |
- 'IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED', |
- 'IDR_INCLUDE_NOT_WHITELISTED', |
- ] |
- for output_file in (header, map_cc): |
- self._verifyWhitelistedOutput( |
- output_file, |
- whitelisted_ids, |
- non_whitelisted_ids, |
- ) |
- |
- def testWriteOnlyNew(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 |
- UNCHANGED = 10 |
- header = os.path.join(output_dir, 'resource.h') |
- |
- builder.Run(DummyOpts(), ['-o', output_dir]) |
- self.failUnless(os.path.exists(header)) |
- first_mtime = os.stat(header).st_mtime |
- |
- os.utime(header, (UNCHANGED, UNCHANGED)) |
- builder.Run(DummyOpts(), ['-o', output_dir, '--write-only-new', '0']) |
- self.failUnless(os.path.exists(header)) |
- second_mtime = os.stat(header).st_mtime |
- |
- os.utime(header, (UNCHANGED, UNCHANGED)) |
- builder.Run(DummyOpts(), ['-o', output_dir, '--write-only-new', '1']) |
- self.failUnless(os.path.exists(header)) |
- third_mtime = os.stat(header).st_mtime |
- |
- 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() |