diff -Nru jtreg-4.2-b14/debian/changelog jtreg-4.2-b16/debian/changelog --- jtreg-4.2-b14/debian/changelog 2019-02-25 11:44:58.000000000 +0000 +++ jtreg-4.2-b16/debian/changelog 2020-01-11 23:31:57.000000000 +0000 @@ -1,3 +1,13 @@ +jtreg (4.2-b16-1) unstable; urgency=medium + + * Team upload. + * New upstream release + - Refreshed the patches + * Track the new releases from GitHub + * Standards-Version updated to 4.4.1 + + -- Emmanuel Bourg Sun, 12 Jan 2020 00:31:57 +0100 + jtreg (4.2-b14-1) unstable; urgency=medium * Team upload. diff -Nru jtreg-4.2-b14/debian/control jtreg-4.2-b16/debian/control --- jtreg-4.2-b14/debian/control 2019-02-25 11:44:25.000000000 +0000 +++ jtreg-4.2-b16/debian/control 2020-01-11 23:31:57.000000000 +0000 @@ -13,7 +13,7 @@ libjtharness-java, libxalan2-java, testng -Standards-Version: 4.3.0 +Standards-Version: 4.4.1 Vcs-Git: https://salsa.debian.org/java-team/jtreg.git Vcs-Browser: https://salsa.debian.org/java-team/jtreg Homepage: http://openjdk.java.net/jtreg diff -Nru jtreg-4.2-b14/debian/patches/add-jcommander-to-classpath.patch jtreg-4.2-b16/debian/patches/add-jcommander-to-classpath.patch --- jtreg-4.2-b14/debian/patches/add-jcommander-to-classpath.patch 2019-02-25 11:42:32.000000000 +0000 +++ jtreg-4.2-b16/debian/patches/add-jcommander-to-classpath.patch 2020-01-11 23:31:57.000000000 +0000 @@ -14,7 +14,7 @@ SearchPath classpath = paths.get(PathKind.CLASSPATH); --- a/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java +++ b/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java -@@ -771,16 +771,20 @@ +@@ -781,16 +781,20 @@ File md = workDir.getFile("modules"); if (needJUnit) install(params.getJUnitPath(), md); @@ -37,7 +37,7 @@ } // Extras: -@@ -872,8 +876,10 @@ +@@ -882,8 +886,10 @@ File md = workDir.getFile("modules"); if (needJUnit) install(params.getJUnitPath(), md); @@ -49,7 +49,7 @@ mp.append(md); } } else { -@@ -881,8 +887,10 @@ +@@ -891,8 +897,10 @@ if (needJUnit) fp.append(params.getJUnitPath()); diff -Nru jtreg-4.2-b14/debian/watch jtreg-4.2-b16/debian/watch --- jtreg-4.2-b14/debian/watch 2019-02-25 10:47:10.000000000 +0000 +++ jtreg-4.2-b16/debian/watch 2020-01-11 23:31:57.000000000 +0000 @@ -1,2 +1,2 @@ -version=3 -https://adopt-openjdk.ci.cloudbees.com/job/jtreg/lastSuccessfulBuild/artifact/jtreg-([\d\.]+(?:-b[0-9]+)?).tar.gz debian debian/orig-tar.sh +version=4 +https://github.com/openjdk/jtreg/tags .*/jtreg([\d\.]+(?:-b[0-9]+)?).tar.gz debian debian/orig-tar.sh diff -Nru jtreg-4.2-b14/.gitignore jtreg-4.2-b16/.gitignore --- jtreg-4.2-b14/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ jtreg-4.2-b16/.gitignore 2019-12-02 20:49:40.000000000 +0000 @@ -0,0 +1,4 @@ +/build/ +/webrev +.DS_Store +/.idea/ diff -Nru jtreg-4.2-b14/.hg_archival.txt jtreg-4.2-b16/.hg_archival.txt --- jtreg-4.2-b14/.hg_archival.txt 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/.hg_archival.txt 2019-12-02 20:49:40.000000000 +0000 @@ -1,4 +1,4 @@ repo: 9f51ef22f00a3d5b681472cacf3ce15868073103 -node: ec37d2900cd42987270f98423a60eb6297bdc37b +node: deee95d5d8ff6406b77c0d5b9297736eb7c98c6d branch: default -tag: jtreg4.2-b14 +tag: jtreg4.2-b16 diff -Nru jtreg-4.2-b14/.hgtags jtreg-4.2-b16/.hgtags --- jtreg-4.2-b14/.hgtags 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/.hgtags 2019-12-02 20:49:40.000000000 +0000 @@ -27,3 +27,4 @@ a13ec77e7adcc4c9ed434e664abc350abaacc045 jtreg4.2-b11 652902f7fb0ed0b4f307d61a799caf50a6e609be jtreg4.2-b12 7a38f21e077821a5015792e85b3793c90c81b866 jtreg4.2-b13 +ec37d2900cd42987270f98423a60eb6297bdc37b jtreg4.2-b14 diff -Nru jtreg-4.2-b14/make/build-all.sh jtreg-4.2-b16/make/build-all.sh --- jtreg-4.2-b14/make/build-all.sh 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/make/build-all.sh 2019-12-02 20:49:40.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/bash # -# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -50,12 +50,51 @@ exit 1 fi +case `uname` in CYGWIN*) CYGWIN=1 ;; *) CYGWIN=0 ;; esac + +native_path() { + if [ $CYGWIN == 1 ]; then echo `cygpath -w $1`; else echo $1; fi +} + +mixed_path() { + if [ $CYGWIN == 1 ]; then echo `cygpath -m $1`; else echo $1; fi +} + +get_scm_type() { + if [ -d .hg ]; then + echo "HG" + elif [ -d .git ]; then + echo "GIT" + else + echo "Error: unrecognized repository, it must be Git or Mercurial" >&2 + exit 1 + fi +} + +SCM_TYPE=`get_scm_type` + +get_root() { + case $SCM_TYPE in + HG) hg root ;; + GIT) git rev-parse --show-toplevel ;; + *) echo "Error: unknown SCM" >&2 ; exit 1 ;; + esac +} + +get_tag_info() { + case $SCM_TYPE in + HG) hg tags | grep jtreg | head -1 ;; + GIT) git tag | grep jtreg | tail -1 ;; + *) echo "Error: unknown SCM" >&2 ; exit 1 ;; + esac +} + export JAVA_HOME=$1 export PATH="$JAVA_HOME:$PATH" -if [ -n `which sha1sum` ]; then +if [ -n "`which sha1sum`" ]; then SHASUM=sha1sum; -elif [ -n `which shasum` ]; then +elif [ -n "`which shasum`" ]; then SHASUM="shasum -a 1" else echo "Error: can't find shasum or sha1sum" >&2 @@ -67,7 +106,9 @@ WGET=wget WGET_OPTS=${WGET_OPTS:--q} -ROOT=$(hg root) + +ROOT=`get_root` + BUILD_DIR=${BUILD_DIR:-${ROOT}/build} if [ "${SKIP_WGET:-}" = "" -a -d ${BUILD_DIR} ]; then @@ -129,7 +170,7 @@ ASMTOOLS_SRC=${ASMTOOLS_BUILD_DIR}/asmtools-${ASMTOOLS_VERSION} ASMTOOLS_DIST=${ASMTOOLS_BUILD_DIR}/build -${ANT} -DBUILD_DIR=${ASMTOOLS_DIST} -f ${ASMTOOLS_SRC}/build/build.xml +${ANT} -DBUILD_DIR=`native_path ${ASMTOOLS_DIST}` -f `native_path ${ASMTOOLS_SRC}/build/build.xml` ASMTOOLS_JAR=${ASMTOOLS_DIST}/binaries/lib/asmtools.jar ASMTOOLS_LICENSE=${ASMTOOLS_SRC}/LICENSE @@ -150,7 +191,7 @@ JTHARNESS_SRC=${JTHARNESS_BUILD_DIR}/jtharness-${JTHARNESS_VERSION} JTHARNESS_DIST=${JTHARNESS_BUILD_DIR}/build -${ANT} -DBUILD_DIR=${JTHARNESS_DIST} -f ${JTHARNESS_SRC}/build/build.xml +${ANT} -DBUILD_DIR=`native_path ${JTHARNESS_DIST}` -f `native_path ${JTHARNESS_SRC}/build/build.xml` JAVATEST_JAR=${JTHARNESS_DIST}/binaries/lib/javatest.jar JTHARNESS_LICENSE=${JTHARNESS_SRC}/legal/license.txt @@ -169,17 +210,17 @@ ASM_JAR=${JCOV_DEPS_DIR}/asm-6.2.jar ASM_JAR_CHECKSUM='1b6c4ff09ce03f3052429139c2a68e295cae6604' WGet ${MAVEN_REPO_URL}/org/ow2/asm/asm/6.2/asm-6.2.jar ${ASM_JAR} -echo "${ASM_JAR_CHECKSUM} ${ASM_JAR}" | ${SHASUM} --check - +echo "${ASM_JAR_CHECKSUM} ${ASM_JAR}" | ${SHASUM} --check - ASM_TREE_JAR=${JCOV_DEPS_DIR}/asm-tree-6.2.jar ASM_TREE_JAR_CHECKSUM='61570e046111559f38d4e0e580c005f75988c0a6' WGet ${MAVEN_REPO_URL}/org/ow2/asm/asm-tree/6.2/asm-tree-6.2.jar ${ASM_TREE_JAR} -echo "${ASM_TREE_JAR_CHECKSUM} ${ASM_TREE_JAR}" | ${SHASUM} --check - +echo "${ASM_TREE_JAR_CHECKSUM} ${ASM_TREE_JAR}" | ${SHASUM} --check - ASM_UTIL_JAR=${JCOV_DEPS_DIR}/asm-utils-6.2.jar ASM_UTIL_JAR_CHECKSUM='a9690730f92cc79eeadc20e400ebb41eccce10b1' WGet ${MAVEN_REPO_URL}/org/ow2/asm/asm-util/6.2/asm-util-6.2.jar ${ASM_UTIL_JAR} -echo "${ASM_UTIL_JAR_CHECKSUM} ${ASM_UTIL_JAR}" | ${SHASUM} --check - +echo "${ASM_UTIL_JAR_CHECKSUM} ${ASM_UTIL_JAR}" | ${SHASUM} --check - # Build jcov JCOV_SRC_ZIP=${JCOV_BUILD_DIR}/source.zip @@ -193,16 +234,16 @@ JCOV_SRC=${JCOV_BUILD_DIR}/jcov-${JCOV_VERSION} JCOV_DIST=${JCOV_BUILD_DIR}/build ( cd ${JCOV_SRC}/build -${ANT} -Dresult.dir=${JCOV_DIST} \ - -Dasm.jar=${ASM_JAR} \ - -Dasm.checksum=${ASM_JAR_CHECKSUM} \ - -Dasm.tree.jar=${ASM_TREE_JAR} \ +${ANT} -Dresult.dir=`native_path ${JCOV_DIST}` \ + -Dasm.jar=`native_path ${ASM_JAR}` \ + -Dasm.checksum=${ASM_JAR_CHECKSUM} \ + -Dasm.tree.jar=`native_path ${ASM_TREE_JAR}` \ -Dasm.tree.checksum=${ASM_TREE_JAR_CHECKSUM} \ - -Dasm.util.jar=${ASM_UTIL_JAR} \ + -Dasm.util.jar=`native_path ${ASM_UTIL_JAR}` \ -Dasm.util.checksum=${ASM_UTIL_JAR_CHECKSUM} \ - -Djavatestjar=${JAVATEST_JAR} \ - -Dverify.strict= \ - -f ${JCOV_SRC}/build/build.xml + -Djavatestjar=`native_path ${JAVATEST_JAR}` \ + -Dverify.strict= \ + -f `native_path ${JCOV_SRC}/build/build.xml` ) JCOV_JAR=${JCOV_DIST}/jcov_3.0/jcov.jar @@ -244,26 +285,27 @@ ## Set version and build numbers to the latest tagged version by default +TAG_INFO=`get_tag_info` if [ -z ${BUILD_NUMBER:-} ]; then - BUILD_NUMBER=`hg tags | grep jtreg | head -1 | sed 's/jtreg\([0-9]\.[0-9]\)-\(b[0-9]*\).*/\2/'` + BUILD_NUMBER=`echo $TAG_INFO | sed 's/jtreg\([0-9]\.[0-9]\)-\(b[0-9]*\).*/\2/'` fi if [ -z ${BUILD_VERSION:-} ]; then - BUILD_VERSION=`hg tags | grep jtreg | head -1 | sed 's/jtreg\([0-9]\.[0-9]\)-\(b[0-9]*\).*/\1/'` + BUILD_VERSION=`echo $TAG_INFO | sed 's/jtreg\([0-9]\.[0-9]\)-\(b[0-9]*\).*/\1/'` fi # Build jtreg cd ${ROOT}/make -make JUNIT_JAR=${JUNIT_JAR} \ +make JUNIT_JAR=`mixed_path ${JUNIT_JAR}` \ JUNIT_LICENSE=${JUNIT_LICENSE} \ - TESTNG_JAR=${TESTNG_JAR} \ + TESTNG_JAR=`mixed_path ${TESTNG_JAR}` \ TESTNG_LICENSE=${TESTNG_LICENSE} \ JCOMMANDER_JAR=${JCOMMANDER_JAR} \ ANT=${ANT} \ - ANT_JAR=${ANT_JAR} \ + ANT_JAR=`mixed_path ${ANT_JAR}` \ JCOV_JAR=${JCOV_JAR} \ JCOV_LICENSE=${JCOV_LICENSE} \ JCOV_NETWORK_SAVER_JAR=${JCOV_NETWORK_SAVER_JAR} \ - JAVATEST_JAR=${JAVATEST_JAR} \ + JAVATEST_JAR=`mixed_path ${JAVATEST_JAR}` \ JTHARNESS_LICENSE=${JTHARNESS_LICENSE} \ JTHARNESS_COPYRIGHT=${JTHARNESS_COPYRIGHT} \ ASMTOOLS_JAR=${ASMTOOLS_JAR} \ @@ -273,4 +315,3 @@ BUILD_NUMBER=${BUILD_NUMBER} \ JDKHOME=$JAVA_HOME \ ${MAKE_ARGS:-} - diff -Nru jtreg-4.2-b14/make/Rules.gmk jtreg-4.2-b16/make/Rules.gmk --- jtreg-4.2-b14/make/Rules.gmk 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/make/Rules.gmk 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,6 @@ # questions. # - #--------------------------------------------------------------------- # # Copy resources (*.properties) into classes directory from source tree @@ -71,9 +70,10 @@ echo "$(@F:%.jar=%)-BuildDate: `/bin/date +'%B %d, %Y'`" ; \ ) \ > $(@:$(IMAGES_DIR)/%.jar=$(BUILDDIR)/jarData/%/manifest.txt) + sh pkgsToFiles.sh $(CLASSDIR) $($(@F:%.jar=PKGS.JAR.%)) > $(@:$(IMAGES_DIR)/%.jar=$(BUILDDIR)/jarData/%/includes.txt) $(JAR) -cmf $(@:$(IMAGES_DIR)/%.jar=$(BUILDDIR)/jarData/%/manifest.txt) $@ \ $(JAR_COPYRIGHT) \ - `sh pkgsToFiles.sh $(CLASSDIR) $($(@F:%.jar=PKGS.JAR.%))` \ + @$(@:$(IMAGES_DIR)/%.jar=$(BUILDDIR)/jarData/%/includes.txt) \ $(patsubst $(CLASSDIR)/%,-C $(CLASSDIR) %,$(sort $(FILES.JAR.$(@F:%.jar=%)))) \ $(JAR_EXTRAS) $(CHMOD) a-w $@ diff -Nru jtreg-4.2-b14/plugins/idea/resources/META-INF/plugin.xml jtreg-4.2-b16/plugins/idea/resources/META-INF/plugin.xml --- jtreg-4.2-b14/plugins/idea/resources/META-INF/plugin.xml 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/plugins/idea/resources/META-INF/plugin.xml 2019-12-02 20:49:40.000000000 +0000 @@ -26,15 +26,14 @@ jtreg jtreg Test Support - 1.9 + 1.10 jtreg framework. ]]> -
  • Add support for IntelliJ IDE2018.3
  • -
  • Allow support for external library resolution
  • +
  • Add support for IntelliJ IDE2019.3
  • ]]>
    diff -Nru jtreg-4.2-b14/plugins/idea/src/com/oracle/plugin/jtreg/components/JTRegFileManagerListener.java jtreg-4.2-b16/plugins/idea/src/com/oracle/plugin/jtreg/components/JTRegFileManagerListener.java --- jtreg-4.2-b14/plugins/idea/src/com/oracle/plugin/jtreg/components/JTRegFileManagerListener.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/plugins/idea/src/com/oracle/plugin/jtreg/components/JTRegFileManagerListener.java 2019-12-02 20:49:40.000000000 +0000 @@ -41,7 +41,6 @@ import com.intellij.openapi.roots.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Alarm; -import com.intellij.util.containers.hash.HashMap; import com.oracle.plugin.jtreg.util.JTRegUtils; import org.jetbrains.annotations.NotNull; diff -Nru jtreg-4.2-b14/plugins/idea/src/com/oracle/plugin/jtreg/configuration/JTRegConfigurationRunnableState.java jtreg-4.2-b16/plugins/idea/src/com/oracle/plugin/jtreg/configuration/JTRegConfigurationRunnableState.java --- jtreg-4.2-b14/plugins/idea/src/com/oracle/plugin/jtreg/configuration/JTRegConfigurationRunnableState.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/plugins/idea/src/com/oracle/plugin/jtreg/configuration/JTRegConfigurationRunnableState.java 2019-12-02 20:49:40.000000000 +0000 @@ -38,6 +38,7 @@ import com.intellij.execution.testframework.SearchForTestsTask; import com.intellij.execution.testframework.TestSearchScope; import com.intellij.execution.ui.DefaultJreSelector; +import com.intellij.openapi.module.Module; import com.intellij.openapi.projectRoots.JdkUtil; import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; @@ -150,7 +151,6 @@ return javaParameters; } - @Override protected void configureRTClasspath(JavaParameters javaParameters) { JTRegService jtregSettings = JTRegService.getInstance(getConfiguration().getProject()); javaParameters.getClassPath().add(jtregSettings.getJTRegDir() + "/lib/jtreg.jar"); @@ -160,6 +160,10 @@ javaParameters.getClassPath().add(jtregSettings.getJTRegDir() + "/lib/asmtools.jar"); } + protected void configureRTClasspath(JavaParameters javaParameters, Module module) throws CantRunException { + configureRTClasspath(javaParameters); + } + @Override protected List getNamedParams(String parameters) { return Stream.of(parameters.split(" ")).collect(Collectors.toList()); diff -Nru jtreg-4.2-b14/src/share/bin/jtreg.sh jtreg-4.2-b16/src/share/bin/jtreg.sh --- jtreg-4.2-b14/src/share/bin/jtreg.sh 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/bin/jtreg.sh 2019-12-02 20:49:40.000000000 +0000 @@ -64,7 +64,7 @@ case "`uname -s`" in CYGWIN* ) cygwin=1 ;; - Linux ) if grep -q Microsoft /proc/version ; then wsl=1 ; fi ;; + Linux ) if grep -qi Microsoft /proc/version ; then wsl=1 ; fi ;; esac diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/i18n.properties jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/i18n.properties --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/i18n.properties 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/i18n.properties 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/RegressionParameters.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/RegressionParameters.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/RegressionParameters.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/RegressionParameters.java 2019-12-02 20:49:40.000000000 +0000 @@ -475,7 +475,7 @@ return matchListFilter; } - TestFilter matchListFilter = UNSET; + private TestFilter matchListFilter = UNSET; /** * {@inheritDoc} @@ -545,6 +545,34 @@ private static KeywordsTestFilter UNSET_KEYWORDS_FILTER = new KeywordsTestFilter(UNSET); + @Override + public TestFilter getPriorStatusFilter() { + if (priorStatusFilter == UNSET) { + final TestFilter psf = super.getPriorStatusFilter(); + if (psf == null) { + priorStatusFilter = null; + } else { + priorStatusFilter = new CachingTestFilter( + "jtregPriorStatusFilter", + "Select tests which match a specified status", + "Test did not match a specified status") { + @Override + protected String getCacheKey(TestDescription td) { + return td.getRootRelativeURL(); + } + + @Override + public boolean getCacheableValue(TestDescription td) throws Fault { + return psf.accepts(td); + } + }; + } + } + return priorStatusFilter; + } + + private CachingTestFilter priorStatusFilter = UNSET; + //--------------------------------------------------------------------- // The following (load and save) are an interim consequence of not using proper diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/RegressionTestFinder.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/RegressionTestFinder.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/RegressionTestFinder.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/RegressionTestFinder.java 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -200,37 +200,49 @@ } try { - cs.init(new BufferedReader(new FileReader(file))); + LineCounterBufferedReader r = new LineCounterBufferedReader(new FileReader(file)); + cs.init(r); if (super_fastScan) cs.setFastScan(true); String comment = cs.readComment(); + int commentLine = r.lineNumber; while (comment != null) { @SuppressWarnings({"unchecked", "cast"}) // temporary, to cover transition generifying TestFinder Map tagValues = (Map) parseComment(comment, file); // Look ahead to see if there are more comments - comment = cs.readComment(); + String nextComment = cs.readComment(); + int nextCommentLine = r.lineNumber; - if (tagValues.isEmpty()) - continue; + if (!tagValues.isEmpty()) { + if (tagValues.get("id") == null) { + // if there are more comments to come, or if there have already + // been additional comments, set an explicit id for each set of tags + if ((nextComment != null && nextComment.trim().startsWith("@test")) || testDescNumber != 0) { + String test = tagValues.get("test"); + Matcher m; + String id = (test != null + && (m = Pattern.compile("id=(?[A-Za-z0-9-_]+)\\b.*").matcher(test)).matches()) + ? m.group("id") + : "id" + testDescNumber; + tagValues.put("id", id); + } + testDescNumber++; + } - if (tagValues.get("id") == null) { - // if there are more comments to come, or if there have already - // been additional comments, set an explicit id for each set of tags - if ((comment != null && comment.trim().startsWith("@test")) || testDescNumber != 0) - tagValues.put("id", "id" + (new Integer(testDescNumber)).toString()); - testDescNumber++; - } + // The "test" marker can now be removed so that we don't waste + // space unnecessarily. We need to do the remove *after* the + // isEmpty() check because of the potential to interfere with + // defaults based on file extension. (i.e. The TD /* @test */ + // still needs to evaluate to a valid test description.) + tagValues.remove("test"); - // The "test" marker can now be removed so that we don't waste - // space unnecessarily. We need to do the remove *after* the - // isEmpty() check because of the potential to interfere with - // defaults based on file extension. (i.e. The TD /* @test */ - // still needs to evaluate to a valid test description.) - tagValues.remove("test"); + foundTestDescription(tagValues, file, commentLine); + } - foundTestDescription(tagValues, file, /*line*/0); + comment = nextComment; + commentLine = nextCommentLine; } } catch (FileNotFoundException e) { @@ -248,6 +260,43 @@ } } + private class LineCounterBufferedReader extends BufferedReader { + int lineNumber; + + LineCounterBufferedReader(FileReader r) { + super(r); + lineNumber = 1; + } + @Override + public int read() throws IOException { + int ch = super.read(); + checkNewline(ch); + return ch; + } + + @Override + public String readLine() throws IOException { + String line = super.readLine(); + lineNumber++; + return line; + } + + @Override + public int read(char[] buf, int offset, int length) throws IOException { + int n = super.read(buf, offset, length); + for (int i = offset; i < offset + n; i++) { + checkNewline(buf[i]); + } + return n; + } + + private void checkNewline(int ch) { + if (ch == '\n') { + lineNumber++; + } + } + } + protected void scanTestNGFile(File tngRoot, File file) throws TestSuite.Fault { Map tagValues; if (isTestNGTest(file)) { @@ -771,7 +820,7 @@ /** * Verify that the provided set of keys are allowed for the current * test-suite. The set of keys is stored in the system property - * env.regtest.key. + * {@code env.regtest.key}. * * @param tagValues The map of all of the current tag values. * @param value The value of the entry currently being processed. diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/TestProperties.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/TestProperties.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/config/TestProperties.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/config/TestProperties.java 2019-12-02 20:49:40.000000000 +0000 @@ -280,7 +280,7 @@ } private int getInt(String propertyName, int defaultValue) { - String v = properties.getProperty("maxOutputSize"); + String v = properties.getProperty(propertyName); try { if (v != null) { return Integer.parseInt(v.trim()); diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/CompileAction.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/CompileAction.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/CompileAction.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/CompileAction.java 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -355,6 +355,12 @@ status = jcod(jcodArgs); if (status.isPassed() && runJavac) { javacArgs = getJavacCommandArgs(javacArgs); + for (String arg: javacArgs) { + if (arg.startsWith("-J")) { + othervmOverrideReasons.add("JVM options specified for compiler"); + break; + } + } if (explicitAnnotationProcessingRequested(javacArgs) && !getExtraModuleConfigOptions(Modules.Phase.DYNAMIC).isEmpty()) { othervmOverrideReasons.add("additional runtime exports needed for annotation processing"); @@ -554,8 +560,13 @@ File argFile = getArgFile(); try (BufferedWriter w = new BufferedWriter(new FileWriter(argFile))) { for (String arg: javacArgs) { - w.write(arg); - w.newLine(); + if (arg.startsWith("-J")) { + // remove -J for now; it will be added back later + javacVMOpts.add(arg.substring(2)); + } else { + w.write(arg); + w.newLine(); + } } } catch (IOException e) { return error(COMPILE_CANT_WRITE_ARGS); diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/RegressionScript.java 2019-12-02 20:49:40.000000000 +0000 @@ -299,8 +299,10 @@ } if (errmsg != null) { msgPW.println(errmsg); - msgPW.println("Test result (overridden): " + status); - status = error("failed to clean up files after test"); + msgPW.println("WARNING: failed to clean up files after test"); + if (!agents.isEmpty()) { + msgPW.println("WARNING: closing agent(s)"); + } closeAgents(); } } @@ -379,6 +381,7 @@ populateActionTable(); Expr.Context exprContext = params.getExprContext(); + Map testProps = getTestProperties(); for (String runCmd : runCmds) { // e.g. reason compile/fail/ref=Foo.ref -debug Foo.java // where "reason" indicates why the action should run @@ -406,7 +409,7 @@ continue; } Action action = (Action) (c.getDeclaredConstructor().newInstance()); - action.init(opts, processArgs(args, exprContext), getReason(tokens), this); + action.init(opts, processArgs(args, exprContext, testProps), getReason(tokens), this); actionList.add(action); } catch (IllegalAccessException e) { if (stopOnError) @@ -421,7 +424,8 @@ } - private List processArgs(List args, Expr.Context c) throws TestSuite.Fault, Expr.Fault { + private List processArgs(List args, Expr.Context c, Map testProps) + throws TestSuite.Fault, Expr.Fault, ParseException { if (!testSuite.getAllowSmartActionArgs(td)) return args; @@ -434,21 +438,27 @@ } List newArgs = new ArrayList<>(); for (String arg : args) { - newArgs.add(evalNames(arg, c)); + newArgs.add(evalNames(arg, c, testProps)); } return newArgs; } private static final Pattern namePattern = Pattern.compile("\\$\\{([A-Za-z0-9._]+)\\}"); - private static String evalNames(String arg, Expr.Context c) throws Expr.Fault { + private static String evalNames(String arg, Expr.Context c, Map testProps) + throws Expr.Fault, ParseException { Matcher m = namePattern.matcher(arg); StringBuffer sb = null; while (m.find()) { if (sb == null) { sb = new StringBuffer(); } - m.appendReplacement(sb, c.get(m.group(1))); + String name = m.group(1); + String value = testProps.containsKey(name) ? testProps.get(name) : c.get(name); + if ("null".equals(value)) { + throw new ParseException("unset property " + name); + } + m.appendReplacement(sb, value); } if (sb == null) { return arg; @@ -1077,7 +1087,7 @@ // Get the standard properties to be set for tests - Map getTestProperties() throws TestClassException { + Map getTestProperties() { Map p = new LinkedHashMap<>(); // The following will be added to javac.class.path on the test JVM switch (getExecMode()) { diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/ScratchDirectory.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/ScratchDirectory.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/exec/ScratchDirectory.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/exec/ScratchDirectory.java 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -230,27 +230,44 @@ return ok; } - boolean delete(File f, Set cantDelete, PrintWriter log) { - if (f.delete()) { + private boolean delete(File f, Set cantDelete, PrintWriter log) { + // optimistically assume the enclosing directory is writable + if (f.delete() && !f.exists()) { cantDelete.remove(f); return true; - } else { -// // See CODETOOLS-7901369 -// // The following needs JDK 1.6, and/or convert jtreg to use nio.file.Path -// if (!f.canWrite()) { -// if (f.setWritable(true) && f.delete()) { -// cantDelete.remove(f); -// return true; -// } -// } - if (verboseScratchDir) { - log.println("warning: failed to delete " - + (f.isDirectory() ? "directory " : "") - + f); - } - cantDelete.add(f); - return false; } + + // retry if the enclosing directory was not writable and can be made writable + File dir = f.getParentFile(); + if (dir != null && !dir.canWrite() && setWritable(dir, log)) { + return delete(f, cantDelete, log); + } + + if (verboseScratchDir) { + log.println("warning: failed to delete " + + (f.isDirectory() ? "directory " : "") + + f); + } + cantDelete.add(f); + return false; + } + + private boolean setWritable(File dir, PrintWriter log) { + // optimistically assume the enclosing directory is writable + if (dir.setWritable(true)) { + return true; + } + + // retry if the enclosing directory was not writable and can be made writable + File parent = dir.getParentFile(); + if (parent != null && !parent.canWrite() && setWritable(parent, log)) { + return setWritable(dir, log); + } + + if (verboseScratchDir) { + log.println("warning: failed to set directory writable: " + dir); + } + return false; } // diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/report/RegressionReporter.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/report/RegressionReporter.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/report/RegressionReporter.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/report/RegressionReporter.java 2019-12-02 20:49:40.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,12 +42,13 @@ import java.util.Map; import java.util.Set; -import com.sun.javatest.CompositeFilter; +import com.sun.javatest.TestFilter; +import com.sun.javatest.regtest.Main.Fault; import com.sun.javatest.regtest.config.RegressionParameters; import com.sun.javatest.regtest.config.RegressionTestSuite; import com.sun.javatest.regtest.config.TestManager; -import com.sun.javatest.regtest.Main.Fault; import com.sun.javatest.report.Report; +import com.sun.javatest.report.ReportSettings; import com.sun.javatest.util.HTMLWriter; /** @@ -61,8 +62,8 @@ this.log = log; } - @SuppressWarnings("deprecation") - public void report(RegressionParameters params, ElapsedTimeHandler elapsedTimeHandler, TestStats testStats, boolean quiet) { + public void report(RegressionParameters params, ElapsedTimeHandler elapsedTimeHandler, + TestStats testStats, TestFilter filter, boolean quiet) { File rd = params.getReportDir(); File wd = params.getWorkDirectory().getRoot(); @@ -76,10 +77,11 @@ } Report r = new Report(); - Report.Settings s = new Report.Settings(params); + ReportSettings s = new ReportSettings(params); if (reportKinds.contains("html")) { s.setEnableHtmlReport(true); s.setHtmlMainReport(true, true); + s.setShowKflReport(false); } if (reportKinds.contains("text")) { s.setEnablePlainReport(true); @@ -87,7 +89,7 @@ if (reportKinds.contains("xml")) { s.setEnableXmlReport(true); } - s.setFilter(new CompositeFilter(params.getFilters())); + s.setFilter(filter); if (backups == null) s.setEnableBackups(false); else { @@ -99,7 +101,7 @@ } } rd.mkdirs(); - r.writeReport(s, rd); + r.writeReports(s, rd); if (s.isPlainEnabled()) { if (elapsedTimeHandler != null) elapsedTimeHandler.report(r); diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/i18n.properties jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/i18n.properties --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/i18n.properties 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/i18n.properties 2019-12-02 20:49:40.000000000 +0000 @@ -230,12 +230,21 @@ tests must be provided. The default location is "./JTwork". To specify an \ alternate directory, use -workDir. help.main.nr.desc=Do not generate a final report. +help.main.report.desc=Configure the report generated after tests are run. +help.main.report.arg= +help.main.report.none.desc=Do not generate a report; equivalent to -noreport. +help.main.report.executed.desc=Include tests executed in the latest run +help.main.report.all-executed.desc=Include all tests that have been executed in \ + current work directory +help.main.report.all.desc=Include all tests that are present in the test suite, \ + whether or not they have been executed help.main.startHttpd.desc=Start the http server to view test results help.main.showGroups.desc=Show the expansion (to files and directories) of the \ groups given on the command line. To see the expansion of all the groups \ in a test suite, specify the name of the test suite. -help.main.show.desc=Show selected information from the results file for a test -help.main.show.arg=Name of information in the results file, such as "rerun". +help.main.show.desc=Show information from a section in the results file for a test. \ + For example, -show:rerun +help.main.show.arg= help.main.w.desc=Location for .class files, .jtr files, etc. "./JTwork" is default help.main.w.arg= diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/JarFinder.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/JarFinder.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/JarFinder.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/JarFinder.java 2019-12-02 20:49:40.000000000 +0000 @@ -100,6 +100,11 @@ String ssp = uri.getRawSchemeSpecificPart(); int sep = ssp.lastIndexOf("!"); uri = new URI(ssp.substring(0, sep)); + } else if (uri.getScheme().equals("file")) { + // not a jar, try the root path of class files + String ssp = uri.getRawSchemeSpecificPart(); + int sep = ssp.indexOf(resName); + uri = new URI("file://" + ssp.substring(0, sep)); } if (uri.getScheme().equals("file")) result.append(new File(uri.getPath())); diff -Nru jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/Tool.java jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/Tool.java --- jtreg-4.2-b14/src/share/classes/com/sun/javatest/regtest/tool/Tool.java 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/classes/com/sun/javatest/regtest/tool/Tool.java 2019-12-02 20:49:40.000000000 +0000 @@ -53,6 +53,7 @@ import java.util.EnumSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -62,12 +63,15 @@ import javax.swing.Timer; import com.sun.interview.Interview; +import com.sun.javatest.AllTestsFilter; import com.sun.javatest.Harness; import com.sun.javatest.InterviewParameters; import com.sun.javatest.JavaTestSecurityManager; import com.sun.javatest.Keywords; +import com.sun.javatest.ParameterFilter; import com.sun.javatest.ProductInfo; import com.sun.javatest.Status; +import com.sun.javatest.StatusFilter; import com.sun.javatest.TestEnvironment; import com.sun.javatest.TestFilter; import com.sun.javatest.TestFinder; @@ -323,18 +327,47 @@ new Option(NONE, MAIN, "ro-nr", "-nr", "-noreport") { @Override public void process(String opt, String arg) { - noReportFlag = true; + reportMode = ReportMode.NONE; } }, new Option(STD, MAIN, "ro-nr", "-show") { @Override public void process(String opt, String arg) { - noReportFlag = true; + reportMode = ReportMode.NONE; showStream = arg; } }, + new Option(STD, MAIN, "ro-nr", "-report") { + @Override + public String[] getChoices() { + String[] values = new String[ReportMode.values().length]; + int i = 0; + for (ReportMode m: ReportMode.values()) + values[i++] = m.toString().toLowerCase(Locale.US).replace("_", "-"); + return values; + } + + @Override + public void process(String opt, String arg) throws BadArgs { + switch (arg) { + case "none": + reportMode = ReportMode.NONE; + break; + case "executed": + reportMode = ReportMode.EXECUTED; + break; + case "all-executed": + reportMode = ReportMode.ALL_EXECUTED; + break; + case "all": + reportMode = ReportMode.ALL; + break; + } + } + }, + new Option(STD, TIMEOUT, "", "-timeout", "-timeoutFactor") { @Override public void process(String opt, String arg) throws BadArgs { @@ -1121,11 +1154,15 @@ envVarArgs.add("CPAPPEND=" + filesToAbsolutePath(classPathAppendArg)); } + if (reportMode == null) { + reportMode = ReportMode.ALL_EXECUTED; + } + if (workDirArg == null) { workDirArg = new File("JTwork"); } - if (reportDirArg == null && !noReportFlag) { + if (reportDirArg == null && reportMode != ReportMode.NONE) { reportDirArg = new File("JTreport"); } @@ -1159,7 +1196,7 @@ makeDir(new File(workDirArg, "scratch"), true); - if (!noReportFlag) { + if (reportMode != ReportMode.NONE) { makeDir(reportDirArg, false); testManager.setReportDirectory(reportDirArg); @@ -1288,7 +1325,7 @@ out.println("Overall summary:"); } testStats.showResultStats(out); - if (!noReportFlag) { + if (reportMode != ReportMode.NONE) { RegressionReporter r = new RegressionReporter(out); r.report(testManager); } @@ -1798,7 +1835,7 @@ private TestStats batchHarness(RegressionParameters params, boolean quiet) throws Fault, Harness.Fault, InterruptedException { boolean reportRequired = - !noReportFlag && !Boolean.getBoolean("javatest.noReportRequired"); + reportMode != ReportMode.NONE && !Boolean.getBoolean("javatest.noReportRequired"); try { TestStats stats = new TestStats(); @@ -1913,7 +1950,39 @@ if (reportRequired) { RegressionReporter r = new RegressionReporter(out); - r.report(params, elapsedTimeHandler, stats, quiet); + TestFilter tf; + if (reportOnlyFlag) { + ParameterFilter pf = new ParameterFilter(); + pf.update(params); + tf = pf; + } else { + switch (reportMode) { + case NONE: + default: + throw new IllegalStateException(); + + case EXECUTED: + ParameterFilter pf = new ParameterFilter(); + pf.update(params); + tf = pf; + break; + + case ALL_EXECUTED: + boolean[] statusValues = new boolean[Status.NUM_STATES]; + statusValues[Status.PASSED] = true; + statusValues[Status.FAILED] = true; + statusValues[Status.ERROR] = true; + statusValues[Status.NOT_RUN] = false; + tf = new StatusFilter(statusValues, params.getWorkDirectory().getTestResultTable()); + break; + + case ALL: + tf = new AllTestsFilter(); + break; + } + + } + r.report(params, elapsedTimeHandler, stats, tf, quiet); } if (!reportOnlyFlag && !quiet) @@ -2083,7 +2152,7 @@ addEnvVars(envVars, "PATH"); // accept user's path, for now } else { addEnvVars(envVars, DEFAULT_UNIX_ENV_VARS); - addEnvVars(envVars, "PATH=/bin:/usr/bin"); + addEnvVars(envVars, "PATH=/bin:/usr/bin:/usr/sbin"); } addEnvVars(envVars, envVarArgs); for (Map.Entry e: System.getenv().entrySet()) { @@ -2220,8 +2289,9 @@ private JDK testJDK; private boolean guiFlag; private boolean reportOnlyFlag; - private boolean noReportFlag; private String showStream; + public enum ReportMode { NONE, EXECUTED, ALL_EXECUTED, ALL }; + private ReportMode reportMode; private boolean allowSetSecurityManagerFlag = true; private static Verbose verbose; private boolean httpdFlag; diff -Nru jtreg-4.2-b14/src/share/doc/javatest/regtest/faq.md jtreg-4.2-b16/src/share/doc/javatest/regtest/faq.md --- jtreg-4.2-b14/src/share/doc/javatest/regtest/faq.md 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/doc/javatest/regtest/faq.md 2019-12-02 20:49:40.000000000 +0000 @@ -1983,7 +1983,7 @@ automatically propagated into the test's JVM are: * Linux and Solaris: - * `PATH` is set to `/bin:/usr/bin` + * `PATH` is set to `/bin:/usr/bin:/usr/sbin` * The following are propogated from the user's environment: `DISPLAY`, `HOME` diff -Nru jtreg-4.2-b14/src/share/doc/javatest/regtest/tag-spec.html jtreg-4.2-b16/src/share/doc/javatest/regtest/tag-spec.html --- jtreg-4.2-b14/src/share/doc/javatest/regtest/tag-spec.html 2019-02-07 19:19:28.000000000 +0000 +++ jtreg-4.2-b16/src/share/doc/javatest/regtest/tag-spec.html 2019-12-02 20:49:40.000000000 +0000 @@ -1,6 +1,6 @@