2
0
Fork 0
mirror of https://github.com/ethauvin/bld.git synced 2025-04-27 08:48:13 -07:00

Added functional tests for jlink and jmod

This commit is contained in:
Erik C. Thauvin 2024-08-02 18:27:03 -07:00
parent b94b23af56
commit 0204cdff19
Signed by: erik
GPG key ID: 776702A6A2DA330E
18 changed files with 200 additions and 10 deletions

2
src/test/resources/jlink/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
build/javac
build/jar

View 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

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

View file

@ -0,0 +1 @@
Apples are GOD'S creation. You have no right to them.

View file

@ -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);
}
}
}

View file

@ -0,0 +1,3 @@
module dev.mccue.apple {
exports dev.mccue.apple;
}

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

View file

@ -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()
);
}
}

View file

@ -0,0 +1,3 @@
module dev.mccue.tree {
requires dev.mccue.apple;
}