示例#1
0
def test_coursier_resolve_noop_does_not_touch_lockfile(
        rule_runner: RuleRunner) -> None:
    expected_lockfile = CoursierResolvedLockfile(entries=(CoursierLockfileEntry(
        coord=MavenCoord(coord="org.hamcrest:hamcrest-core:1.3"),
        file_name="hamcrest-core-1.3.jar",
        direct_dependencies=MavenCoordinates([]),
        dependencies=MavenCoordinates([]),
        file_digest=FileDigest(
            fingerprint=
            "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
            serialized_bytes_length=45024,
        ),
    ), ))
    rule_runner.write_files({
        "BUILD":
        dedent("""\
                coursier_lockfile(
                    name = 'example-lockfile',
                    maven_requirements = [
                        'org.hamcrest:hamcrest-core:1.3',
                    ],
                    sources = [
                        "coursier_resolve.lockfile",
                    ],
                )
                """),
        "coursier_resolve.lockfile":
        expected_lockfile.to_json().decode("utf-8"),
    })
    result = rule_runner.run_goal_rule(CoursierResolve, args=["::"])
    assert result.exit_code == 0
    assert result.stderr == ""
示例#2
0
def test_coursier_resolve_updates_bogus_lockfile(
        rule_runner: RuleRunner) -> None:
    rule_runner.write_files({
        "BUILD":
        dedent("""\
                coursier_lockfile(
                    name = 'example-lockfile',
                    maven_requirements = [
                        'org.hamcrest:hamcrest-core:1.3',
                    ],
                )
                """),
        "coursier_resolve.lockfile":
        "]bad json[",
    })
    result = rule_runner.run_goal_rule(CoursierResolve, args=["::"])
    assert result.exit_code == 0
    assert result.stderr == "Updated lockfile at: coursier_resolve.lockfile\n"
    expected_lockfile = CoursierResolvedLockfile(entries=(CoursierLockfileEntry(
        coord=MavenCoord(coord="org.hamcrest:hamcrest-core:1.3"),
        file_name="hamcrest-core-1.3.jar",
        direct_dependencies=MavenCoordinates([]),
        dependencies=MavenCoordinates([]),
        file_digest=FileDigest(
            fingerprint=
            "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
            serialized_bytes_length=45024,
        ),
    ), ))
    assert (Path(rule_runner.build_root,
                 "coursier_resolve.lockfile").read_bytes() ==
            expected_lockfile.to_json())
示例#3
0
def test_compile_with_maven_deps(rule_runner: RuleRunner) -> None:
    resolved_joda_lockfile = CoursierResolvedLockfile(
        entries=(CoursierLockfileEntry(
            coord=Coordinate(
                group="joda-time", artifact="joda-time", version="2.10.10"),
            file_name="joda-time-2.10.10.jar",
            direct_dependencies=Coordinates([]),
            dependencies=Coordinates([]),
            file_digest=FileDigest(
                fingerprint=
                "dd8e7c92185a678d1b7b933f31209b6203c8ffa91e9880475a1be0346b9617e3",
                serialized_bytes_length=644419,
            ),
        ), ))
    rule_runner.write_files({
        "BUILD":
        dedent("""\
                jvm_artifact(
                    name = "joda-time_joda-time",
                    group = "joda-time",
                    artifact = "joda-time",
                    version = "2.10.10",
                )

                java_sources(
                    name = 'main',

                    dependencies = [
                        ':joda-time_joda-time',
                    ]
                )
                """),
        "coursier_resolve.lockfile":
        resolved_joda_lockfile.to_json().decode("utf-8"),
        "Example.java":
        dedent("""
                package org.pantsbuild.example;

                import org.joda.time.DateTime;

                public class Example {
                    public static void main(String[] args) {
                        DateTime dt = new DateTime();
                        System.out.println(dt.getYear());
                    }
                }
                """),
    })
    request = CompileJavaSourceRequest(
        component=expect_single_expanded_coarsened_target(
            rule_runner, Address(spec_path="", target_name="main")),
        resolve=make_resolve(rule_runner),
    )
    compiled_classfiles = rule_runner.request(ClasspathEntry, [request])
    classpath = rule_runner.request(RenderedClasspath,
                                    [compiled_classfiles.digest])
    assert classpath.content == {
        ".Example.java.main.jar": {"org/pantsbuild/example/Example.class"}
    }
