| Index: grit/format/policy_templates/writers/writer_unittest_common.py
|
| ===================================================================
|
| --- grit/format/policy_templates/writers/writer_unittest_common.py (revision 0)
|
| +++ grit/format/policy_templates/writers/writer_unittest_common.py (revision 0)
|
| @@ -0,0 +1,85 @@
|
| +# Copyright (c) 2011 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.
|
| +
|
| +'''Common tools for unit-testing writers.'''
|
| +
|
| +
|
| +import os
|
| +import sys
|
| +if __name__ == '__main__':
|
| + sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '../../../..'))
|
| +
|
| +import tempfile
|
| +import unittest
|
| +import StringIO
|
| +
|
| +from grit import grd_reader
|
| +from grit import util
|
| +from grit.tool import build
|
| +
|
| +
|
| +class DummyOutput(object):
|
| + def __init__(self, type, language, file = 'hello.gif'):
|
| + self.type = type
|
| + self.language = language
|
| + self.file = file
|
| + def GetType(self):
|
| + return self.type
|
| + def GetLanguage(self):
|
| + return self.language
|
| + def GetOutputFilename(self):
|
| + return self.file
|
| +
|
| +
|
| +class WriterUnittestCommon(unittest.TestCase):
|
| + '''Common class for unittesting writers.'''
|
| +
|
| + def PrepareTest(self, policy_json):
|
| + '''Prepares and parses a grit tree along with a data structure of policies.
|
| +
|
| + Args:
|
| + policy_json: The policy data structure in JSON format.
|
| + '''
|
| + # First create a temporary file that contains the JSON policy list.
|
| + tmp_file_name = 'test.json'
|
| + tmp_dir_name = tempfile.gettempdir()
|
| + json_file_path = tmp_dir_name + '/' + tmp_file_name
|
| + f = open(json_file_path, 'w')
|
| + f.write(policy_json.strip())
|
| + f.close()
|
| + # Then assemble the grit tree.
|
| + grd_text = '''
|
| + <grit base_dir="." latest_public_release="0" current_release="1" source_lang_id="en">
|
| + <release seq="1">
|
| + <structures>
|
| + <structure name="IDD_POLICY_SOURCE_FILE" file="%s" type="policy_template_metafile" />
|
| + </structures>
|
| + </release>
|
| + </grit>''' % json_file_path
|
| + grd_string_io = StringIO.StringIO(grd_text)
|
| + # Parse the grit tree and load the policies' JSON with a gatherer.
|
| + grd = grd_reader.Parse(grd_string_io, dir=tmp_dir_name)
|
| + grd.RunGatherers(recursive=True)
|
| + # Remove the policies' JSON.
|
| + os.unlink(json_file_path)
|
| + return grd
|
| +
|
| + def GetOutput(self, grd, env_lang, env_defs, out_type, out_lang):
|
| + '''Generates an output of a writer.
|
| +
|
| + Args:
|
| + grd: The root of the grit tree.
|
| + env_lang: The environment language.
|
| + env_defs: Environment definitions.
|
| + out_type: Type of the output node for which output will be generated.
|
| + This selects the writer.
|
| + out_lang: Language of the output node for which output will be generated.
|
| +
|
| + Returns:
|
| + The string of the tamplete created by the writer.
|
| + '''
|
| + grd.SetOutputContext(env_lang, env_defs)
|
| + buf = StringIO.StringIO()
|
| + build.RcBuilder.ProcessNode(grd, DummyOutput(out_type, out_lang), buf)
|
| + return buf.getvalue()
|
|
|
| Property changes on: grit/format/policy_templates/writers/writer_unittest_common.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|