test/org/openjdk/jigsaw/hello-repo.sh
Print this page
@@ -20,11 +20,11 @@
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
# @test
-# @summary Basic test of repo on file system
+# @summary Basic test of repo on file system, and resolver filtering on OS/ARCH
# @run shell hello-repo.sh
set -e
BIN=${TESTJAVA:-../../../../build}/bin
@@ -35,10 +35,17 @@
d=`dirname $1`
if [ ! -d $d ]; then mkdir -p $d; fi
cat - >$1
}
+compare() {
+ if [ "$1" != "$2" ]; then
+ echo "FAIL: expected [$1], got [$2]"
+ exit 1
+ fi
+}
+
rm -rf z.*
mk z.src/app/module-info.java <<EOF
module app @ 1.0 {
requires foolib;
@@ -46,33 +53,83 @@
}
EOF
mk z.src/app/com/app/Main.java <<EOF
package com.app;
+import java.lang.reflect.Module;
public class Main {
public static void main(String[] args) {
- System.out.println("Hello");
+ System.out.println("Hello, " + com.foolib.Lib.text());
}
}
EOF
-mk z.src/foolib/module-info.java <<EOF
+mk z.src/foolib1/module-info.java <<EOF
module foolib @ 1.0 {
+ exports com.foolib;
}
EOF
+mk z.src/foolib1/com/foolib/Lib.java <<EOF
+package com.foolib;
+public class Lib {
+ public static String text() {
+ return "foolib @ 1";
+ }
+}
+EOF
+
+mk z.src/foolib2/module-info.java <<EOF
+module foolib @ 2.0 {
+ exports com.foolib;
+}
+EOF
+
+mk z.src/foolib2/com/foolib/Lib.java <<EOF
+package com.foolib;
+public class Lib {
+ public static String text() {
+ return "foolib @ 2";
+ }
+}
+EOF
+
+## Two versions of foolib in the repo, ensure resolver picks the correct version
+
mkdir z.mods
$BIN/javac -source 8 -d z.mods -modulepath z.modules \
- `find z.src -name '*.java'`
+ `find z.src/app z.src/foolib1 -name '*.java'`
+mkdir z.mods/foolib2
+$BIN/javac -source 8 -d z.mods/foolib2 `find z.src/foolib2 -name '*.java'`
mkdir z.pkgs
$BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/app jmod app
-$BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib jmod foolib
+$BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib1 jmod foolib
+$BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib2 jmod foolib
$BIN/jrepo ${TESTTOOLVMOPTS} z.repo create
$BIN/jrepo ${TESTTOOLVMOPTS} z.repo add z.pkgs/*.jmod
$BIN/jmod ${TESTTOOLVMOPTS} create -L z.mlib
$BIN/jmod ${TESTTOOLVMOPTS} add-repo -L z.mlib z.repo
$BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install -n app
$BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install app
-$BIN/java ${VMOPTS} -L z.mlib -m app
+OUT=`$BIN/java ${VMOPTS} -L z.mlib -m app | tr -d ' \n\r'`
+compare Hello,foolib@2 $OUT
+
+## create OS/ARCH specific library and jmods
+mkdir z.arch_pkgs
+rm -rf z.mlib z.repo
+$BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Bos -arch Barch -m z.mods/app jmod app
+$BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Bos -arch Barch -m z.mods/foolib1 jmod foolib
+$BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Cos -arch Carch -m z.mods/foolib2 jmod foolib
+
+$BIN/jrepo ${TESTTOOLVMOPTS} z.repo create
+$BIN/jrepo ${TESTTOOLVMOPTS} z.repo add z.arch_pkgs/*.jmod
+
+$BIN/jmod ${TESTTOOLVMOPTS} create -L z.mlib -os Bos -arch Barch
+$BIN/jmod ${TESTTOOLVMOPTS} add-repo -L z.mlib z.repo
+$BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install -n app
+$BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install app
+OUT=`$BIN/java ${VMOPTS} -L z.mlib -m app | tr -d ' \n\r'`
+compare Hello,foolib@1 $OUT
+