示例#4
0
def test_compile_with_maven_deps(rule_runner: RuleRunner) -> None:
    resolved_joda_lockfile = CoursierResolvedLockfile(
        entries=(CoursierLockfileEntry(
            coord=Coordinate(
                group="joda-time", artifact="joda-time", version="2.10.10"),
            file_name="joda-time-2.10.10.jar",
            direct_dependencies=Coordinates([]),
            dependencies=Coordinates([]),
            file_digest=FileDigest(
                fingerprint=
                "dd8e7c92185a678d1b7b933f31209b6203c8ffa91e9880475a1be0346b9617e3",
                serialized_bytes_length=644419,
            ),
        ), ))
    rule_runner.write_files({
        "BUILD":
        dedent("""\
                jvm_artifact(
                    name = "joda-time_joda-time",
                    group = "joda-time",
                    artifact = "joda-time",
                    version = "2.10.10",
                )
                scala_sources(
                    name = 'main',
                    dependencies = [":joda-time_joda-time"],
                )
                """),
        "coursier_resolve.lockfile":
        resolved_joda_lockfile.to_json().decode("utf-8"),
        "Example.scala":
        dedent("""
                package org.pantsbuild.example

                import org.joda.time.DateTime

                object Main {
                    def main(args: Array[String]): Unit = {
                        val dt = new DateTime()
                        println(dt.getYear)
                    }
                }
                """),
    })
    request = CompileScalaSourceRequest(
        component=expect_single_expanded_coarsened_target(
            rule_runner, Address(spec_path="", target_name="main")),
        resolve=make_resolve(rule_runner),
    )
    compiled_classfiles = rule_runner.request(ClasspathEntry, [request])
    classpath = rule_runner.request(RenderedClasspath,
                                    [compiled_classfiles.digest])
    assert classpath.content == {
        ".Example.scala.main.jar": {
            "META-INF/MANIFEST.MF",
            "org/pantsbuild/example/Main$.class",
            "org/pantsbuild/example/Main.class",
        }
    }
示例#5
0
def test_coursier_resolve_updates_bogus_lockfile(
        rule_runner: RuleRunner) -> None:
    rule_runner.write_files({
        "BUILD":
        dedent("""\
                java_sources(
                    name = 'here_to_provide_dependencies',
                    dependencies = [
                        ':org.hamcrest_hamcrest-core',
                    ],
                    sources = ["*.txt"],
                )

                jvm_artifact(
                    name = 'org.hamcrest_hamcrest-core',
                    group = 'org.hamcrest',
                    artifact = 'hamcrest-core',
                    version = "1.3",
                )
                coursier_lockfile(
                    name = 'example-lockfile',
                )
                """),
        "coursier_resolve.lockfile":
        "]bad json[",
    })
    result = rule_runner.run_goal_rule(CoursierResolve,
                                       args=ARGS,
                                       env_inherit=PYTHON_BOOTSTRAP_ENV)
    assert result.exit_code == 0
    assert result.stderr == "Updated lockfile at: coursier_resolve.lockfile\n"
    expected_lockfile = CoursierResolvedLockfile(entries=(CoursierLockfileEntry(
        coord=HAMCREST_COORD,
        file_name="hamcrest-core-1.3.jar",
        direct_dependencies=Coordinates([]),
        dependencies=Coordinates([]),
        file_digest=FileDigest(
            fingerprint=
            "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
            serialized_bytes_length=45024,
        ),
    ), ))
    assert (Path(rule_runner.build_root,
                 "coursier_resolve.lockfile").read_bytes() ==
            expected_lockfile.to_json())
示例#6
0
def test_vintage_and_jupiter_simple_success(rule_runner: RuleRunner) -> None:
    combined_lockfile = CoursierResolvedLockfile(
        entries=(*JUNIT4_RESOLVED_LOCKFILE.entries,
                 *JUNIT5_RESOLVED_LOCKFILE.entries))
    rule_runner.write_files({
        "coursier_resolve.lockfile":
        combined_lockfile.to_json().decode("utf-8"),
        "BUILD":
        dedent("""\
                jvm_artifact(
                  name='junit_junit',
                  group='junit',
                  artifact='junit',
                  version='4.13.2',
                )
                jvm_artifact(
                  name='org.junit.jupiter_junit-jupiter-api',
                  group='org.junit.jupiter',
                  artifact='junit-jupiter-api',
                  version='5.7.2',
                )
                coursier_lockfile(
                    name = 'lockfile',
                    requirements = [
                        ':junit_junit',
                        ':org.junit.jupiter_junit-jupiter-api',
                    ],
                    sources = [
                        "coursier_resolve.lockfile",
                    ],
                )

                junit_tests(
                    name='example-test',
                    dependencies= [':lockfile'],
                )
                """),
        "JupiterTest.java":
        dedent("""
                package org.pantsbuild.example;

                import static org.junit.jupiter.api.Assertions.assertEquals;
                import org.junit.jupiter.api.Test;

                class JupiterTest {
                    @Test
                    void testHello(){
                      assertEquals("Hello!", "Hello!");
                   }
                }
                """),
        "VintageTest.java":
        dedent("""
                package org.pantsbuild.example;

                import junit.framework.TestCase;

                public class VintageTest extends TestCase {
                   public void testGoodbye(){
                      assertTrue("Hello!" == "Hello!");
                   }
                }
                """),
    })

    test_result = run_junit_test(rule_runner, "example-test",
                                 "JupiterTest.java")

    assert test_result.exit_code == 0
    # TODO: Once support for parsing junit.xml is implemented, use that to determine status so we can remove the
    #  hack to use ASCII test output in the `run_junit_test` rule.
    assert re.search(r"Finished:\s+testHello", test_result.stdout) is not None
    assert re.search(r"Finished:\s+testGoodbye",
                     test_result.stdout) is not None
    assert re.search(r"2 tests successful", test_result.stdout) is not None
    assert re.search(r"2 tests found", test_result.stdout) is not None