123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #!/usr/bin/env python
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS-IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- """Unit test for source."""
- __author__ = 'nnaze@google.com (Nathan Naze)'
- import unittest
- import source
- class SourceTestCase(unittest.TestCase):
- """Unit test for source. Tests the parser on a known source input."""
- def testSourceScan(self):
- test_source = source.Source(_TEST_SOURCE)
- self.assertEqual(set(['foo', 'foo.test']),
- test_source.provides)
- self.assertEqual(set(['goog.dom', 'goog.events.EventType']),
- test_source.requires)
- self.assertFalse(test_source.is_goog_module)
- def testSourceScanBase(self):
- test_source = source.Source(_TEST_BASE_SOURCE)
- self.assertEqual(set(['goog']),
- test_source.provides)
- self.assertEqual(test_source.requires, set())
- self.assertFalse(test_source.is_goog_module)
- def testSourceScanBadBase(self):
- def MakeSource():
- source.Source(_TEST_BAD_BASE_SOURCE)
- self.assertRaises(Exception, MakeSource)
- def testSourceScanGoogModule(self):
- test_source = source.Source(_TEST_MODULE_SOURCE)
- self.assertEqual(set(['foo']),
- test_source.provides)
- self.assertEqual(set(['bar']),
- test_source.requires)
- self.assertTrue(test_source.is_goog_module)
- def testSourceScanModuleAlias(self):
- test_source = source.Source(_TEST_MODULE_ALIAS_SOURCE)
- self.assertEqual(set(['goog.dom', 'goog.events']), test_source.requires)
- self.assertTrue(test_source.is_goog_module)
- def testStripComments(self):
- self.assertEquals(
- '\nvar foo = function() {}',
- source.Source._StripComments((
- '/* This is\n'
- ' a comment split\n'
- ' over multiple lines\n'
- '*/\n'
- 'var foo = function() {}')))
- def testGoogStatementsInComments(self):
- test_source = source.Source(_TEST_COMMENT_SOURCE)
- self.assertEqual(set(['foo']),
- test_source.provides)
- self.assertEqual(set(['goog.events.EventType']),
- test_source.requires)
- self.assertFalse(test_source.is_goog_module)
- def testHasProvideGoog(self):
- self.assertTrue(source.Source._HasProvideGoogFlag(_TEST_BASE_SOURCE))
- self.assertTrue(source.Source._HasProvideGoogFlag(_TEST_BAD_BASE_SOURCE))
- self.assertFalse(source.Source._HasProvideGoogFlag(_TEST_COMMENT_SOURCE))
- _TEST_MODULE_ALIAS_SOURCE = """
- goog.module('foo');
- const {createDom: domCreator} = goog.require('goog.dom');
- const {listen} = goog.require('goog.events');
- """
- _TEST_MODULE_SOURCE = """
- goog.module('foo');
- var b = goog.require('bar');
- """
- _TEST_SOURCE = """// Fake copyright notice
- /** Very important comment. */
- goog.provide('foo');
- goog.provide('foo.test');
- goog.require('goog.dom');
- goog.require('goog.events.EventType');
- function foo() {
- // Set bar to seventeen to increase performance.
- this.bar = 17;
- }
- """
- _TEST_COMMENT_SOURCE = """// Fake copyright notice
- goog.provide('foo');
- /*
- goog.provide('foo.test');
- */
- /*
- goog.require('goog.dom');
- */
- // goog.require('goog.dom');
- goog.require('goog.events.EventType');
- function bar() {
- this.baz = 55;
- }
- """
- _TEST_BASE_SOURCE = """
- /**
- * @fileoverview The base file.
- * @provideGoog
- */
- var goog = goog || {};
- """
- _TEST_BAD_BASE_SOURCE = """
- /**
- * @fileoverview The base file.
- * @provideGoog
- */
- goog.provide('goog');
- """
- if __name__ == '__main__':
- unittest.main()
|