< 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 >