1#
2# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# This code is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License version 2 only, as
7# published by the Free Software Foundation.
8#
9# This code is distributed in the hope that it will be useful, but WITHOUT
10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12# version 2 for more details (a copy is included in the LICENSE file that
13# accompanied this code).
14#
15# You should have received a copy of the GNU General Public License version
16# 2 along with this work; if not, write to the Free Software Foundation,
17# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18#
19# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20# or visit www.oracle.com if you need additional information or have any
21# questions.
22#
23
24# @test
25# @bug 8044767 8139067
26# @summary Basic test case for ResourceBundle with modules;
27#          ResourceBundle.getBundle caller is in module named "test",
28#          resource bundles are grouped in main (module "mainbundles"),
29#          EU (module "eubundles"), and Asia (module "asiabundles").
30#          Also adds a jar file containing resource bundles to the class path.
31
32set -e
33
34if [ -z "$TESTJAVA" ]; then
35  if [ $# -lt 1 ]; then exit 1; fi
36  TESTJAVA="$1"; shift
37  COMPILEJAVA="${TESTJAVA}"
38  TESTSRC="`pwd`"
39  TESTCLASSES="`pwd`"
40fi
41
42JAVAC="$COMPILEJAVA/bin/javac"
43JAR="$COMPILEJAVA/bin/jar"
44JAVA="$TESTJAVA/bin/java"
45
46rm -rf mods
47
48CP=
49for I in main eu asia
50do
51  B=${I}bundles
52  mkdir -p mods/$B
53  CLASSES="`find $TESTSRC/src/$B -name '*.java'`"
54  if [ "x$CLASSES" != x ]; then
55    $JAVAC -g -d mods --module-source-path $TESTSRC/src $CP $CLASSES
56  fi
57  PROPS="`(cd $TESTSRC/src/$B; find . -name '*.properties')`"
58  if [ "x$PROPS" != x ]; then
59      for P in $PROPS
60      do
61        D=`dirname $P`
62        mkdir -p mods/$B/$D
63        cp $TESTSRC/src/$B/$P mods/$B/$D/
64      done
65  fi
66  CP="-cp mods/mainbundles"
67done
68
69mkdir -p mods/test
70$JAVAC -g -cp mods/mainbundles -d mods --module-source-path $TESTSRC/src \
71    `find $TESTSRC/src/test -name "*.java"`
72
73# Create a jar to be added to the class path. Expected only properties files are
74# picked up from the class path.
75rm -f extra.jar
76mkdir -p classes
77$JAVAC -d classes $TESTSRC/src/extra/jdk/test/resources/eu/*.java
78$JAR -cf extra.jar -C classes jdk/test/resources/eu \
79                   -C $TESTSRC/src/extra jdk/test/resources/asia
80
81STATUS=0
82
83echo "jdk.test.Main should load bundles using ResourceBundleProviders."
84$JAVA -p mods -m test/jdk.test.Main de fr ja ja-jp zh-tw en de ja-jp || STATUS=1
85
86echo "jdk.test.Main should NOT load bundles from the jar file specified by the class-path."
87$JAVA -cp extra.jar -p mods -m test/jdk.test.Main es vi && STATUS=1
88
89exit $STATUS
90