diff options
author | 2017-05-04 18:45:18 +0200 | |
---|---|---|
committer | 2017-05-04 23:05:41 +0200 | |
commit | d953ca8b87a46decbce385cebb446ae0dd390881 (patch) | |
tree | 089b6b92b734314fc802d73a92a51eb631c35564 /src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java | |
parent | 3ad44e3084f17370f84ee479f8f6386ffdaf28f1 (diff) |
Clean VanillaJavaBuilder output directories
to ensure outputs from any previous local builds are discarded.
To cherry-pick for #2692.
Fixes #2941
PiperOrigin-RevId: 155089391
Diffstat (limited to 'src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java')
-rw-r--r-- | src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java b/src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java index 44e0ed753a..815ac7476d 100644 --- a/src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java +++ b/src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java @@ -183,4 +183,55 @@ public class VanillaJavaBuilderTest { assertThat(result.ok()).isFalse(); assertThat(Files.exists(output)).isFalse(); } + + @Test + public void cleanOutputDirectories() throws Exception { + Path source = temporaryFolder.newFile("Test.java").toPath(); + Path output = temporaryFolder.newFile("out.jar").toPath(); + Files.write( + source, + ImmutableList.of( + "class A {", // + "}"), + UTF_8); + Path sourceJar = temporaryFolder.newFile("src.srcjar").toPath(); + try (OutputStream os = Files.newOutputStream(sourceJar); + JarOutputStream jos = new JarOutputStream(os)) { + jos.putNextEntry(new JarEntry("B.java")); + jos.write("class B {}".getBytes(UTF_8)); + } + Path resource = temporaryFolder.newFile("resource.properties").toPath(); + Files.write(resource, "hello".getBytes(UTF_8)); + + Path classDir = temporaryFolder.newFolder().toPath(); + Files.write( + classDir.resolve("extra.class"), + new byte[] {(byte) 0xca, (byte) 0xfe, (byte) 0xba, (byte) 0xbe}); + + VanillaJavaBuilderResult result = + run( + ImmutableList.of( + "--javacopts", + "-Xep:FallThrough:ERROR", + "--sources", + source.toString(), + "--source_jars", + sourceJar.toString(), + "--output", + output.toString(), + "--classpath_resources", + resource.toString(), + "--bootclasspath", + Paths.get(System.getProperty("java.home")).resolve("lib/rt.jar").toString(), + "--classdir", + classDir.toString())); + + assertThat(result.output()).isEmpty(); + assertThat(result.ok()).isTrue(); + + ImmutableMap<String, byte[]> outputEntries = readJar(output.toFile()); + assertThat(outputEntries.keySet()) + .containsExactly( + "META-INF/", "META-INF/MANIFEST.MF", "A.class", "B.class", "resource.properties"); + } } |