mirror of
https://github.com/ethauvin/bld.git
synced 2025-04-25 00:07:12 -07:00
Added functional tests for jlink and jmod
This commit is contained in:
parent
b94b23af56
commit
0204cdff19
18 changed files with 200 additions and 10 deletions
3
classes/META-INF/MANIFEST.MF
Normal file
3
classes/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,3 @@
|
|||
Manifest-Version: 1.0
|
||||
Created-By: 17.0.12 (Eclipse Adoptium)
|
||||
|
BIN
classes/dev/mccue/tree/Tree.class
Normal file
BIN
classes/dev/mccue/tree/Tree.class
Normal file
Binary file not shown.
BIN
classes/module-info.class
Normal file
BIN
classes/module-info.class
Normal file
Binary file not shown.
|
@ -7,9 +7,12 @@ package rife.bld.operations;
|
|||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import rife.bld.operations.exceptions.ExitStatusException;
|
||||
import rife.tools.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
@ -68,8 +71,27 @@ public class TestJlinkOperation {
|
|||
.disablePlugin("system-modules")
|
||||
.listPlugins();
|
||||
assertDoesNotThrow(jlink::execute);
|
||||
}
|
||||
|
||||
assertTrue(jlink.toolArgs().containsAll(List.of("vm", "system-modules")));
|
||||
@Test
|
||||
void testExecute() throws IOException {
|
||||
var tmpdir = Files.createTempDirectory("bld-jlink-test").toFile();
|
||||
tmpdir.deleteOnExit();
|
||||
|
||||
var output = new File(tmpdir, "jlink");
|
||||
output.deleteOnExit();
|
||||
|
||||
var options = new JlinkOptions()
|
||||
.modulePath("src/test/resources/jlink/build/jmod")
|
||||
.addModules("dev.mccue.tree")
|
||||
.launcher("tree", "dev.mccue.tree", "dev.mccue.tree.Tree")
|
||||
.output(output.getAbsolutePath());
|
||||
var jlink = new JlinkOperation().jlinkOptions(options);
|
||||
|
||||
assertDoesNotThrow(jlink::execute);
|
||||
assertTrue(output.exists(), "Output dir does not exist");
|
||||
|
||||
FileUtils.deleteDirectory(tmpdir);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -88,7 +110,7 @@ public class TestJlinkOperation {
|
|||
|
||||
@Test
|
||||
void testOptions() {
|
||||
var jlink = new JlinkOperation().options("src/test/resources/options_verbose.txt");
|
||||
var jlink = new JlinkOperation().options("src/test/resources/jlink/options_verbose.txt");
|
||||
assertDoesNotThrow(jlink::execute);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,12 +7,17 @@ package rife.bld.operations;
|
|||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import rife.bld.operations.exceptions.ExitStatusException;
|
||||
import rife.tools.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.HashMap;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static rife.bld.operations.JmodOperation.OperationMode;
|
||||
|
||||
public class TestJmodOperation {
|
||||
@Test
|
||||
|
@ -68,10 +73,60 @@ public class TestJmodOperation {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCreate() throws IOException {
|
||||
var tmpdir = Files.createTempDirectory("bld-jmod-test").toFile();
|
||||
tmpdir.deleteOnExit();
|
||||
|
||||
var mod = new File(tmpdir, "dev.mccue.tree.jmod");
|
||||
mod.deleteOnExit();
|
||||
|
||||
var options = new JmodOptions()
|
||||
.legalNotices("src/test/resources/jlink/dev.mccue.apple/legal")
|
||||
.classpath("src/test/resources/jlink/build/jar/dev.mccue.apple.jar");
|
||||
var jmod = new JmodOperation()
|
||||
.operationMode(OperationMode.CREATE)
|
||||
.jmodFile(mod.getAbsolutePath())
|
||||
.jmodOptions(options);
|
||||
|
||||
assertDoesNotThrow(jmod::execute);
|
||||
assertTrue(mod.exists(), "mod does not exist");
|
||||
|
||||
FileUtils.deleteDirectory(tmpdir);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExecute() throws IOException {
|
||||
var tmpdir = Files.createTempDirectory("bld-jmod-test").toFile();
|
||||
tmpdir.deleteOnExit();
|
||||
|
||||
var mod = new File(tmpdir, "dev.mccue.tree.jmod");
|
||||
mod.deleteOnExit();
|
||||
|
||||
var options = new JmodOptions().classpath("src/test/resources/jlink/build/jar/dev.mccue.tree.jar");
|
||||
var jmod = new JmodOperation()
|
||||
.operationMode(OperationMode.CREATE)
|
||||
.jmodFile(mod.getAbsolutePath())
|
||||
.jmodOptions(options);
|
||||
|
||||
assertDoesNotThrow(jmod::execute);
|
||||
assertTrue(mod.exists(), "mod does not exist");
|
||||
|
||||
jmod.jmodOptions().clear();
|
||||
|
||||
jmod.operationMode(OperationMode.DESCRIBE);
|
||||
assertDoesNotThrow(jmod::execute, "describe mod failed");
|
||||
|
||||
jmod.operationMode(OperationMode.LIST);
|
||||
assertDoesNotThrow(jmod::execute, "list mod failed");
|
||||
|
||||
FileUtils.deleteDirectory(tmpdir);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHelp() {
|
||||
var jmod = new JmodOperation()
|
||||
.operationMode(JmodOperation.OperationMode.HASH)
|
||||
.operationMode(OperationMode.HASH)
|
||||
.jmodFile("foo")
|
||||
.addArgs("--help-extra");
|
||||
assertDoesNotThrow(jmod::execute);
|
||||
|
@ -87,14 +142,14 @@ public class TestJmodOperation {
|
|||
|
||||
@Test
|
||||
void testOptions() {
|
||||
var jpackage = new JpackageOperation().options("src/test/resources/options_version.txt");
|
||||
var jpackage = new JpackageOperation().options("src/test/resources/jlink/options_version.txt");
|
||||
assertDoesNotThrow(jpackage::execute);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testVersion() {
|
||||
var jmod = new JmodOperation()
|
||||
.operationMode(JmodOperation.OperationMode.DESCRIBE)
|
||||
.operationMode(OperationMode.DESCRIBE)
|
||||
.jmodFile("foo")
|
||||
.addArgs("--version");
|
||||
assertDoesNotThrow(jmod::execute);
|
||||
|
|
|
@ -13,6 +13,8 @@ import java.nio.file.Files;
|
|||
import java.util.HashMap;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static rife.bld.operations.JpackageOptions.Launcher;
|
||||
import static rife.bld.operations.JpackageOptions.PackageType;
|
||||
|
||||
public class TestJpackageOperation {
|
||||
|
||||
|
@ -82,7 +84,7 @@ public class TestJpackageOperation {
|
|||
|
||||
var options = new JpackageOptions()
|
||||
.aboutUrl(args.get("--about-url"))
|
||||
.addLauncher(new JpackageOptions.Launcher("name", "path"))
|
||||
.addLauncher(new Launcher("name", "path"))
|
||||
.addModules(args.get("--add-modules").split(","))
|
||||
.appContent(args.get("--app-content").split(","))
|
||||
.appImage(args.get("--app-image"))
|
||||
|
@ -128,7 +130,7 @@ public class TestJpackageOperation {
|
|||
.runtimeImage(args.get("--runtime-image"))
|
||||
.stripDebug(true)
|
||||
.temp(args.get("--temp"))
|
||||
.type(JpackageOptions.PackageType.EXE)
|
||||
.type(PackageType.EXE)
|
||||
.vendor(args.get("--vendor"))
|
||||
.verbose(true)
|
||||
.winConsole(true)
|
||||
|
@ -166,7 +168,7 @@ public class TestJpackageOperation {
|
|||
|
||||
var os = System.getProperty("os.version");
|
||||
if (os.endsWith("MANJARO")) {
|
||||
options.type(JpackageOptions.PackageType.DEB);
|
||||
options.type(PackageType.DEB);
|
||||
}
|
||||
|
||||
var jpackage = new JpackageOperation().jpackageOptions(options);
|
||||
|
@ -197,7 +199,7 @@ public class TestJpackageOperation {
|
|||
|
||||
@Test
|
||||
void testOptions() {
|
||||
var jpackage = new JpackageOperation().options("src/test/resources/options_verbose.txt");
|
||||
var jpackage = new JpackageOperation().options("src/test/resources/jlink/options_verbose.txt");
|
||||
assertDoesNotThrow(jpackage::execute);
|
||||
}
|
||||
|
||||
|
|
2
src/test/resources/jlink/.gitignore
vendored
Normal file
2
src/test/resources/jlink/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
build/javac
|
||||
build/jar
|
40
src/test/resources/jlink/Makefile
Normal file
40
src/test/resources/jlink/Makefile
Normal file
|
@ -0,0 +1,40 @@
|
|||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf build
|
||||
|
||||
.PHONY: compile
|
||||
compile: clean
|
||||
javac -d build/javac --module-source-path "./*/src" --module dev.mccue.tree,dev.mccue.apple
|
||||
|
||||
.PHONY: package
|
||||
package: compile
|
||||
mkdir -p build/jar
|
||||
|
||||
jar --create --file build/jar/dev.mccue.apple.jar \
|
||||
-C build/javac/dev.mccue.apple . \
|
||||
-C dev.mccue.apple/res .
|
||||
jar --create --file build/jar/dev.mccue.tree.jar \
|
||||
-C build/javac/dev.mccue.tree .
|
||||
|
||||
.PHONY: link
|
||||
link: package
|
||||
mkdir -p build/jmod
|
||||
|
||||
jmod create \
|
||||
--legal-notices dev.mccue.apple/legal \
|
||||
--class-path build/jar/dev.mccue.apple.jar \
|
||||
build/jmod/dev.mccue.apple.jmod
|
||||
|
||||
jmod create \
|
||||
--class-path build/jar/dev.mccue.tree.jar \
|
||||
build/jmod/dev.mccue.tree.jmod
|
||||
|
||||
jlink \
|
||||
--module-path build/jmod \
|
||||
--add-modules dev.mccue.tree \
|
||||
--launcher tree=dev.mccue.tree/dev.mccue.tree.Tree \
|
||||
--output build/jlink
|
||||
|
||||
.PHONY: test
|
||||
test: link
|
||||
./build/jlink/bin/tree
|
11
src/test/resources/jlink/dev.mccue.apple/dev.mccue.apple.iml
Normal file
11
src/test/resources/jlink/dev.mccue.apple/dev.mccue.apple.iml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
1
src/test/resources/jlink/dev.mccue.apple/legal/LICENSE
Normal file
1
src/test/resources/jlink/dev.mccue.apple/legal/LICENSE
Normal file
|
@ -0,0 +1 @@
|
|||
Apples are GOD'S creation. You have no right to them.
|
|
@ -0,0 +1 @@
|
|||
red
|
|
@ -0,0 +1,20 @@
|
|||
package dev.mccue.apple;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public final class Apple {
|
||||
public String color() {
|
||||
try {
|
||||
return new String(
|
||||
Objects.requireNonNull(
|
||||
Apple.class.getResourceAsStream("/dev/mccue/apple/color.txt")
|
||||
).readAllBytes()
|
||||
);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
module dev.mccue.apple {
|
||||
exports dev.mccue.apple;
|
||||
}
|
12
src/test/resources/jlink/dev.mccue.tree/dev.mccue.tree.iml
Normal file
12
src/test/resources/jlink/dev.mccue.tree/dev.mccue.tree.iml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="dev.mccue.apple" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,15 @@
|
|||
package dev.mccue.tree;
|
||||
|
||||
import dev.mccue.apple.Apple;
|
||||
|
||||
public final class Tree {
|
||||
public Apple bearFruit() {
|
||||
return new Apple();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(
|
||||
new Tree().bearFruit().color()
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
module dev.mccue.tree {
|
||||
requires dev.mccue.apple;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue