From 6364a14be953c74f2f9c678d82c0414f315f2d3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon?= Date: Tue, 7 Jul 2020 11:00:08 +0200 Subject: [PATCH] Updating ModuleUpdaterTest.java --- sample-jar/Makefile | 8 +++ sample-jar/classes/a/A.class | Bin 0 -> 178 bytes sample-jar/sample.jar | Bin 0 -> 611 bytes sample-jar/src/a/A.java | 3 ++ .../jhms/modularizer/ModuleDescription.java | 5 ++ .../jhms/modularizer/ModuleUpdaterTest.java | 50 ++++++++++++++++-- 6 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 sample-jar/Makefile create mode 100644 sample-jar/classes/a/A.class create mode 100644 sample-jar/sample.jar create mode 100644 sample-jar/src/a/A.java diff --git a/sample-jar/Makefile b/sample-jar/Makefile new file mode 100644 index 0000000..be11926 --- /dev/null +++ b/sample-jar/Makefile @@ -0,0 +1,8 @@ +sample.jar: classes/a/A.class + jar -c -f $@ $^ + +classes/a/A.class: src/a/A.java + javac -d classes src/a/A.java + +clean: + rm -rf classes diff --git a/sample-jar/classes/a/A.class b/sample-jar/classes/a/A.class new file mode 100644 index 0000000000000000000000000000000000000000..ea6785dc346eacc20f6229eb179ed6abb0532211 GIT binary patch literal 178 zcmX^0Z`VEs1_pBmUM>b^1}=66ZgvJ9Mg}&U%)HDJJ4Oa(4b3n{1{UZ1lvG9rexJ;| zRKL>Pq|~C2#H1Xc2v=}^X;E^jTPBFZ=BSsISeD4cz{0=^)S0O7$jBf764B2|%uCnz zPs&P7E@4n)U;^3%0*pWiR0<^7fIL|+pMil@YdZtuMzAzHkYoc2GXOO(GH?KCCI(Ib D!0{a? literal 0 HcmV?d00001 diff --git a/sample-jar/sample.jar b/sample-jar/sample.jar new file mode 100644 index 0000000000000000000000000000000000000000..03c5af9358a73b787be59a6c6d91d0d0e29bed24 GIT binary patch literal 611 zcmWIWW@Zs#;Nak3&|Y&lfB^|`GO#fCx`sIFdiuHP|2xINz|0Wf&CUT*!30$n0N1R8 zrdb520+$DojJcb$l!|cgQrD$UcNe>z86bZ zv2ZcCemNs*A`|?H+v^W^(C0lddrT{LR_p{@o-DayhBeS=8z4qlj_z_nplotZVsUY5 zv3{byqaK)T{Wbr(9UB{4F3wl(u(w+$xN6H=JD zjhH?86wV$wzzO!&>V7`u89+yG0(*;*NrVA4N?_p)iV{=+4`WaS1$ZO0f+7Stv_KJp s0JcCTTq{!aAe#URRb+>OLKOja0ht(K9N^8$22#QdgnNMWL`Dz~0Hv~;0{{R3 literal 0 HcmV?d00001 diff --git a/sample-jar/src/a/A.java b/sample-jar/src/a/A.java new file mode 100644 index 0000000..e367656 --- /dev/null +++ b/sample-jar/src/a/A.java @@ -0,0 +1,3 @@ +package a; + +public class A {} diff --git a/src/main/java/no/ion/jhms/modularizer/ModuleDescription.java b/src/main/java/no/ion/jhms/modularizer/ModuleDescription.java index 9ab52ff..9b72e9d 100644 --- a/src/main/java/no/ion/jhms/modularizer/ModuleDescription.java +++ b/src/main/java/no/ion/jhms/modularizer/ModuleDescription.java @@ -26,6 +26,11 @@ public Options setJarPath(Path path) { public PrintStream out() { return out; } } + /** + * Writes a description of the modular JAR given by {@link Options#jarPath()}. + * + * @throws ErrorException if jar file is not a module + */ public static void describeModule(PrintStream out, Options options) { new ModuleDescription(out, options).describe(); } diff --git a/src/test/java/no/ion/jhms/modularizer/ModuleUpdaterTest.java b/src/test/java/no/ion/jhms/modularizer/ModuleUpdaterTest.java index d28df11..cf0c5fc 100644 --- a/src/test/java/no/ion/jhms/modularizer/ModuleUpdaterTest.java +++ b/src/test/java/no/ion/jhms/modularizer/ModuleUpdaterTest.java @@ -1,17 +1,59 @@ package no.ion.jhms.modularizer; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; -import java.lang.module.ModuleDescriptor; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; class ModuleUpdaterTest { + private final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + private final PrintStream printStream = new PrintStream(baos); + private Path path; + + @TempDir + Path tmpDirectory; + + @BeforeEach + void setUp() { + path = tmpDirectory.resolve("sample.jar"); + } + @Test - public void addModuleInfoClass() { - ModuleInfoClassReader reader = ModuleInfoClassReader.open(Path.of("src/test/resources/min-descriptor/module-info.class")); - ModuleInfoClass moduleInfoClass = reader.parse(); + public void verifyUpdate() throws IOException { + Files.copy(Path.of("sample-jar/sample.jar"), path); + + var describeOptions = new ModuleDescription.Options().setJarPath(path); + try { + ModuleDescription.describeModule(printStream, describeOptions); + fail(); + } catch (ErrorException e) { + assertTrue(e.getMessage().startsWith("error: no module declaration found:"), e::getMessage); + assertTrue(e.getMessage().endsWith("/sample.jar")); + } + assertEquals("", output()); + + var updateOptions = new ModuleUpdater.Options() + .setJarPath(path) + .setModuleName("module.name"); + ModuleUpdater.update(printStream, updateOptions); + assertEquals("", output()); + } + + private String getDeclaration() { + + } + + private String output() { + return baos.toString(StandardCharsets.UTF_8); } }