1 #!/bin/sh
   2 
   3 # Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
   4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   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 
  25 # @test
  26 # @bug 6332666 6863624 7180362 8003846 8074350 8074351 8130246 8149735 7102969
  27 #      8157138 8190904
  28 # @summary tests the capability of replacing the currency data with user
  29 #     specified currency properties file
  30 # @build PropertiesTest
  31 # @run shell/timeout=600 PropertiesTest.sh
  32 
  33 if [ "${TESTSRC}" = "" ]
  34 then
  35   echo "TESTSRC not set.  Test cannot execute.  Failed."
  36   exit 1
  37 fi
  38 echo "TESTSRC=${TESTSRC}"
  39 if [ "${TESTJAVA}" = "" ]
  40 then
  41   echo "TESTJAVA not set.  Test cannot execute.  Failed."
  42   exit 1
  43 fi
  44 echo "TESTJAVA=${TESTJAVA}"
  45 if [ "${TESTCLASSES}" = "" ]
  46 then
  47   echo "TESTCLASSES not set.  Test cannot execute.  Failed."
  48   exit 1
  49 fi
  50 echo "TESTCLASSES=${TESTCLASSES}"
  51 echo "CLASSPATH=${CLASSPATH}"
  52 
  53 # set platform-dependent variables
  54 OS=`uname -s`
  55 case "$OS" in
  56   SunOS | Linux | Darwin | AIX )
  57     PS=":"
  58     FS="/"
  59     ;;
  60   Windows* )
  61     PS=";"
  62     FS="/"
  63     ;;
  64   CYGWIN* )
  65     PS=";"
  66     FS="/"
  67     TESTJAVA=`cygpath -u ${TESTJAVA}`
  68     ;;
  69   * )
  70     echo "Unrecognized system!"
  71     exit 1;
  72     ;;
  73 esac
  74 
  75 failures=0
  76 
  77 run() {
  78     echo ''
  79     ${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp ${TESTCLASSES} $* 2>&1
  80     if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
  81 }
  82 
  83 PROPS=${TESTSRC}${FS}currency.properties
  84 
  85 
  86 # Dump built-in currency data
  87 
  88 run PropertiesTest -d dump1
  89 if [ ! -f dump1 ]; then  echo "file dump1 not created. Test cannot execute.  Failed."; exit 1; fi
  90 
  91 # Dump built-in currency data + overrides in properties file specified
  92 # by system property.
  93 
  94 run -Djava.util.currency.data=${PROPS} PropertiesTest -d dump2
  95 if [ ! -f dump2 ]; then  echo "file dump2 not created. Test cannot execute.  Failed."; exit 1; fi
  96 run PropertiesTest -c dump1 dump2 ${PROPS}
  97 
  98 
  99 # Dump built-in currency data + overrides in properties file copied into
 100 # JRE image.
 101 
 102 # Make a private copy of the jdk so we can write to the properties file location
 103 # without disturbing other users, including concurrently executing tests.
 104 WRITABLEJDK=.${FS}testjava
 105 cp -H -R $TESTJAVA $WRITABLEJDK || exit 1
 106 PROPLOCATION=${WRITABLEJDK}${FS}lib
 107 chmod -R u+w $WRITABLEJDK || exit 1
 108 cp ${PROPS} $PROPLOCATION || exit 1
 109 echo "Properties location: ${PROPLOCATION}"
 110 
 111 # run
 112 echo ''
 113 ${WRITABLEJDK}${FS}bin${FS}java ${TESTVMOPTS} -cp ${TESTCLASSES} PropertiesTest -d dump3
 114 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
 115 if [ ! -f dump3 ]; then  echo "file dump3 not created. Test cannot execute.  Failed."; exit 1; fi
 116 
 117 # run bug7102969 test
 118 echo ''
 119 ${WRITABLEJDK}${FS}bin${FS}java ${TESTVMOPTS} -cp ${TESTCLASSES} PropertiesTest bug7102969
 120 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
 121 
 122 # run bug8157138 test
 123 echo ''
 124 ${WRITABLEJDK}${FS}bin${FS}java ${TESTVMOPTS} -cp ${TESTCLASSES} PropertiesTest bug8157138
 125 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
 126 
 127 # run bug8190904 test
 128 echo ''
 129 ${WRITABLEJDK}${FS}bin${FS}java ${TESTVMOPTS} -cp ${TESTCLASSES} PropertiesTest bug8190904
 130 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
 131 
 132 # Cleanup
 133 rm -rf $WRITABLEJDK
 134 
 135 # compare the two dump files
 136 run PropertiesTest -c dump1 dump3 ${PROPS}
 137 
 138 
 139 # Results
 140 echo ''
 141 if [ $failures -gt 0 ];
 142   then echo "$failures tests failed";
 143   else echo "All tests passed"; fi
 144 exit $failures