Ejemplo n.º 1
0
def test_runtime_package_dependencies() -> None:
    rule_runner = RuleRunner(
        rules=[
            build_runtime_package_dependencies,
            *pex_from_targets.rules(),
            *package_pex_binary.rules(),
            *python_target_type_rules(),
            QueryRule(BuiltPackageDependencies,
                      [BuildPackageDependenciesRequest]),
        ],
        target_types=[PythonSourcesGeneratorTarget, PexBinary],
    )
    rule_runner.set_options(args=[],
                            env_inherit={"PATH", "PYENV_ROOT", "HOME"})

    rule_runner.write_files({
        "src/py/main.py":
        "",
        "src/py/BUILD":
        dedent("""\
                python_sources()
                pex_binary(name='main', entry_point='main.py')
                """),
    })
    # Include an irrelevant target that cannot be built with `./pants package`.
    input_field = RuntimePackageDependenciesField(["src/py", "src/py:main"],
                                                  Address("fake"))
    result = rule_runner.request(
        BuiltPackageDependencies,
        [BuildPackageDependenciesRequest(input_field)])
    assert len(result) == 1
    built_package = result[0]
    snapshot = rule_runner.request(Snapshot, [built_package.digest])
    assert snapshot.files == ("src.py/main.pex", )
def rule_runner() -> RuleRunner:
    return RuleRunner(
        rules=[
            *shunit2_test_runner.rules(),
            *source_files.rules(),
            *pex_from_targets.rules(),
            *package_pex_binary.rules(),
            *python_target_type_rules(),
            build_runtime_package_dependencies,
            get_filtered_environment,
            QueryRule(TestResult, [Shunit2FieldSet]),
            QueryRule(TestDebugRequest, [Shunit2FieldSet]),
            QueryRule(Shunit2Runner, [Shunit2RunnerRequest]),
        ],
        target_types=[ShellLibrary, Shunit2Tests, PythonLibrary, PexBinary],
    )