def test_source_root_tree_node(self): root = SourceRootTree.Node("ROOT") self.assertIsNone(root.get("child1")) self.assertIsNone(root.get("child2")) child = root.get_or_add("child1") self.assertIsNotNone(child) self.assertEquals(child, root.get("child1")) self.assertIsNone(root.get("child2")) grandchild = child.get_or_add("grandchild") self.assertIsNone(root.get("grandchild")) self.assertEquals(grandchild, child.get("grandchild")) # Retrieve the same object on re-insertion self.assertEquals(grandchild, child.get_or_add("grandchild"))
def test_get_root_siblings(self): tree = SourceRootTree() self._add_siblings1(tree, "") self.assertEquals([], tree.get_root_siblings("foo/bar/baz")) self.assertEquals([], tree.get_root_siblings("src")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/resources")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java/com/pants/foo")) self.assertEquals( ["src/java", "src/resources"], tree.get_root_siblings("src/resources/com/pants/foo")) self.assertEquals([], tree.get_root_siblings("src/foo/bar/baz")) self.assertEquals(["tests/java", "tests/resources"], tree.get_root_siblings("tests/java/com/pants/foo")) self.assertEquals( ["tests/java", "tests/resources"], tree.get_root_siblings("tests/resources/com/pants/foo")) self.assertEquals([], tree.get_root_siblings("tests/foo/bar/baz")) self._add_siblings1(tree, "examples") self.assertEquals([], tree.get_root_siblings("foo/bar/baz")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java/com/pants/foo")) self.assertEquals( ["tests/java", "tests/resources"], tree.get_root_siblings("tests/resources/com/pants/foo")) self.assertEquals( ["examples/src/java", "examples/src/resources"], tree.get_root_siblings("examples/src/java/com/pants/foo")) self.assertEquals( ["examples/tests/java", "examples/tests/resources"], tree.get_root_siblings("examples/tests/resources/com/pants/foo"))
def test_source_root_tree(self): tree = SourceRootTree() self.assertEquals((None, None), tree.get_root_and_types("")) self.assertEquals((None, None), tree.get_root_and_types("tests/language")) self.assertEquals((None, None), tree.get_root_and_types("tests/language/foo")) self.assertEquals((None, None), tree.get_root_and_types("src/language")) self.assertEquals((None, None), tree.get_root_and_types("src")) tree.add_root("tests/language", set([NotTestTarget, TestTarget])) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( ("tests/language", set([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language/foo"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( (None, None), tree.get_root_and_types("src"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( (None, None), tree.get_root_and_types("src/bar"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( (None, None), tree.get_root_and_types("s"), msg="Failed for tree: {dump}".format(dump=tree._dump())) tree.add_root("src/language", set([NotTestTarget])) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language/foo"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( ("src/language", OrderedSet([NotTestTarget])), tree.get_root_and_types("src/language"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( ("src/language", OrderedSet([NotTestTarget])), tree.get_root_and_types("src/language/bar"), msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( (None, None), tree.get_root_and_types("src"), msg="Failed for tree: {dump}".format(dump=tree._dump())) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): tree.add_root("tests/language", set([NotTestTarget])) with self.assertRaises(SourceRootTree.NestedSourceRootError): tree.add_root("tests", set([NotTestTarget]))
def test_mutable(self): tree = SourceRootTree() tree.add_root("mutable/foo", set([NotTestTarget, TestTarget]), mutable=True) tree.add_root("immutable/foo", set([NotTestTarget, TestTarget]), mutable=False) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): # Can't add an immutable root to a mutable root tree.add_root("mutable/foo", set([AnotherTarget])) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): # Can't add an mutable root to an immutable root tree.add_root("immutable/foo", set([AnotherTarget]), mutable=True) # But can add a mutable root to a mutable root tree.add_root("mutable/foo", set([AnotherTarget]), mutable=True) self.assertEquals( set([AnotherTarget, NotTestTarget, TestTarget]), set(tree.get_root_and_types("mutable/foo")[1]), msg="Failed for tree: {dump}".format(dump=tree._dump()))
def test_get_root_siblings(self): tree = SourceRootTree() self._add_siblings1(tree, "") self.assertEquals([], tree.get_root_siblings("foo/bar/baz")) self.assertEquals([], tree.get_root_siblings("src")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/resources")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java/org/pantsbuild/foo")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/resources/org/pantsbuild/foo")) self.assertEquals([], tree.get_root_siblings("src/foo/bar/baz")) self.assertEquals(["tests/java", "tests/resources"], tree.get_root_siblings("tests/java/org/pantsbuild/foo")) self.assertEquals( ["tests/java", "tests/resources"], tree.get_root_siblings("tests/resources/org/pantsbuild/foo") ) self.assertEquals([], tree.get_root_siblings("tests/foo/bar/baz")) self._add_siblings1(tree, "examples") self.assertEquals([], tree.get_root_siblings("foo/bar/baz")) self.assertEquals(["src/java", "src/resources"], tree.get_root_siblings("src/java/org/pantsbuild/foo")) self.assertEquals( ["tests/java", "tests/resources"], tree.get_root_siblings("tests/resources/org/pantsbuild/foo") ) self.assertEquals( ["examples/src/java", "examples/src/resources"], tree.get_root_siblings("examples/src/java/org/pantsbuild/foo"), ) self.assertEquals( ["examples/tests/java", "examples/tests/resources"], tree.get_root_siblings("examples/tests/resources/org/pantsbuild/foo"), )
def test_mutable(self): tree = SourceRootTree() tree.add_root("mutable/foo", set([NotTestTarget, TestTarget]), mutable=True) tree.add_root("immutable/foo", set([NotTestTarget, TestTarget]), mutable=False) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): # Can't add an immutable root to a mutable root tree.add_root("mutable/foo", set([AnotherTarget])) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): # Can't add an mutable root to an immutable root tree.add_root("immutable/foo", set([AnotherTarget]), mutable=True) # But can add a mutable root to a mutable root tree.add_root("mutable/foo", set([AnotherTarget]), mutable=True) self.assertEquals( set([AnotherTarget, NotTestTarget, TestTarget]), set(tree.get_root_and_types("mutable/foo")[1]), msg="Failed for tree: {dump}".format(dump=tree._dump()), )
def test_source_root_tree(self): tree = SourceRootTree() self.assertEquals((None, None), tree.get_root_and_types("")) self.assertEquals((None, None), tree.get_root_and_types("tests/language")) self.assertEquals((None, None), tree.get_root_and_types("tests/language/foo")) self.assertEquals((None, None), tree.get_root_and_types("src/language")) self.assertEquals((None, None), tree.get_root_and_types("src")) tree.add_root("tests/language", set([NotTestTarget, TestTarget])) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language"), msg="Failed for tree: {dump}".format(dump=tree._dump()), ) root, types = tree.get_root_and_types("tests/language/foo") self.assertEquals("tests/language", root, msg="Failed for tree: {dump}".format(dump=tree._dump())) self.assertEquals( set(types), set([NotTestTarget, TestTarget]), msg="Failed for tree: {dump}".format(dump=tree._dump()) ) self.assertEquals( (None, None), tree.get_root_and_types("src"), msg="Failed for tree: {dump}".format(dump=tree._dump()) ) self.assertEquals( (None, None), tree.get_root_and_types("src/bar"), msg="Failed for tree: {dump}".format(dump=tree._dump()) ) self.assertEquals( (None, None), tree.get_root_and_types("s"), msg="Failed for tree: {dump}".format(dump=tree._dump()) ) tree.add_root("src/language", set([NotTestTarget])) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language"), msg="Failed for tree: {dump}".format(dump=tree._dump()), ) self.assertEquals( ("tests/language", OrderedSet([NotTestTarget, TestTarget])), tree.get_root_and_types("tests/language/foo"), msg="Failed for tree: {dump}".format(dump=tree._dump()), ) self.assertEquals( ("src/language", OrderedSet([NotTestTarget])), tree.get_root_and_types("src/language"), msg="Failed for tree: {dump}".format(dump=tree._dump()), ) self.assertEquals( ("src/language", OrderedSet([NotTestTarget])), tree.get_root_and_types("src/language/bar"), msg="Failed for tree: {dump}".format(dump=tree._dump()), ) self.assertEquals( (None, None), tree.get_root_and_types("src"), msg="Failed for tree: {dump}".format(dump=tree._dump()) ) with self.assertRaises(SourceRootTree.DuplicateSourceRootError): tree.add_root("tests/language", set([NotTestTarget])) with self.assertRaises(SourceRootTree.NestedSourceRootError): tree.add_root("tests", set([NotTestTarget]))