10fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org#!/usr/bin/env python
20fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org# Copyright (c) 2013 The Chromium Authors. All rights reserved.
30fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org# Use of this source code is governed by a BSD-style license that can be
40fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org# found in the LICENSE file.
50fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
60fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org'''Unit tests for include.IncludeNode'''
70fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
80fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgimport os
90fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgimport sys
100fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgif __name__ == '__main__':
110fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org  sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
120fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
130fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgimport os
140fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgimport StringIO
150fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgimport unittest
160fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
170fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgfrom grit.node import misc
180fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgfrom grit.node import include
190fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgfrom grit.node import empty
200fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgfrom grit import grd_reader
210fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgfrom grit import util
220fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
230fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
240fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgclass IncludeNodeUnittest(unittest.TestCase):
250fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org  def testGetPath(self):
260fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root = misc.GritNode()
270fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.StartParsing(u'grit', None)
280fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'latest_public_release', u'0')
290fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'current_release', u'1')
300fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'base_dir', ur'..\resource')
310fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release = misc.ReleaseNode()
320fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.StartParsing(u'release', root)
330fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.HandleAttribute(u'seq', u'1')
340fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.AddChild(release)
350fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes = empty.IncludesNode()
360fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes.StartParsing(u'includes', release)
370fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.AddChild(includes)
380fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node = include.IncludeNode()
390fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node.StartParsing(u'include', includes)
400fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node.HandleAttribute(u'file', ur'flugel\kugel.pdf')
410fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes.AddChild(include_node)
420fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.EndParsing()
430fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
440fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    self.assertEqual(root.ToRealPath(include_node.GetInputPath()),
450fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org                     util.normpath(
460fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org                       os.path.join(ur'../resource', ur'flugel/kugel.pdf')))
470fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
480fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org  def testGetPathNoBasedir(self):
490fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root = misc.GritNode()
500fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.StartParsing(u'grit', None)
510fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'latest_public_release', u'0')
520fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'current_release', u'1')
530fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.HandleAttribute(u'base_dir', ur'..\resource')
540fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release = misc.ReleaseNode()
550fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.StartParsing(u'release', root)
560fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.HandleAttribute(u'seq', u'1')
570fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.AddChild(release)
580fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes = empty.IncludesNode()
590fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes.StartParsing(u'includes', release)
600fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    release.AddChild(includes)
610fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node = include.IncludeNode()
620fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node.StartParsing(u'include', includes)
630fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node.HandleAttribute(u'file', ur'flugel\kugel.pdf')
640fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    include_node.HandleAttribute(u'use_base_dir', u'false')
650fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    includes.AddChild(include_node)
660fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    root.EndParsing()
670fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
680fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org    self.assertEqual(root.ToRealPath(include_node.GetInputPath()),
690fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org                     util.normpath(
700fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org                       os.path.join(ur'../', ur'flugel/kugel.pdf')))
710fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
720fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org
730fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.orgif __name__ == '__main__':
740fae8b05cb6f7d1995040d75313205d86945871ejoi@chromium.org  unittest.main()
75