blob: cef8c092789438da05dbcd603215f0128259ca52 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2013 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 include.IncludeNode'''
import os
import sys
if __name__ == '__main__':
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
import os
import unittest
import zlib
from grit.node import misc
from grit.node import include
from grit.node import empty
from grit import grd_reader
from grit import util
class IncludeNodeUnittest(unittest.TestCase):
def testGetPath(self):
root = misc.GritNode()
root.StartParsing(u'grit', None)
root.HandleAttribute(u'latest_public_release', u'0')
root.HandleAttribute(u'current_release', u'1')
root.HandleAttribute(u'base_dir', ur'..\resource')
release = misc.ReleaseNode()
release.StartParsing(u'release', root)
release.HandleAttribute(u'seq', u'1')
root.AddChild(release)
includes = empty.IncludesNode()
includes.StartParsing(u'includes', release)
release.AddChild(includes)
include_node = include.IncludeNode()
include_node.StartParsing(u'include', includes)
include_node.HandleAttribute(u'file', ur'flugel\kugel.pdf')
includes.AddChild(include_node)
root.EndParsing()
self.assertEqual(root.ToRealPath(include_node.GetInputPath()),
util.normpath(
os.path.join(ur'../resource', ur'flugel/kugel.pdf')))
def testGetPathNoBasedir(self):
root = misc.GritNode()
root.StartParsing(u'grit', None)
root.HandleAttribute(u'latest_public_release', u'0')
root.HandleAttribute(u'current_release', u'1')
root.HandleAttribute(u'base_dir', ur'..\resource')
release = misc.ReleaseNode()
release.StartParsing(u'release', root)
release.HandleAttribute(u'seq', u'1')
root.AddChild(release)
includes = empty.IncludesNode()
includes.StartParsing(u'includes', release)
release.AddChild(includes)
include_node = include.IncludeNode()
include_node.StartParsing(u'include', includes)
include_node.HandleAttribute(u'file', ur'flugel\kugel.pdf')
include_node.HandleAttribute(u'use_base_dir', u'false')
includes.AddChild(include_node)
root.EndParsing()
self.assertEqual(root.ToRealPath(include_node.GetInputPath()),
util.normpath(
os.path.join(ur'../', ur'flugel/kugel.pdf')))
def testCompressGzip(self):
root = util.ParseGrdForUnittest('''
<includes>
<include name="TEST_TXT" file="test_text.txt"
compress="gzip" type="BINDATA"/>
</includes>''', base_dir = util.PathFromRoot('grit/testdata'))
inc, = root.GetChildrenOfType(include.IncludeNode)
compressed = inc.GetDataPackValue(lang='en', encoding=1)
decompressed_data = zlib.decompress(compressed, 16 + zlib.MAX_WBITS)
def testSkipInResourceMap(self):
root = util.ParseGrdForUnittest('''
<includes>
<include name="TEST1_TXT" file="test1_text.txt" type="BINDATA"/>
<include name="TEST2_TXT" file="test1_text.txt" type="BINDATA"
skip_in_resource_map="true"/>
<include name="TEST3_TXT" file="test1_text.txt" type="BINDATA"
skip_in_resource_map="false"/>
</includes>''', base_dir = util.PathFromRoot('grit/testdata'))
inc = root.GetChildrenOfType(include.IncludeNode)
self.assertTrue(inc[0].IsResourceMapSource())
self.assertFalse(inc[1].IsResourceMapSource())
self.assertTrue(inc[2].IsResourceMapSource())
def testAcceptsPreprocess(self):
root = util.ParseGrdForUnittest('''
<includes>
<include name="PREPROCESS_TEST" file="preprocess_test.html"
preprocess="true" type="chrome_html"/>
</includes>''', base_dir = util.PathFromRoot('grit/testdata'))
inc, = root.GetChildrenOfType(include.IncludeNode)
result = inc.GetDataPackValue(lang='en', encoding=1)
self.failUnless(result.find('should be kept') != -1)
self.failUnless(result.find('in the middle...') != -1)
self.failUnless(result.find('should be removed') == -1)
if __name__ == '__main__':
unittest.main()