aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java
diff options
context:
space:
mode:
authorGravatar cushon <cushon@google.com>2017-05-04 18:45:18 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-04 23:05:41 +0200
commitd953ca8b87a46decbce385cebb446ae0dd390881 (patch)
tree089b6b92b734314fc802d73a92a51eb631c35564 /src/java_tools/buildjar/javatests/com/google/devtools/build/buildjar/VanillaJavaBuilderTest.java
parent3ad44e3084f17370f84ee479f8f6386ffdaf28f1 (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.java51
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");
+ }
}