コード例 #1
0
    def test_output_multiple_targets_one_source_overlapping(self):
        #   target1                target2
        #  source="some/file.py"  source="some/file.py"
        #   /                      /
        #  dep                   dep
        dep_address = FileDepsTest.make_build_target_address("dep/target")
        dep_target = self.mock_hydrated_target(dep_address, {
            "dep/file.py": "",
        }, ())

        target_address1 = FileDepsTest.make_build_target_address("some/target")
        hydrated_target1 = self.mock_hydrated_target(target_address1, {
            "some/file.py": "",
        }, (dep_target, ))

        target_address2 = FileDepsTest.make_build_target_address("some/target")
        hydrated_target2 = self.mock_hydrated_target(target_address2, {
            "some/file.py": "",
        }, (dep_target, ))

        transitive_targets = TransitiveHydratedTargets(
            (hydrated_target1, hydrated_target2),
            OrderedSet([hydrated_target1, hydrated_target2, dep_target]))

        self.filedeps_rule_test(
            transitive_targets,
            dedent('''\
        some/target/BUILD
        some/file.py
        dep/target/BUILD
        dep/file.py
        '''))
コード例 #2
0
ファイル: test_filedeps.py プロジェクト: zvikihouzz/pants
 def test_output_no_target(self):
   transitive_targets = TransitiveHydratedTargets((), set())
   
   self.filedeps_rule_test(
     transitive_targets,
     ""
   )
コード例 #3
0
ファイル: test_filedeps.py プロジェクト: zvikihouzz/pants
 def test_output_one_target_one_source_with_dep(self):
   dep_address = FileDepsTest.make_build_target_address("dep/target")
   dep_target = self.mock_hydrated_target(dep_address, {"dep/file.py": "", }, ())
   
   target_address = FileDepsTest.make_build_target_address("some/target")
   hydrated_target = self.mock_hydrated_target(
     target_address, 
     {"some/file.py": "", },
     (dep_target,)
   )
   
   transitive_targets = TransitiveHydratedTargets(
     (hydrated_target,),
     OrderedSet([hydrated_target, dep_target])
   )
   
   self.filedeps_rule_test(
     transitive_targets,
     dedent(
       '''\
       some/target/BUILD
       some/file.py
       dep/target/BUILD
       dep/file.py
       ''')
   )
コード例 #4
0
    def test_output_one_target_no_source(self):
        target_address = FileDepsTest.make_build_target_address("some/target")
        hydrated_target = self.mock_hydrated_target(target_address, {}, ())

        transitive_targets = TransitiveHydratedTargets((hydrated_target, ),
                                                       {hydrated_target})

        self.filedeps_rule_test(transitive_targets, "some/target/BUILD\n")
コード例 #5
0
 def test_empty_target_succeeds(self) -> None:
     # NB: Because this particular edge case should early return, we can avoid providing valid
     # mocked yield gets for most of the rule's body. Future tests added to this file will need to
     # provide valid mocks instead.
     unimplemented_mock = lambda _: NotImplemented
     target = PythonTestsAdaptor(
         address=BuildFileAddress(target_name="target", rel_path="test"))
     result: TestResult = run_rule(
         run_python_test,
         rule_args=[
             target,
             PyTest.global_instance(),
             PythonSetup.global_instance(),
             SubprocessEnvironment.global_instance(),
         ],
         mock_gets=[
             MockGet(product_type=TransitiveHydratedTargets,
                     subject_type=BuildFileAddresses,
                     mock=lambda _: TransitiveHydratedTargets(roots=(),
                                                              closure=())),
             MockGet(
                 product_type=SourceRootStrippedSources,
                 subject_type=Address,
                 mock=lambda _: SourceRootStrippedSources(snapshot=
                                                          EMPTY_SNAPSHOT),
             ),
             MockGet(
                 product_type=SourceRootStrippedSources,
                 subject_type=HydratedTarget,
                 mock=unimplemented_mock,
             ),
             MockGet(
                 product_type=Digest,
                 subject_type=DirectoriesToMerge,
                 mock=unimplemented_mock,
             ),
             MockGet(
                 product_type=InjectedInitDigest,
                 subject_type=Digest,
                 mock=unimplemented_mock,
             ),
             MockGet(
                 product_type=Pex,
                 subject_type=CreatePex,
                 mock=unimplemented_mock,
             ),
             MockGet(
                 product_type=FallibleExecuteProcessResult,
                 subject_type=ExecuteProcessRequest,
                 mock=unimplemented_mock,
             ),
         ],
     )
     self.assertEqual(result.status, Status.SUCCESS)
コード例 #6
0
    def test_output_one_target_one_source(self):
        target_address = FileDepsTest.make_build_target_address("some/target")
        hydrated_target = self.mock_hydrated_target(target_address, {
            "some/file.py": "",
        }, ())

        transitive_targets = TransitiveHydratedTargets((hydrated_target, ),
                                                       {hydrated_target})

        self.filedeps_rule_test(
            transitive_targets,
            dedent('''\
        some/target/BUILD
        some/file.py
        '''))
コード例 #7
0
    def test_outputs_multiple_targets_one_source_with_dep(self):
        #   target1                 target2
        #  source="some/file.py"  source="other/file.py"
        #   /                       /
        #  dep1                   dep2
        dep_address1 = FileDepsTest.make_build_target_address("dep1/target")
        dep_target1 = self.mock_hydrated_target(dep_address1, {
            "dep1/file.py": "",
        }, ())

        target_address1 = FileDepsTest.make_build_target_address("some/target")
        hydrated_target1 = self.mock_hydrated_target(target_address1, {
            "some/file.py": "",
        }, (dep_target1, ))

        dep_address2 = FileDepsTest.make_build_target_address("dep2/target")
        dep_target2 = self.mock_hydrated_target(dep_address2, {
            "dep2/file.py": "",
        }, ())

        target_address2 = FileDepsTest.make_build_target_address(
            "other/target")
        hydrated_target2 = self.mock_hydrated_target(target_address2, {
            "other/file.py": "",
        }, (dep_target2, ))

        transitive_targets = TransitiveHydratedTargets(
            (hydrated_target1, hydrated_target2),
            OrderedSet(
                [hydrated_target1, hydrated_target2, dep_target1,
                 dep_target2]))

        self.filedeps_rule_test(
            transitive_targets,
            dedent('''\
        some/target/BUILD
        some/file.py
        other/target/BUILD
        other/file.py
        dep1/target/BUILD
        dep1/file.py
        dep2/target/BUILD
        dep2/file.py
        '''))
コード例 #8
0
ファイル: test_filedeps.py プロジェクト: zvikihouzz/pants
 def test_output_multiple_targets_one_source(self):
   target_address1 = FileDepsTest.make_build_target_address("some/target")
   hydrated_target1 = self.mock_hydrated_target(target_address1, {"some/file.py": "", }, ())
   
   target_address2 = FileDepsTest.make_build_target_address("other/target")
   hydrated_target2 = self.mock_hydrated_target(target_address2, {"other/file.py": "", }, ())
    
   transitive_targets = TransitiveHydratedTargets(
     (hydrated_target1, hydrated_target2), 
     OrderedSet([hydrated_target1, hydrated_target2])
   )
   
   self.filedeps_rule_test(
     transitive_targets,
     dedent(
       '''\
       some/target/BUILD
       some/file.py
       other/target/BUILD
       other/file.py
       ''')
   )