|
10 | 10 | from common import maveninstallinfo |
11 | 11 | from common import pomgenmode |
12 | 12 | from config import config |
| 13 | +from crawl import artifactgenctx as artifactgenctx |
13 | 14 | from crawl import buildpom |
14 | 15 | from crawl import crawler as crawlerm |
15 | 16 | from crawl import dependency |
@@ -562,6 +563,72 @@ def test_remove_package_private_labels__skip_mode_allows_them(self): |
562 | 563 |
|
563 | 564 | self.assertEqual([l1, l2, l3, l4], labels) |
564 | 565 |
|
| 566 | + def test_register_dependencies(self): |
| 567 | + pom_template = "" |
| 568 | + library_path = "projects/libs/lib" |
| 569 | + d1 = self._get_3rdparty_dep("com:d1:1.0.0", "d1") |
| 570 | + d2 = self._get_3rdparty_dep("com:d2:1.0.0", "d2") |
| 571 | + d3 = self._get_3rdparty_dep("com:d3:1.0.0", "d3") |
| 572 | + d4 = self._get_3rdparty_dep("com:d4:1.0.0", "d4") |
| 573 | + node1 = self._build_node("art1", "projects/libs/lib/p1", |
| 574 | + library_path=library_path) |
| 575 | + node2 = self._build_node("art2", "projects/libs/lib/p2", |
| 576 | + library_path=library_path) |
| 577 | + ws = self._get_workspace() |
| 578 | + ctx = artifactgenctx.ArtifactGenerationContext( |
| 579 | + ws, pom_template, node1.artifact_def, node1.label) |
| 580 | + strategy = pomgenerationstrategy.PomGenerationStrategy(ws, pom_template) |
| 581 | + crawler = crawlerm.Crawler(ws, strategy, pom_template) |
| 582 | + crawler.library_to_nodes[library_path].append(node1) |
| 583 | + crawler.library_to_nodes[library_path].append(node2) |
| 584 | + crawler.genctxs = [ctx] |
| 585 | + crawler.target_to_dependencies = {node1.label: [d1,d2]} |
| 586 | + target_to_transitive_closure_deps = { |
| 587 | + node1.label: [d1, d2, d3], |
| 588 | + node2.label: [d4], |
| 589 | + } |
| 590 | + |
| 591 | + crawler._register_dependencies(target_to_transitive_closure_deps) |
| 592 | + |
| 593 | + self.assertEqual(set([d1, d2]), set(ctx.direct_dependencies)) |
| 594 | + self.assertEqual(set([d1, d2, d3]), set(ctx.artifact_transitive_closure)) |
| 595 | + self.assertEqual(set([d1, d2, d3, d4]), set(ctx.library_transitive_closure)) |
| 596 | + |
| 597 | + def test_register_dependencies_with_exclusions(self): |
| 598 | + pom_template = "" |
| 599 | + library_path = "projects/libs/lib" |
| 600 | + d1 = self._get_3rdparty_dep("com:d1:1.0.0", "d1") |
| 601 | + d2 = self._get_3rdparty_dep("com:d2:1.0.0", "d2") |
| 602 | + d3 = self._get_3rdparty_dep("com:d3:1.0.0", "d3") |
| 603 | + d4 = self._get_3rdparty_dep("com:d4:1.0.0", "d4") |
| 604 | + d5 = self._get_3rdparty_dep("com:d5:1.0.0", "d5") |
| 605 | + node1 = self._build_node("art1", "projects/libs/lib/p1", |
| 606 | + library_path=library_path) |
| 607 | + node2 = self._build_node("art2", "projects/libs/lib/p2", |
| 608 | + library_path=library_path) |
| 609 | + ws = self._get_workspace() |
| 610 | + ctx = artifactgenctx.ArtifactGenerationContext( |
| 611 | + ws, pom_template, node1.artifact_def, node1.label) |
| 612 | + strategy = pomgenerationstrategy.PomGenerationStrategy(ws, pom_template) |
| 613 | + crawler = crawlerm.Crawler(ws, strategy, pom_template) |
| 614 | + crawler.library_to_nodes[library_path].append(node1) |
| 615 | + crawler.library_to_nodes[library_path].append(node2) |
| 616 | + crawler.genctxs = [ctx] |
| 617 | + crawler.target_to_dependencies = {node1.label: [d1,d2]} |
| 618 | + target_to_transitive_closure_deps = { |
| 619 | + node1.label: [d1, d2, d3], |
| 620 | + node2.label: [d4], |
| 621 | + } |
| 622 | + # add one additional dependency and exclude d2 |
| 623 | + node1.artifact_def._emitted_dependencies = ["com:d5:1.0.0", "-com:d2",] |
| 624 | + |
| 625 | + crawler._register_dependencies(target_to_transitive_closure_deps) |
| 626 | + |
| 627 | + self.assertEqual(set([d1, d5]), set(ctx.direct_dependencies)) |
| 628 | + self.assertEqual(set([d1, d3]), set(ctx.artifact_transitive_closure)) |
| 629 | + self.assertEqual(set([d1, d3, d4]), set(ctx.library_transitive_closure)) |
| 630 | + |
| 631 | + |
565 | 632 | def _build_node(self, artifact_id, bazel_package, |
566 | 633 | pom_generation_mode=pomgenmode.DYNAMIC, |
567 | 634 | parent_node=None, library_path=None): |
|
0 commit comments