1eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org#!/usr/bin/env python
2eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org# Use of this source code is governed by a BSD-style license that can be
4eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org# found in the LICENSE file.
5eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
6eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org"""Unit tests for the 'grit buildinfo' tool.
7eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org"""
8eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
9eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgimport os
10eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgimport StringIO
11eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgimport sys
12eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgimport unittest
13eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
14eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org# This is needed to find some of the imports below.
15eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgif __name__ == '__main__':
1698b76c0017dbdc61506f146d197d594b1ce07db7joi@chromium.org  sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
17eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
18eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org# pylint: disable-msg=C6204
19eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgfrom grit.tool import buildinfo
20eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
21eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
22eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgclass BuildInfoUnittest(unittest.TestCase):
23eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org  def setUp(self):
24eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.old_cwd = os.getcwd()
25eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    # Change CWD to make tests work independently of callers CWD.
26eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    os.chdir(os.path.dirname(__file__))
27eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    os.chdir('..')
28eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.buf = StringIO.StringIO()
29eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.old_stdout = sys.stdout
30eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    sys.stdout = self.buf
31eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
32eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org  def tearDown(self):
33eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    sys.stdout = self.old_stdout
34eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    os.chdir(self.old_cwd)
35eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
36eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org  def testBuildOutput(self):
37eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    """Find all of the inputs and outputs for a GRD file."""
38eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    info_object = buildinfo.DetermineBuildInfo()
39eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
40eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    class DummyOpts(object):
41eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org      def __init__(self):
42eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.input = '../grit/testdata/buildinfo.grd'
43eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.print_header = False
44eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.verbose = False
45eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.extra_verbose = False
46eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    info_object.Run(DummyOpts(), [])
47eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    output = self.buf.getvalue().replace('\\', '/')
48eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'rc_all|sv_sidebar_loading.html'))
49eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'rc_header|resource.h'))
50eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'rc_all|en_generated_resources.rc'))
51eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'rc_all|sv_generated_resources.rc'))
52eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/substitute.xmb'))
53eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/pr.bmp'))
54eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/pr2.bmp'))
55eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(
56eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'input|../grit/testdata/sidebar_loading.html'))
57eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/transl.rc'))
58eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/transl1.rc'))
59eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
60eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org  def testBuildOutputWithDir(self):
61eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    """Find all the inputs and outputs for a GRD file with an output dir."""
62eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    info_object = buildinfo.DetermineBuildInfo()
63eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
64eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    class DummyOpts(object):
65eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org      def __init__(self):
66eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.input = '../grit/testdata/buildinfo.grd'
67eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.print_header = False
68eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.verbose = False
69eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        self.extra_verbose = False
70eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    info_object.Run(DummyOpts(), ['-o', '../grit/testdata'])
71eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    output = self.buf.getvalue().replace('\\', '/')
72eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(
73eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'rc_all|../grit/testdata/sv_sidebar_loading.html'))
74eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'rc_header|../grit/testdata/resource.h'))
75eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(
76eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'rc_all|../grit/testdata/en_generated_resources.rc'))
77eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(
78eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'rc_all|../grit/testdata/sv_generated_resources.rc'))
79eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(output.count(r'input|../grit/testdata/substitute.xmb'))
80eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnlessEqual(0,
81eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'rc_all|../grit/testdata/sv_welcome_toast.html'))
82eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org    self.failUnless(
83eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org        output.count(r'rc_all|../grit/testdata/en_welcome_toast.html'))
84eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
85eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org
86eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.orgif __name__ == '__main__':
87eda8d69f7c49419eef6e96a1cd42af26a864d794joi@chromium.org  unittest.main()
88