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