5 # 6 # This code is free software; you can redistribute it and/or modify it 7 # under the terms of the GNU General Public License version 2 only, as 8 # published by the Free Software Foundation. 9 # 10 # This code is distributed in the hope that it will be useful, but WITHOUT 11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 # version 2 for more details (a copy is included in the LICENSE file that 14 # accompanied this code). 15 # 16 # You should have received a copy of the GNU General Public License version 17 # 2 along with this work; if not, write to the Free Software Foundation, 18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 # 20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 # or visit www.oracle.com if you need additional information or have any 22 # questions. 23 24 # @test 25 # @summary Basic test of repo on file system 26 # @run shell hello-repo.sh 27 28 set -e 29 30 BIN=${TESTJAVA:-../../../../build}/bin 31 SRC=${TESTSRC:-.} 32 VMOPTS="${TESTVMOPTS} -esa -ea" 33 34 mk() { 35 d=`dirname $1` 36 if [ ! -d $d ]; then mkdir -p $d; fi 37 cat - >$1 38 } 39 40 rm -rf z.* 41 42 mk z.src/app/module-info.java <<EOF 43 module app @ 1.0 { 44 requires foolib; 45 class com.app.Main; 46 } 47 EOF 48 49 mk z.src/app/com/app/Main.java <<EOF 50 package com.app; 51 public class Main { 52 public static void main(String[] args) { 53 System.out.println("Hello"); 54 } 55 } 56 EOF 57 58 mk z.src/foolib/module-info.java <<EOF 59 module foolib @ 1.0 { 60 } 61 EOF 62 63 mkdir z.mods 64 $BIN/javac -source 8 -d z.mods -modulepath z.modules \ 65 `find z.src -name '*.java'` 66 67 mkdir z.pkgs 68 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/app jmod app 69 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib jmod foolib 70 71 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo create 72 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo add z.pkgs/*.jmod 73 74 $BIN/jmod ${TESTTOOLVMOPTS} create -L z.mlib 75 $BIN/jmod ${TESTTOOLVMOPTS} add-repo -L z.mlib z.repo 76 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install -n app 77 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install app 78 $BIN/java ${VMOPTS} -L z.mlib -m app | 5 # 6 # This code is free software; you can redistribute it and/or modify it 7 # under the terms of the GNU General Public License version 2 only, as 8 # published by the Free Software Foundation. 9 # 10 # This code is distributed in the hope that it will be useful, but WITHOUT 11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 # version 2 for more details (a copy is included in the LICENSE file that 14 # accompanied this code). 15 # 16 # You should have received a copy of the GNU General Public License version 17 # 2 along with this work; if not, write to the Free Software Foundation, 18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 # 20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 # or visit www.oracle.com if you need additional information or have any 22 # questions. 23 24 # @test 25 # @summary Basic test of repo on file system, and resolver filtering on OS/ARCH 26 # @run shell hello-repo.sh 27 28 set -e 29 30 BIN=${TESTJAVA:-../../../../build}/bin 31 SRC=${TESTSRC:-.} 32 VMOPTS="${TESTVMOPTS} -esa -ea" 33 34 mk() { 35 d=`dirname $1` 36 if [ ! -d $d ]; then mkdir -p $d; fi 37 cat - >$1 38 } 39 40 compare() { 41 if [ "$1" != "$2" ]; then 42 echo "FAIL: expected [$1], got [$2]" 43 exit 1 44 fi 45 } 46 47 rm -rf z.* 48 49 mk z.src/app/module-info.java <<EOF 50 module app @ 1.0 { 51 requires foolib; 52 class com.app.Main; 53 } 54 EOF 55 56 mk z.src/app/com/app/Main.java <<EOF 57 package com.app; 58 import java.lang.reflect.Module; 59 public class Main { 60 public static void main(String[] args) { 61 System.out.println("Hello, " + com.foolib.Lib.text()); 62 } 63 } 64 EOF 65 66 mk z.src/foolib1/module-info.java <<EOF 67 module foolib @ 1.0 { 68 exports com.foolib; 69 } 70 EOF 71 72 mk z.src/foolib1/com/foolib/Lib.java <<EOF 73 package com.foolib; 74 public class Lib { 75 public static String text() { 76 return "foolib @ 1"; 77 } 78 } 79 EOF 80 81 mk z.src/foolib2/module-info.java <<EOF 82 module foolib @ 2.0 { 83 exports com.foolib; 84 } 85 EOF 86 87 mk z.src/foolib2/com/foolib/Lib.java <<EOF 88 package com.foolib; 89 public class Lib { 90 public static String text() { 91 return "foolib @ 2"; 92 } 93 } 94 EOF 95 96 ## Two versions of foolib in the repo, ensure resolver picks the correct version 97 98 mkdir z.mods 99 $BIN/javac -source 8 -d z.mods -modulepath z.modules \ 100 `find z.src/app z.src/foolib1 -name '*.java'` 101 mkdir z.mods/foolib2 102 $BIN/javac -source 8 -d z.mods/foolib2 `find z.src/foolib2 -name '*.java'` 103 104 mkdir z.pkgs 105 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/app jmod app 106 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib1 jmod foolib 107 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.pkgs -m z.mods/foolib2 jmod foolib 108 109 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo create 110 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo add z.pkgs/*.jmod 111 112 $BIN/jmod ${TESTTOOLVMOPTS} create -L z.mlib 113 $BIN/jmod ${TESTTOOLVMOPTS} add-repo -L z.mlib z.repo 114 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install -n app 115 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install app 116 OUT=`$BIN/java ${VMOPTS} -L z.mlib -m app | tr -d ' \n\r'` 117 compare Hello,foolib@2 $OUT 118 119 ## create OS/ARCH specific library and jmods 120 mkdir z.arch_pkgs 121 rm -rf z.mlib z.repo 122 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Bos -arch Barch -m z.mods/app jmod app 123 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Bos -arch Barch -m z.mods/foolib1 jmod foolib 124 $BIN/jpkg ${TESTTOOLVMOPTS} -d z.arch_pkgs -os Cos -arch Carch -m z.mods/foolib2 jmod foolib 125 126 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo create 127 $BIN/jrepo ${TESTTOOLVMOPTS} z.repo add z.arch_pkgs/*.jmod 128 129 $BIN/jmod ${TESTTOOLVMOPTS} create -L z.mlib -os Bos -arch Barch 130 $BIN/jmod ${TESTTOOLVMOPTS} add-repo -L z.mlib z.repo 131 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install -n app 132 $BIN/jmod ${TESTTOOLVMOPTS} -L z.mlib install app 133 OUT=`$BIN/java ${VMOPTS} -L z.mlib -m app | tr -d ' \n\r'` 134 compare Hello,foolib@1 $OUT 135 |