duke@1: # ksrini@1395: # Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. duke@1: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@1: # duke@1: # This code is free software; you can redistribute it and/or modify it duke@1: # under the terms of the GNU General Public License version 2 only, as duke@1: # published by the Free Software Foundation. duke@1: # duke@1: # This code is distributed in the hope that it will be useful, but WITHOUT duke@1: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@1: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@1: # version 2 for more details (a copy is included in the LICENSE file that duke@1: # accompanied this code). duke@1: # duke@1: # You should have received a copy of the GNU General Public License version duke@1: # 2 along with this work; if not, write to the Free Software Foundation, duke@1: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@1: # ohair@554: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@554: # or visit www.oracle.com if you need additional information or have any ohair@554: # questions. duke@1: # duke@1: duke@1: # @test ksrini@1395: # @bug 4981566 5028634 5094412 6304984 7025786 7025789 8001112 duke@1: # @summary Check interpretation of -target and -source options duke@1: # @build CheckClassFileVersion jjg@287: # @run shell check.sh duke@1: duke@1: TESTJAVA=${TESTJAVA:?} duke@1: TC=${TESTCLASSES-.} duke@1: duke@1: J="$TESTJAVA/bin/java" duke@1: JC="$TESTJAVA/bin/javac" jjg@838: CFV="${TESTVMOPTS} -cp $TC CheckClassFileVersion" duke@1: duke@1: rm -f $TC/X.java $TC/X.java duke@1: echo 'public class X { }' > $TC/X.java duke@1: echo 'public enum Y { }' > $TC/Y.java duke@1: duke@1: duke@1: # Check class-file versions duke@1: duke@1: check() { duke@1: V=$1; shift duke@1: echo "+ javac $* [$V]" jjg@838: "$JC" ${TESTTOOLVMOPTS} -d $TC $* $TC/X.java && "$J" $CFV $TC/X.class $V || exit 2 duke@1: } duke@1: ksrini@1395: # check for all combinations of target values ksrini@1395: check_target() { ksrini@1395: check $1 -source $2 -target $3 ksrini@1395: check $1 -source $2 -target 1.${3} ksrini@1395: } ksrini@1395: # check for all combinations of source and target values ksrini@1395: check_source_target() { ksrini@1395: check_target $1 $2 $3 ksrini@1395: check_target $1 1.${2} $3 ksrini@1395: } ksrini@1395: duke@1: check 48.0 -source 1.4 jjg@287: duke@1: check 49.0 -source 1.4 -target 1.5 jjg@287: check 49.0 -source 1.5 -target 1.5 jjg@287: ksrini@1395: check_target 50.0 1.4 6 ksrini@1395: check_target 50.0 1.5 6 ksrini@1395: check_source_target 50.0 6 6 jjg@287: ksrini@1395: check_target 51.0 1.4 7 ksrini@1395: check_target 51.0 1.5 7 ksrini@1395: check_source_target 51.0 6 7 ksrini@1395: check_source_target 51.0 7 7 duke@1: ksrini@1395: check_target 52.0 1.4 8 ksrini@1395: check_target 52.0 1.5 8 ksrini@1395: check_source_target 52.0 6 8 ksrini@1395: check_source_target 52.0 7 8 ksrini@1395: check_source_target 52.0 8 8 ksrini@1395: ksrini@1395: # and finally the default with no options ksrini@1395: check 52.0 duke@1: duke@1: # Check source versions duke@1: duke@1: fail() { duke@1: echo "+ javac $*" jjg@838: if "$JC" ${TESTTOOLVMOPTS} -d $TC $*; then duke@1: echo "-- did not fail as expected" duke@1: exit 3 duke@1: else duke@1: echo "-- failed as expected" duke@1: fi duke@1: } duke@1: duke@1: pass() { duke@1: echo "+ javac $*" jjg@838: if "$JC" ${TESTTOOLVMOPTS} -d $TC $*; then duke@1: echo "-- passed" duke@1: else duke@1: echo "-- failed" duke@1: exit 4 duke@1: fi duke@1: } duke@1: jjg@287: # the following need to be updated when -source 7 features are available duke@1: checksrc14() { pass $* $TC/X.java; fail $* $TC/Y.java; } duke@1: checksrc15() { pass $* $TC/X.java; pass $* $TC/Y.java; } duke@1: checksrc16() { checksrc15 $* ; } jjg@287: checksrc17() { checksrc15 $* ; } darcy@1042: checksrc18() { checksrc15 $* ; } duke@1: duke@1: checksrc14 -source 1.4 duke@1: checksrc14 -source 1.4 -target 1.5 duke@1: duke@1: checksrc15 -source 1.5 jjg@287: checksrc15 -source 1.5 -target 1.5 duke@1: duke@1: checksrc16 -source 1.6 duke@1: checksrc16 -source 6 jjg@287: checksrc16 -source 1.6 -target 1.6 jjg@287: checksrc16 -source 6 -target 6 jjg@287: jjg@287: checksrc17 -source 1.7 jjg@287: checksrc17 -source 7 jjg@287: checksrc17 -source 1.7 -target 1.7 jjg@287: checksrc17 -source 7 -target 7 duke@1: darcy@1042: checksrc18 darcy@1042: checksrc18 -target 1.8 darcy@1042: checksrc18 -target 8 darcy@1042: checksrc18 -source 1.8 darcy@1042: checksrc18 -source 8 darcy@1042: checksrc18 -source 1.8 -target 1.8 darcy@1042: checksrc18 -source 8 -target 8 darcy@1042: duke@1: fail -source 1.5 -target 1.4 $TC/X.java duke@1: fail -source 1.6 -target 1.4 $TC/X.java duke@1: fail -source 6 -target 1.4 $TC/X.java duke@1: fail -source 1.6 -target 1.5 $TC/X.java duke@1: fail -source 6 -target 1.5 $TC/X.java darcy@1042: fail -source 7 -target 1.6 $TC/X.java darcy@1042: fail -source 8 -target 1.6 $TC/X.java darcy@1042: fail -source 8 -target 1.7 $TC/X.java