< prev index next >

test/jdk/tools/jpackage/share/LicenseTest.java

Print this page

        

*** 23,32 **** --- 23,33 ---- import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; + import java.util.ArrayList; import java.util.Arrays; import java.util.function.Function; import java.util.stream.Collectors; import jdk.jpackage.test.JPackageCommand; import jdk.jpackage.test.PackageType;
*** 62,102 **** /* * @test * @summary jpackage with --license-file * @library ../helpers * @modules jdk.jpackage/jdk.jpackage.internal ! * @run main/othervm/timeout=360 -Xmx512m LicenseTest */ public class LicenseTest { public static void main(String[] args) { Test.run(args, () -> { new PackageTest().configureHelloApp() .addInitializer(cmd -> { cmd.addArguments("--license-file", LICENSE_FILE); }) ! .forTypes(PackageType.LINUX_DEB) .addBundleVerifier(cmd -> { ! verifyLicenseFileInLinuxPackage(cmd, debLicenseFile(cmd)); }) .addInstallVerifier(cmd -> { ! verifyLicenseFileInstalledDebian(debLicenseFile(cmd)); }) .addUninstallVerifier(cmd -> { ! verifyLicenseFileNotInstalledLinux(debLicenseFile(cmd)); }) ! .forTypes(PackageType.LINUX_RPM) ! .addBundleVerifier(cmd -> { ! verifyLicenseFileInLinuxPackage(cmd,rpmLicenseFile(cmd)); }) .addInstallVerifier(cmd -> { verifyLicenseFileInstalledRpm(rpmLicenseFile(cmd)); }) - .addUninstallVerifier(cmd -> { - verifyLicenseFileNotInstalledLinux(rpmLicenseFile(cmd)); - }) .run(); ! }); } private static Path rpmLicenseFile(JPackageCommand cmd) { final Path licenseRoot = Path.of( new Executor() --- 63,126 ---- /* * @test * @summary jpackage with --license-file * @library ../helpers * @modules jdk.jpackage/jdk.jpackage.internal ! * @run main/othervm/timeout=360 -Xmx512m LicenseTest testCommon */ + + /* + * @test + * @summary jpackage with --license-file + * @library ../helpers + * @modules jdk.jpackage/jdk.jpackage.internal + * @requires (os.family == "linux") + * @run main/othervm/timeout=360 -Xmx512m LicenseTest testCustomDebianCopyright + * @run main/othervm/timeout=360 -Xmx512m LicenseTest testCustomDebianCopyrightSubst + */ + public class LicenseTest { public static void main(String[] args) { Test.run(args, () -> { + String testFuncName = args[0]; + Test.trace(String.format("Running %s...", testFuncName)); + Test.getTestClass().getDeclaredMethod(testFuncName).invoke(null); + }); + } + + public static void testCommon() { new PackageTest().configureHelloApp() .addInitializer(cmd -> { cmd.addArguments("--license-file", LICENSE_FILE); }) ! .forTypes(PackageType.LINUX) .addBundleVerifier(cmd -> { ! verifyLicenseFileInLinuxPackage(cmd, linuxLicenseFile(cmd)); }) .addInstallVerifier(cmd -> { ! Test.assertReadableFileExists(linuxLicenseFile(cmd)); }) .addUninstallVerifier(cmd -> { ! verifyLicenseFileNotInstalledLinux(linuxLicenseFile(cmd)); }) ! .forTypes(PackageType.LINUX_DEB) ! .addInstallVerifier(cmd -> { ! verifyLicenseFileInstalledDebian(debLicenseFile(cmd)); }) + .forTypes(PackageType.LINUX_RPM) .addInstallVerifier(cmd -> { verifyLicenseFileInstalledRpm(rpmLicenseFile(cmd)); }) .run(); ! } ! ! public static void testCustomDebianCopyright() { ! new CustomDebianCopyrightTest().run(); ! } ! ! public static void testCustomDebianCopyrightSubst() { ! new CustomDebianCopyrightTest().withSubstitution(true).run(); } private static Path rpmLicenseFile(JPackageCommand cmd) { final Path licenseRoot = Path.of( new Executor()
*** 107,116 **** --- 131,154 ---- LinuxHelper.getPackageName(cmd), cmd.version())).resolve( LICENSE_FILE.getFileName()); return licensePath; } + private static Path linuxLicenseFile(JPackageCommand cmd) { + cmd.verifyIsOfType(PackageType.LINUX); + switch (cmd.packageType()) { + case LINUX_DEB: + return debLicenseFile(cmd); + + case LINUX_RPM: + return rpmLicenseFile(cmd); + + default: + return null; + } + } + private static Path debLicenseFile(JPackageCommand cmd) { return cmd.appInstallationDirectory().resolve("share/doc/copyright"); } private static void verifyLicenseFileInLinuxPackage(JPackageCommand cmd,
*** 119,172 **** expectedLicensePath)).findFirst().orElse(null) != null, String.format("Check license file [%s] is in %s package", expectedLicensePath, LinuxHelper.getPackageName(cmd))); } ! private static void verifyLicenseFileInstalledRpm(Path licenseFile) { ! Test.assertTrue(Files.isReadable(licenseFile), String.format( ! "Check license file [%s] is readable", licenseFile)); ! try { ! Test.assertTrue(Files.readAllLines(licenseFile).equals( ! Files.readAllLines(LICENSE_FILE)), String.format( "Check contents of package license file [%s] are the same as contents of source license file [%s]", licenseFile, LICENSE_FILE)); - } catch (IOException ex) { - throw new RuntimeException(ex); - } } ! private static void verifyLicenseFileInstalledDebian(Path licenseFile) { ! Test.assertTrue(Files.isReadable(licenseFile), String.format( ! "Check license file [%s] is readable", licenseFile)); ! ! Function<List<String>, List<String>> stripper = (lines) -> Arrays.asList( ! String.join("\n", lines).stripTrailing().split("\n")); - try { List<String> actualLines = Files.readAllLines(licenseFile).stream().dropWhile( line -> !line.startsWith("License:")).collect( Collectors.toList()); // Remove leading `License:` followed by the whitespace from the first text line. actualLines.set(0, actualLines.get(0).split("\\s+", 2)[1]); ! actualLines = stripper.apply(actualLines); Test.assertNotEquals(0, String.join("\n", actualLines).length(), "Check stripped license text is not empty"); ! Test.assertTrue(actualLines.equals( ! stripper.apply(Files.readAllLines(LICENSE_FILE))), ! String.format( "Check subset of package license file [%s] is a match of the source license file [%s]", licenseFile, LICENSE_FILE)); - } catch (IOException ex) { - throw new RuntimeException(ex); - } } private static void verifyLicenseFileNotInstalledLinux(Path licenseFile) { ! Test.assertDirectoryExists(licenseFile.getParent(), false); } private static final Path LICENSE_FILE = Test.TEST_SRC_ROOT.resolve( Path.of("resources", "license.txt")); } --- 157,279 ---- expectedLicensePath)).findFirst().orElse(null) != null, String.format("Check license file [%s] is in %s package", expectedLicensePath, LinuxHelper.getPackageName(cmd))); } ! private static void verifyLicenseFileInstalledRpm(Path licenseFile) throws ! IOException { ! Test.assertStringListEquals(Files.readAllLines(LICENSE_FILE), ! Files.readAllLines(licenseFile), String.format( "Check contents of package license file [%s] are the same as contents of source license file [%s]", licenseFile, LICENSE_FILE)); } ! private static void verifyLicenseFileInstalledDebian(Path licenseFile) ! throws IOException { List<String> actualLines = Files.readAllLines(licenseFile).stream().dropWhile( line -> !line.startsWith("License:")).collect( Collectors.toList()); // Remove leading `License:` followed by the whitespace from the first text line. actualLines.set(0, actualLines.get(0).split("\\s+", 2)[1]); ! actualLines = DEBIAN_COPYRIGT_FILE_STRIPPER.apply(actualLines); Test.assertNotEquals(0, String.join("\n", actualLines).length(), "Check stripped license text is not empty"); ! Test.assertStringListEquals(DEBIAN_COPYRIGT_FILE_STRIPPER.apply( ! Files.readAllLines(LICENSE_FILE)), actualLines, String.format( "Check subset of package license file [%s] is a match of the source license file [%s]", licenseFile, LICENSE_FILE)); } private static void verifyLicenseFileNotInstalledLinux(Path licenseFile) { ! Test.assertPathExists(licenseFile.getParent(), false); ! } ! ! private static class CustomDebianCopyrightTest { ! CustomDebianCopyrightTest() { ! withSubstitution(false); ! } ! ! private List<String> licenseFileText(String copyright, String licenseText) { ! List<String> lines = new ArrayList(List.of( ! String.format("Copyright=%s", copyright), ! "Foo", ! "Bar", ! "Buz")); ! lines.addAll(List.of(licenseText.split("\\R", -1))); ! return lines; ! } ! ! private List<String> licenseFileText() { ! if (withSubstitution) { ! return licenseFileText("APPLICATION_COPYRIGHT", ! "APPLICATION_LICENSE_TEXT"); ! } else { ! return expetedLicenseFileText(); ! } ! } ! ! private List<String> expetedLicenseFileText() { ! return licenseFileText(copyright, licenseText); ! } ! ! CustomDebianCopyrightTest withSubstitution(boolean v) { ! withSubstitution = v; ! // Different values just to make easy to figure out from the test log which test was executed. ! if (v) { ! copyright = "Duke (C)"; ! licenseText = "The quick brown fox\n jumps over the lazy dog"; ! } else { ! copyright = "Java (C)"; ! licenseText = "How vexingly quick daft zebras jump!"; ! } ! return this; ! } ! ! void run() { ! final Path srcLicenseFile = Test.workDir().resolve("license"); ! new PackageTest().configureHelloApp().forTypes(PackageType.LINUX_DEB) ! .addInitializer(cmd -> { ! // Create source license file. ! Files.write(srcLicenseFile, List.of( ! licenseText.split("\\R", -1))); ! ! cmd.setFakeRuntime(); ! cmd.setArgumentValue("--name", String.format("%s%s", ! withSubstitution ? "CustomDebianCopyrightWithSubst" : "CustomDebianCopyright", ! cmd.name())); ! cmd.addArguments("--license-file", srcLicenseFile); ! cmd.addArguments("--copyright", copyright); ! cmd.addArguments("--resource-dir", RESOURCE_DIR); ! ! // Create copyright template file in a resource dir. ! Files.createDirectories(RESOURCE_DIR); ! Files.write(RESOURCE_DIR.resolve("copyright"), ! licenseFileText()); ! }) ! .addInstallVerifier(cmd -> { ! Path installedLicenseFile = debLicenseFile(cmd); ! Test.assertStringListEquals(expetedLicenseFileText(), ! DEBIAN_COPYRIGT_FILE_STRIPPER.apply(Files.readAllLines( ! installedLicenseFile)), String.format( ! "Check contents of package license file [%s] are the same as contents of source license file [%s]", ! installedLicenseFile, srcLicenseFile)); ! }) ! .run(); ! } ! ! private boolean withSubstitution; ! private String copyright; ! private String licenseText; ! ! private final Path RESOURCE_DIR = Test.workDir().resolve("resources"); } private static final Path LICENSE_FILE = Test.TEST_SRC_ROOT.resolve( Path.of("resources", "license.txt")); + + private static final Function<List<String>, List<String>> DEBIAN_COPYRIGT_FILE_STRIPPER = (lines) -> Arrays.asList( + String.join("\n", lines).stripTrailing().split("\n")); }
< prev index next >