diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/bin/build/depstree_test.py')
-rwxr-xr-x | contexts/data/lib/closure-library/closure/bin/build/depstree_test.py | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/contexts/data/lib/closure-library/closure/bin/build/depstree_test.py b/contexts/data/lib/closure-library/closure/bin/build/depstree_test.py deleted file mode 100755 index eb4c999..0000000 --- a/contexts/data/lib/closure-library/closure/bin/build/depstree_test.py +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 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 depstree.""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -import unittest - -import depstree - - -def _GetProvides(sources): - """Get all namespaces provided by a collection of sources.""" - - provides = set() - for source in sources: - provides.update(source.provides) - return provides - - -class MockSource(object): - """Mock Source file.""" - - def __init__(self, provides, requires): - self.provides = set(provides) - self.requires = set(requires) - - def __repr__(self): - return 'MockSource %s' % self.provides - - -class DepsTreeTestCase(unittest.TestCase): - """Unit test for DepsTree. Tests several common situations and errors.""" - - def AssertValidDependencies(self, deps_list): - """Validates a dependency list. - - Asserts that a dependency list is valid: For every source in the list, - ensure that every require is provided by a source earlier in the list. - - Args: - deps_list: A list of sources that should be in dependency order. - """ - - for i in range(len(deps_list)): - source = deps_list[i] - previous_provides = _GetProvides(deps_list[:i]) - for require in source.requires: - self.assertTrue( - require in previous_provides, - 'Namespace "%s" not provided before required by %s' % ( - require, source)) - - def testSimpleDepsTree(self): - a = MockSource(['A'], ['B', 'C']) - b = MockSource(['B'], []) - c = MockSource(['C'], ['D']) - d = MockSource(['D'], ['E']) - e = MockSource(['E'], []) - - tree = depstree.DepsTree([a, b, c, d, e]) - - self.AssertValidDependencies(tree.GetDependencies('A')) - self.AssertValidDependencies(tree.GetDependencies('B')) - self.AssertValidDependencies(tree.GetDependencies('C')) - self.AssertValidDependencies(tree.GetDependencies('D')) - self.AssertValidDependencies(tree.GetDependencies('E')) - - def testCircularDependency(self): - # Circular deps - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], ['A']) - - tree = depstree.DepsTree([a, b, c]) - - self.assertRaises(depstree.CircularDependencyError, - tree.GetDependencies, 'A') - - def testRequiresUndefinedNamespace(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], ['D']) # But there is no D. - - def MakeDepsTree(): - return depstree.DepsTree([a, b, c]) - - self.assertRaises(depstree.NamespaceNotFoundError, MakeDepsTree) - - def testDepsForMissingNamespace(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], []) - - tree = depstree.DepsTree([a, b]) - - # There is no C. - self.assertRaises(depstree.NamespaceNotFoundError, - tree.GetDependencies, 'C') - - def testMultipleRequires(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], []) - d = MockSource(['D'], ['B']) - - tree = depstree.DepsTree([a, b, c, d]) - self.AssertValidDependencies(tree.GetDependencies(['D', 'A'])) - - -if __name__ == '__main__': - unittest.main() |