| Index: grit/tool/build_unittest.py
|
| ===================================================================
|
| --- grit/tool/build_unittest.py (revision 202)
|
| +++ grit/tool/build_unittest.py (working copy)
|
| @@ -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()
|
|
|