# HG changeset patch # User jjg # Date 1459462850 25200 # Node ID e04318f39f9235a6b7066bcc52dec36c1000bf1e # Parent 28d33fb9097f09816c0d6d24b2ba2221375a4eb1 8152897: refactor ToolBox to allow reduced documented dependencies Reviewed-by: vromero diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ClassPathTest.java --- a/langtools/test/jdk/jshell/ClassPathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ClassPathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,7 +28,8 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap * @library /tools/lib - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @build KullaTesting TestingInputStream Compiler * @run testng ClassPathTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/CommandCompletionTest.java --- a/langtools/test/jdk/jshell/CommandCompletionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/CommandCompletionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -30,7 +30,8 @@ * jdk.jdeps/com.sun.tools.javap * jdk.jshell/jdk.internal.jshell.tool * @library /tools/lib - * @build ReplToolTesting TestingInputStream Compiler ToolBox + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @build ReplToolTesting TestingInputStream Compiler * @run testng CommandCompletionTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/Compiler.java --- a/langtools/test/jdk/jshell/Compiler.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/Compiler.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -30,6 +30,10 @@ import java.util.jar.Attributes; import java.util.jar.Manifest; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class Compiler { private final ToolBox tb = new ToolBox(); @@ -57,7 +61,7 @@ public void compile(Path directory, String...sources) { Path classDir = getClassDir(); - tb.new JavacTask() + new JavacTask(tb) .options("-d", classDir.resolve(directory).toString()) .sources(sources) .run(); @@ -73,7 +77,7 @@ Path classDirPath = getClassDir(); Path baseDir = classDirPath.resolve(directory); Path jarPath = baseDir.resolve(jarName); - tb.new JarTask(jarPath.toString()) + new JarTask(tb, jarPath.toString()) .manifest(manifest) .baseDir(baseDir.toString()) .files(files).run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/CompletionSuggestionTest.java --- a/langtools/test/jdk/jshell/CompletionSuggestionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/CompletionSuggestionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,7 +29,8 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap * @library /tools/lib - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @build KullaTesting TestingInputStream Compiler * @run testng CompletionSuggestionTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ComputeFQNsTest.java --- a/langtools/test/jdk/jshell/ComputeFQNsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ComputeFQNsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -26,10 +26,10 @@ * @bug 8131027 * @summary Test Get FQNs * @library /tools/lib - * @build KullaTesting TestingInputStream ToolBox Compiler * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @build KullaTesting TestingInputStream Compiler * @run testng ComputeFQNsTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ErrorTranslationTest.java --- a/langtools/test/jdk/jshell/ErrorTranslationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ErrorTranslationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,7 +29,7 @@ * jdk.jdeps/com.sun.tools.javap * jdk.jshell/jdk.internal.jshell.tool * @library /tools/lib - * @build KullaTesting TestingInputStream ExpectedDiagnostic ToolBox Compiler + * @build KullaTesting TestingInputStream ExpectedDiagnostic toolbox.ToolBox Compiler * @run testng ErrorTranslationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ImportTest.java --- a/langtools/test/jdk/jshell/ImportTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ImportTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,7 +28,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap * @library /tools/lib - * @build KullaTesting TestingInputStream ToolBox ExpectedDiagnostic + * @build KullaTesting TestingInputStream toolbox.Task.ExpectedDiagnostic * @run testng ImportTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/InferTypeTest.java --- a/langtools/test/jdk/jshell/InferTypeTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/InferTypeTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,7 +29,7 @@ * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build KullaTesting TestingInputStream toolbox.ToolBox Compiler * @run testng InferTypeTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/StartOptionTest.java --- a/langtools/test/jdk/jshell/StartOptionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/StartOptionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,7 +29,7 @@ * jdk.jdeps/com.sun.tools.javap * jdk.jshell/jdk.internal.jshell.tool * @library /tools/lib - * @build Compiler ToolBox + * @build Compiler toolbox.ToolBox * @run testng StartOptionTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ToolBasicTest.java --- a/langtools/test/jdk/jshell/ToolBasicTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ToolBasicTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -24,11 +24,12 @@ /* * @test * @bug 8143037 8142447 8144095 8140265 8144906 8146138 8147887 8147886 8148316 8148317 + * @summary Tests for Basic tests for REPL tool * @requires os.family != "solaris" - * @summary Tests for Basic tests for REPL tool * @library /tools/lib * @ignore 8139873 - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @build KullaTesting TestingInputStream Compiler * @run testng/timeout=600 ToolBasicTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ToolFormatTest.java --- a/langtools/test/jdk/jshell/ToolFormatTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ToolFormatTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -30,7 +30,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap * jdk.jshell/jdk.internal.jshell.tool - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build KullaTesting TestingInputStream toolbox.ToolBox Compiler * @run testng ToolFormatTest */ import java.util.ArrayList; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/jdk/jshell/ToolReloadTest.java --- a/langtools/test/jdk/jshell/ToolReloadTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/jdk/jshell/ToolReloadTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -31,7 +31,7 @@ * jdk.jdeps/com.sun.tools.javap * jdk.jshell/jdk.internal.jshell.tool * @library /tools/lib - * @build KullaTesting TestingInputStream ToolBox Compiler + * @build KullaTesting TestingInputStream toolbox.ToolBox Compiler * @run testng ToolReloadTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/doclint/tool/PathsTest.java --- a/langtools/test/tools/doclint/tool/PathsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/doclint/tool/PathsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -28,18 +28,11 @@ * @library /tools/lib * @modules jdk.compiler/com.sun.tools.doclint * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.compiler/com.sun.tools.javac.util - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask * @run main PathsTest */ -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.doclint.DocLint; -import com.sun.tools.doclint.DocLint.BadArgs; import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -48,6 +41,13 @@ import java.util.regex.Pattern; import javax.tools.StandardLocation; import javax.tools.JavaFileManager; +import javax.tools.ToolProvider; + +import com.sun.tools.doclint.DocLint; +import com.sun.tools.doclint.DocLint.BadArgs; + +import toolbox.JarTask; +import toolbox.ToolBox; public class PathsTest { public static void main(String... args) throws Exception { @@ -117,9 +117,10 @@ File createJar() throws IOException { File f = new File("test.jar"); - try (JavaFileManager fm = new JavacFileManager(new Context(), false, null)) { + try (JavaFileManager fm = ToolProvider.getSystemJavaCompiler() + .getStandardFileManager(null, null, null)) { ToolBox tb = new ToolBox(); - tb.new JarTask(f.getPath()) + new JarTask(tb, f.getPath()) .files(fm, StandardLocation.PLATFORM_CLASS_PATH, "java.lang.*") .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/4846262/CheckEBCDICLocaleTest.java --- a/langtools/test/tools/javac/4846262/CheckEBCDICLocaleTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/4846262/CheckEBCDICLocaleTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,10 +27,9 @@ * @summary check that javac operates correctly in EBCDIC locale * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox * @run main CheckEBCDICLocaleTest */ @@ -45,6 +44,8 @@ import java.util.Arrays; import java.util.List; +import toolbox.ToolBox; + public class CheckEBCDICLocaleTest { private static final String TestSrc = diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/6302184/HiddenOptionsShouldUseGivenEncodingTest.java --- a/langtools/test/tools/javac/6302184/HiddenOptionsShouldUseGivenEncodingTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/6302184/HiddenOptionsShouldUseGivenEncodingTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -28,10 +28,8 @@ * encoding, if available * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox * @run compile -encoding iso-8859-1 -XD-printsource T6302184.java * @run main HiddenOptionsShouldUseGivenEncodingTest */ @@ -40,6 +38,8 @@ import java.nio.file.Paths; import java.util.List; +import toolbox.ToolBox; + // Original test: test/tools/javac/6302184/T6302184.sh public class HiddenOptionsShouldUseGivenEncodingTest { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/6508981/TestInferBinaryName.java --- a/langtools/test/tools/javac/6508981/TestInferBinaryName.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/6508981/TestInferBinaryName.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2016, 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 @@ -28,11 +28,8 @@ * (This test is specifically to test the new impl of inferBinaryName) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.compiler/com.sun.tools.javac.util - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox p.A + * @build toolbox.ToolBox toolbox.JarTask p.A * @run main TestInferBinaryName */ @@ -40,13 +37,11 @@ import java.util.*; import javax.tools.*; -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.Options; - import static javax.tools.JavaFileObject.Kind.*; import static javax.tools.StandardLocation.*; +import toolbox.JarTask; +import toolbox.ToolBox; /** * Verify the various implementations of inferBinaryName, but configuring @@ -70,9 +65,10 @@ File createJar() throws IOException { File f = new File("test.jar"); - try (JavaFileManager fm = new JavacFileManager(new Context(), false, null)) { + try (JavaFileManager fm = ToolProvider.getSystemJavaCompiler() + .getStandardFileManager(null, null, null)) { ToolBox tb = new ToolBox(); - tb.new JarTask(f.getPath()) + new JarTask(tb, f.getPath()) .files(fm, StandardLocation.PLATFORM_CLASS_PATH, "java.lang.*") .run(); } @@ -124,9 +120,8 @@ JavaFileManager getFileManager(List path) throws IOException { - Context ctx = new Context(); - - JavacFileManager fm = new JavacFileManager(ctx, false, null); + StandardJavaFileManager fm = ToolProvider.getSystemJavaCompiler() + .getStandardFileManager(null, null, null); fm.setLocation(CLASS_PATH, path); return fm; } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/AnonymousSubclassTest.java --- a/langtools/test/tools/javac/AnonymousSubclassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/AnonymousSubclassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,13 +27,15 @@ * @summary javac wrongly allows a subclass of an anonymous class * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main AnonymousSubclassTest */ +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AnonymousSubclassTest { public static void main(String... args) throws Exception { new AnonymousSubclassTest().run(); @@ -68,19 +70,19 @@ "}"; void compOk(String code) throws Exception { - tb.new JavacTask() + new JavacTask(tb) .sources(code) .run(); } void compFail(String code) throws Exception { - String errs = tb.new JavacTask() + String errs = new JavacTask(tb) .sources(code) .classpath(".") .options("-XDrawDiagnostics") - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!errs.contains("cant.inherit.from.anon")) { throw new Exception("test failed"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/ClassPathTest/ClassPathTest.java --- a/langtools/test/tools/javac/ClassPathTest/ClassPathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/ClassPathTest/ClassPathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,15 +27,17 @@ * @summary Test -classpath option and classpath defaults. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main ClassPathTest */ import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javac/ClassPathTest/ClassPathTest.sh public class ClassPathTest { @@ -100,55 +102,55 @@ // automatically but this is not happening when called using ProcessBuilder // testJavac success ClassPathTest3.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .classpath(".") .files("ClassPathTest3.java") .run(); // testJavac failure ClassPathTest1.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .classpath(".") .files("ClassPathTest1.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); // testJavac success ClassPathTest2.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .files("ClassPathTest2.java") .run(); // testJavac failure ClassPathTest1.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .files("ClassPathTest1.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); // testJavac failure ClassPathTest3.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .files("ClassPathTest3.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); // testJavac success -classpath foo ClassPathTest1.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .classpath("foo") .files("ClassPathTest1.java") .run(); // testJavac failure -classpath foo ClassPathTest2.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .classpath("foo") .files("ClassPathTest2.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); // testJavac failure -classpath foo ClassPathTest3.java - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .envVar("CLASSPATH", "bar") .classpath("foo") .files("ClassPathTest3.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/ConstFoldTest.java --- a/langtools/test/tools/javac/ConstFoldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/ConstFoldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary Constant folding deficiency * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavapTask * @run main ConstFoldTest */ @@ -39,6 +38,10 @@ import java.nio.file.Paths; import java.util.List; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ConstFoldTest { public static void main(String... args) throws Exception { new ConstFoldTest().run(); @@ -82,12 +85,12 @@ URL url = ConstFoldTest.class.getResource("ConstFoldTest$CFTest.class"); Path file = Paths.get(url.toURI()); - List result = tb.new JavapTask() + List result = new JavapTask(tb) .options("-c") .classes(file.toString()) .run() - .write(ToolBox.OutputKind.DIRECT) - .getOutputLines(ToolBox.OutputKind.DIRECT); + .write(Task.OutputKind.DIRECT) + .getOutputLines(Task.OutputKind.DIRECT); List bad_codes = tb.grep(regex, result); if (!bad_codes.isEmpty()) { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/ExtDirs/ExtDirTest.java --- a/langtools/test/tools/javac/ExtDirs/ExtDirTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/ExtDirs/ExtDirTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,15 +27,17 @@ * @summary Test that '.jar' files in -extdirs are found. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask * @run main ExtDirTest */ import java.io.File; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.ToolBox; + // Original test: test/tools/javac/ExtDirs/ExtDirs.sh public class ExtDirTest { @@ -112,22 +114,22 @@ } void createJars() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources(ExtDirTestClass1Src) .run(); - tb.new JarTask("pkg1.jar") + new JarTask(tb, "pkg1.jar") .manifest(jar1Manifest) .files("pkg1/ExtDirTestClass1.class") .run(); - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources(ExtDirTestClass2Src) .run(); - tb.new JarTask("pkg2.jar") + new JarTask(tb, "pkg2.jar") .manifest(jar2Manifest) .files("pkg2/ExtDirTestClass2.class") .run(); @@ -149,7 +151,7 @@ } void compileWithExtDirs() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .options("-source", "8", "-extdirs", "ext1") @@ -157,7 +159,7 @@ .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .options("-source", "8", "-extdirs", "ext1" + File.pathSeparator + "ext2") @@ -165,7 +167,7 @@ .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .options("-source", "8", "-extdirs", "ext3") diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/IncorrectInheritance/IncorrectInheritanceTest.java --- a/langtools/test/tools/javac/IncorrectInheritance/IncorrectInheritanceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/IncorrectInheritance/IncorrectInheritanceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,13 +27,15 @@ * @summary Incorrect inheritance of inaccessible static method * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main IncorrectInheritanceTest */ +import toolbox.JavacTask; +import toolbox.ToolBox; + public class IncorrectInheritanceTest { private static final String ASrc = "package pkg;\n" + @@ -65,7 +67,7 @@ public void test() throws Exception { ToolBox tb = new ToolBox(); - tb.new JavacTask() + new JavacTask(tb) .sources(ASrc, BSrc, CSrc) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/MissingInclude/MissingIncludeTest.java --- a/langtools/test/tools/javac/MissingInclude/MissingIncludeTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/MissingInclude/MissingIncludeTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,13 +28,15 @@ * doesn't exist. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main MissingIncludeTest */ +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javac/MissingInclude.sh public class MissingIncludeTest { @@ -46,10 +48,10 @@ tb.writeFile(MissingIncludeFile, MissingIncludeSrc); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("@/nonexistent_file") .files(MissingIncludeFile) - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/Paths/AbsolutePathTest.java --- a/langtools/test/tools/javac/Paths/AbsolutePathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/Paths/AbsolutePathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,11 +28,9 @@ * @author govereau * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @ignore 8055768 ToolBox does not close opened files - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask toolbox.JarTask * @run main AbsolutePathTest */ @@ -40,12 +38,16 @@ import java.nio.file.Files; import java.nio.file.Paths; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class AbsolutePathTest { public static void main(String... cmdline) throws Exception { ToolBox tb = new ToolBox(); // compile test.Test - tb.new JavacTask() + new JavacTask(tb) .outdir(".") // this is needed to get the classfiles in test .sources("package test; public class Test{}") .run(); @@ -54,18 +56,18 @@ // we need the jars in a directory different from the working // directory to trigger the bug. Files.createDirectory(Paths.get("jars")); - tb.new JarTask("jars/test.jar") + new JarTask(tb, "jars/test.jar") .files("test/Test.class") .run(); // build second jar in jars directory using // an absolute path reference to the first jar - tb.new JarTask("jars/test2.jar") + new JarTask(tb, "jars/test2.jar") .classpath(new File("jars/test.jar").getAbsolutePath()) .run(); // this should not fail - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .classpath("jars/test2.jar") .sources("import test.Test; class Test2 {}") diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java --- a/langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,13 +27,16 @@ * @summary Verify allowed access to protected class from another package * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavaTask toolbox.JavacTask * @run main ProtectedInnerClassesTest */ +import toolbox.JavaTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original tests: test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh // and test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java public class ProtectedInnerClassesTest { @@ -86,12 +89,12 @@ } void compileAndExecute() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources(protectedInnerClass1Src, protectedInnerClass2Src) .run(); - tb.new JavaTask() + new JavaTask(tb) .classpath(System.getProperty("user.dir")) .className("p2.ProtectedInnerClass2") .run(); @@ -99,15 +102,15 @@ //from test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java void compileOnly() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources(protectedInnerClass1Src) .run(); - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources(protectedInnerClass3Src) - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T5090006/AssertionFailureTest.java --- a/langtools/test/tools/javac/T5090006/AssertionFailureTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T5090006/AssertionFailureTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,16 +27,18 @@ * @summary javac fails with assertion error * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main AssertionFailureTest */ import java.io.File; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + // Original test: test/tools/javac/T5090006/compiler.sh public class AssertionFailureTest { @@ -62,7 +64,7 @@ String classpath = Paths.get(tb.testSrc, "broken.jar") + File.pathSeparator + "."; - tb.new JavacTask() + new JavacTask(tb) .classpath(classpath) .sources(testSrc) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T6558476.java --- a/langtools/test/tools/javac/T6558476.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T6558476.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2016, 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 @@ -27,10 +27,9 @@ * @summary com/sun/tools/javac/Main.compile don't release file handles on return * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask * @run main/othervm -Xmx512m -Xms512m T6558476 */ @@ -42,6 +41,10 @@ import com.sun.tools.javac.Main; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class T6558476 { private static final String classFoo = "class Foo {}"; @@ -55,17 +58,17 @@ public static void main(String[] args) throws IOException { ToolBox tb = new ToolBox(); - tb.new JavacTask() - .sources(classFoo) - .run(); - tb.new JarTask("foo.jar") - .files("Foo.class") - .run(); + new JavacTask(tb) + .sources(classFoo) + .run(); + new JarTask(tb, "foo.jar") + .files("Foo.class") + .run(); - tb.new JavacTask() - .classpath("foo.jar") - .sources(classMyFoo) - .run(); + new JavacTask(tb) + .classpath("foo.jar") + .sources(classMyFoo) + .run(); File foo_jar = new File("foo.jar"); if (foo_jar.delete()) { System.out.println("jar file successfully deleted"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T6725036.java --- a/langtools/test/tools/javac/T6725036.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T6725036.java Thu Mar 31 15:20:50 2016 -0700 @@ -31,8 +31,7 @@ * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask * @run main T6725036 */ @@ -49,6 +48,9 @@ import com.sun.tools.javac.file.RelativePath.RelativeFile; import com.sun.tools.javac.util.Context; +import toolbox.JarTask; +import toolbox.ToolBox; + public class T6725036 { public static void main(String... args) throws Exception { new T6725036().run(); @@ -82,7 +84,7 @@ try (JavaFileManager fm = comp.getStandardFileManager(null, null, null)) { File f = new File(name); ToolBox tb = new ToolBox(); - tb.new JarTask(name) + new JarTask(tb, name) .files(fm, StandardLocation.PLATFORM_CLASS_PATH, paths) .run(); return f; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T6970173/DebugPointerAtBadPositionTest.java --- a/langtools/test/tools/javac/T6970173/DebugPointerAtBadPositionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T6970173/DebugPointerAtBadPositionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,11 +28,10 @@ * @library /tools/lib * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main DebugPointerAtBadPositionTest */ @@ -45,6 +44,9 @@ import com.sun.tools.classfile.Method; import com.sun.tools.javac.util.Assert; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class DebugPointerAtBadPositionTest { static final String testSource = @@ -82,7 +84,7 @@ void compileTestClass() throws Exception { ToolBox tb = new ToolBox(); - tb.new JavacTask() + new JavacTask(tb) .sources(testSource) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T7008643/InlinedFinallyConfuseDebuggersTest.java --- a/langtools/test/tools/javac/T7008643/InlinedFinallyConfuseDebuggersTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T7008643/InlinedFinallyConfuseDebuggersTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -28,11 +28,10 @@ * @library /tools/lib * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main InlinedFinallyConfuseDebuggersTest */ @@ -45,6 +44,9 @@ import com.sun.tools.classfile.Method; import com.sun.tools.javac.util.Assert; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class InlinedFinallyConfuseDebuggersTest { static final String testSource = @@ -88,7 +90,7 @@ } void compileTestClass() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .sources(testSource) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java --- a/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,16 +27,20 @@ * @summary -profile does not work when -bootclasspath specified * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main CheckRejectProfileBCPOptionsIfUsedTogetherTest */ +import java.nio.file.Paths; + import com.sun.tools.javac.util.Assert; -import java.nio.file.Paths; + +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; public class CheckRejectProfileBCPOptionsIfUsedTogetherTest { @@ -49,14 +53,14 @@ ToolBox tb = new ToolBox(); tb.writeFile("Test.java", TestSrc); - ToolBox.Result result = tb.new JavacTask(ToolBox.Mode.CMDLINE) + Task.Result result = new JavacTask(tb, Task.Mode.CMDLINE) .options("-profile", "compact1", "-bootclasspath", Paths.get(ToolBox.testJDK, "jre/lib/rt.jar").toString()) .files("Test.java") - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); - String out = result.getOutput(ToolBox.OutputKind.DIRECT); + String out = result.getOutput(Task.OutputKind.DIRECT); Assert.check(out.startsWith( "javac: profile and bootclasspath options cannot be used together"), "Incorrect javac error output"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java --- a/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,13 +27,14 @@ * @summary Javac Crashes while building OpenJFX * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main CompilerCrashWhenMixingBinariesAndSourcesTest */ +import toolbox.JavacTask; +import toolbox.ToolBox; + public class CompilerCrashWhenMixingBinariesAndSourcesTest { private static final String ASource = "class A {\n" + @@ -53,13 +54,13 @@ public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - tb.new JavacTask() + new JavacTask(tb) .sources(ASource, BSource, CSource, DSource) .run(); tb.deleteFiles("A.class", "A$1.class", "C.class", "D.class"); - tb.new JavacTask() + new JavacTask(tb) .classpath(".") .sources(ASource, CSource, DSource) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java --- a/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,13 +27,14 @@ * @summary compile of iterator use fails with error "defined in an inaccessible class or interface" * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main CompileErrorWithIteratorTest */ +import toolbox.JavacTask; +import toolbox.ToolBox; + public class CompileErrorWithIteratorTest { private static final String TestCollectionSrc = @@ -80,7 +81,7 @@ } void compile() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .sources(TestCollectionSrc, TestSrc) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java --- a/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,12 +27,10 @@ * @summary javac, generates erroneous LVT for a test case with lambda code * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main WrongLNTForLambdaTest */ @@ -45,6 +43,9 @@ import com.sun.tools.classfile.Method; import com.sun.tools.javac.util.Assert; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class WrongLNTForLambdaTest { static final String testSource = @@ -152,7 +153,7 @@ } void compileTestClass() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .sources(testSource) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8022162/IncorrectSignatureDeterminationForInnerClassesTest.java --- a/langtools/test/tools/javac/T8022162/IncorrectSignatureDeterminationForInnerClassesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8022162/IncorrectSignatureDeterminationForInnerClassesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,13 +27,15 @@ * @summary Incorrect signature determination for certain inner class generics * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main IncorrectSignatureDeterminationForInnerClassesTest */ +import toolbox.JavacTask; +import toolbox.ToolBox; + public class IncorrectSignatureDeterminationForInnerClassesTest { private static final String DSrc = @@ -73,13 +75,13 @@ ToolBox tb = new ToolBox(); tb.createDirectories("classes"); - tb.new JavacTask() + new JavacTask(tb) .outdir("classes") .sources(DSrc) .run(); // compile class H against the class files for classes D and Q - tb.new JavacTask() + new JavacTask(tb) .outdir("classes") .classpath("classes") .sources(HSrc) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java --- a/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,12 +27,10 @@ * @summary javac, previous solution for JDK-8022186 was incorrect * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main NoDeadCodeGenerationOnTrySmtTest */ @@ -45,6 +43,9 @@ import com.sun.tools.classfile.Method; import com.sun.tools.javac.util.Assert; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class NoDeadCodeGenerationOnTrySmtTest { static final String testSource = @@ -93,7 +94,7 @@ } void compileTestClass() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .sources(testSource) .run(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java --- a/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,16 +27,18 @@ * @summary Inferring the exception thrown by a lambda: sometimes fails to compile * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main ExceptionInferenceFromClassFileTest */ import java.nio.file.Files; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class ExceptionInferenceFromClassFileTest { static final String ABSrc = @@ -61,12 +63,12 @@ ToolBox tb = new ToolBox(); tb.createDirectories("out"); - tb.new JavacTask() + new JavacTask(tb) .outdir("out") .sources(ABSrc) .run(); - tb.new JavacTask() + new JavacTask(tb) .outdir("out") .classpath("out") .sources(CSrc) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java --- a/langtools/test/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary No type annotations generated for nested lambdas * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavapTask * @run compile -g NestedLambdasCastedTest.java * @run main NestedLambdasCastedTest */ @@ -40,20 +39,24 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Target; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + public class NestedLambdasCastedTest { // Expected output can't be directly encoded into NestedLambdasCastedTest !!! static class ExpectedOutputHolder { - public String [] outputs = { + public String[] outputs = { "public static strictfp void main(java.lang.String[])", "private static strictfp void lambda$main$3();", "private static strictfp void lambda$main$2();", "private static strictfp void lambda$main$1();", "private static strictfp void lambda$main$0();", - "0: #63(#64=s#65): CAST, offset=5, type_index=0", - "0: #63(#64=s#70): CAST, offset=5, type_index=0", - "0: #63(#64=s#73): CAST, offset=5, type_index=0", - "0: #63(#64=s#76): CAST, offset=5, type_index=0" + "0: #62(#63=s#64): CAST, offset=5, type_index=0", + "0: #62(#63=s#69): CAST, offset=5, type_index=0", + "0: #62(#63=s#72): CAST, offset=5, type_index=0", + "0: #62(#63=s#75): CAST, offset=5, type_index=0" }; } @@ -73,11 +76,11 @@ }; ToolBox tb = new ToolBox(); Path classPath = Paths.get(ToolBox.testClasses, "NestedLambdasCastedTest.class"); - String javapOut = tb.new JavapTask() + String javapOut = new JavapTask(tb) .options("-v", "-p") .classes(classPath.toString()) .run() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); ExpectedOutputHolder holder = new ExpectedOutputHolder(); for (String s : holder.outputs) { if (!javapOut.contains(s)) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/api/ToolProvider/HelloWorldTest.java --- a/langtools/test/tools/javac/api/ToolProvider/HelloWorldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/api/ToolProvider/HelloWorldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2016, 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 @@ -27,15 +27,17 @@ * @summary ToolProvider should be less compiler-specific * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavaTask * @run main HelloWorldTest */ import java.util.Arrays; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + // verify that running a simple program, such as this one, does not trigger // the loading of ToolProvider or any com.sun.tools.javac class public class HelloWorldTest { @@ -53,15 +55,15 @@ String classpath = System.getProperty("java.class.path"); - ToolBox.Result tr = tb.new JavaTask() + Task.Result tr = new JavaTask(tb) .vmOptions("-verbose:class") .classpath(classpath) .className(HelloWorldTest.class.getName()) .classArgs("Hello", "World") .run(); - if (tr.getOutput(ToolBox.OutputKind.STDOUT).contains("java.lang.Object")) { - for (String line : tr.getOutputLines(ToolBox.OutputKind.STDOUT)) { + if (tr.getOutput(Task.OutputKind.STDOUT).contains("java.lang.Object")) { + for (String line : tr.getOutputLines(Task.OutputKind.STDOUT)) { System.err.println(line); if (line.contains("javax.tools.ToolProvider") || line.contains("com.sun.tools.javac.")) error(">>> " + line); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/api/ToolProvider/ToolProviderTest1.java --- a/langtools/test/tools/javac/api/ToolProvider/ToolProviderTest1.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/api/ToolProvider/ToolProviderTest1.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2016, 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 @@ -27,15 +27,17 @@ * @summary ToolProvider should be less compiler-specific * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavaTask * @run main ToolProviderTest1 */ import java.util.List; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + // verify that running accessing ToolProvider by itself does not // trigger loading com.sun.tools.javac.* public class ToolProviderTest1 { @@ -52,13 +54,13 @@ ToolBox tb = new ToolBox(); String classpath = System.getProperty("java.class.path"); - List lines = tb.new JavaTask() + List lines = new JavaTask(tb) .vmOptions("-verbose:class") .classpath(classpath) .className(getClass().getName()) .classArgs("javax.tools.ToolProvider") .run() - .getOutputLines(ToolBox.OutputKind.STDOUT); + .getOutputLines(Task.OutputKind.STDOUT); for (String line : lines) { System.err.println(line); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/api/ToolProvider/ToolProviderTest2.java --- a/langtools/test/tools/javac/api/ToolProvider/ToolProviderTest2.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/api/ToolProvider/ToolProviderTest2.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2016, 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 @@ -27,16 +27,18 @@ * @summary ToolProvider should be less compiler-specific * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavaTask * @run main ToolProviderTest2 */ import javax.tools.ToolProvider; import java.util.List; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + // control for ToolProviderTest1 -- verify that using ToolProvider to // access the compiler does trigger loading com.sun.tools.javac.* public class ToolProviderTest2 { @@ -53,13 +55,13 @@ ToolBox tb = new ToolBox(); String classpath = System.getProperty("java.class.path"); - List lines = tb.new JavaTask() + List lines = new JavaTask(tb) .vmOptions("-verbose:class") .classpath(classpath) .className(getClass().getName()) .classArgs("javax.tools.ToolProvider") .run() - .getOutputLines(ToolBox.OutputKind.STDOUT); + .getOutputLines(Task.OutputKind.STDOUT); boolean found = false; for (String line : lines) { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/boxing/IncrementBoxedAndAccess.java --- a/langtools/test/tools/javac/boxing/IncrementBoxedAndAccess.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/boxing/IncrementBoxedAndAccess.java Thu Mar 31 15:20:50 2016 -0700 @@ -25,10 +25,12 @@ * @test * @bug 8143388 * @summary Verify that boxed postfix operator works properly when referring to super class' field. + * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @library /tools/lib + * @build toolbox.ToolBox toolbox.JavacTask + * @run main IncrementBoxedAndAccess */ import java.io.IOException; @@ -36,6 +38,9 @@ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class IncrementBoxedAndAccess { public static void main(String... args) throws IOException { new IncrementBoxedAndAccess().run(); @@ -47,7 +52,7 @@ Path expected = Paths.get("expected"); Files.createDirectories(expected); tb.cleanDirectory(expected); - tb.new JavacTask() + new JavacTask(tb) .sources("package p1;" + "public class B {" + " protected Integer i;" + @@ -68,7 +73,7 @@ Path actual = Paths.get("actual"); Files.createDirectories(actual); tb.cleanDirectory(actual); - tb.new JavacTask() + new JavacTask(tb) .sources("package p1;" + "public class B {" + " protected Integer i;" + diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/InnerClasses/T8068517.java --- a/langtools/test/tools/javac/classfiles/InnerClasses/T8068517.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/InnerClasses/T8068517.java Thu Mar 31 15:20:50 2016 -0700 @@ -26,11 +26,10 @@ * @summary Verify that nested enums have correct abstract flag in the InnerClasses attribute. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox T8068517 + * @build toolbox.ToolBox toolbox.JavacTask + * @build T8068517 * @run main T8068517 */ @@ -40,6 +39,9 @@ import javax.tools.StandardLocation; import javax.tools.ToolProvider; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class T8068517 { public static void main(String[] args) throws Exception { @@ -106,11 +108,11 @@ try (JavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)) { ToolBox tb = new ToolBox(); ToolBox.MemoryFileManager memoryFM1 = new ToolBox.MemoryFileManager(fm); - tb.new JavacTask().fileManager(memoryFM1) + new JavacTask(tb).fileManager(memoryFM1) .sources(aJava, bJava) .run(); ToolBox.MemoryFileManager memoryFM2 = new ToolBox.MemoryFileManager(fm); - tb.new JavacTask().fileManager(memoryFM2) + new JavacTask(tb).fileManager(memoryFM2) .sources(bJava, aJava) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/AnnotationDefault/AnnotationDefaultTest.java --- a/langtools/test/tools/javac/classfiles/attributes/AnnotationDefault/AnnotationDefaultTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/AnnotationDefault/AnnotationDefaultTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,16 +27,13 @@ * @summary Checking AnnotationDefault attribute. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build AnnotationDefaultTest TestBase TestResult InMemoryFileManager ToolBox AnnotationDefaultVerifier + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build AnnotationDefaultTest AnnotationDefaultVerifier * @run main AnnotationDefaultTest */ -import com.sun.tools.classfile.*; - import java.io.File; import java.io.IOException; import java.lang.annotation.RetentionPolicy; @@ -48,6 +45,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import com.sun.tools.classfile.*; + public class AnnotationDefaultTest extends TestResult { private final static String templateFileName = "AnnotationDefault.java.template"; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/EnclosingMethod/EnclosingMethodTest.java --- a/langtools/test/tools/javac/classfiles/attributes/EnclosingMethod/EnclosingMethodTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/EnclosingMethod/EnclosingMethodTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @summary Checking EnclosingMethod attribute of anonymous/local class. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build EnclosingMethodTest TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @run main EnclosingMethodTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/LineNumberTable/LineNumberTest.java --- a/langtools/test/tools/javac/classfiles/attributes/LineNumberTable/LineNumberTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/LineNumberTable/LineNumberTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -30,8 +30,8 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox TestBase InMemoryFileManager LineNumberTestBase Container TestCase + * @build toolbox.ToolBox InMemoryFileManager TestBase + * @build LineNumberTestBase Container TestCase * @run main LineNumberTest */ public class LineNumberTest extends LineNumberTestBase { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTableTest.java --- a/langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTableTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTableTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -30,8 +30,8 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox LocalVariableTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase + * @build LocalVariableTestBase * @compile -g LocalVariableTableTest.java * @run main LocalVariableTableTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTypeTableTest.java --- a/langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTypeTableTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/LocalVariableTable/LocalVariableTypeTableTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -30,8 +30,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox LocalVariableTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase LocalVariableTestBase * @compile -g LocalVariableTypeTableTest.java * @run main LocalVariableTypeTableTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Module/ModuleFlagTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Module/ModuleFlagTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Module/ModuleFlagTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -30,8 +30,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask toolbox.ToolBox * @run main ModuleFlagTest */ @@ -43,13 +42,16 @@ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class ModuleFlagTest { public static void main(String[] args) throws IOException, ConstantPoolException { Path outdir = Paths.get("."); ToolBox tb = new ToolBox(); final Path moduleInfo = Paths.get("module-info.java"); tb.writeFile(moduleInfo, "module test_module{}"); - tb.new JavacTask() + new JavacTask(tb) .outdir(outdir) .files(moduleInfo) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Module/ModuleTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Module/ModuleTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Module/ModuleTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -29,9 +29,9 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib ../lib /tools/javac/lib - * @build ToolBox TestBase TestResult ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask toolbox.ToolBox + * TestBase TestResult ModuleTestBase * @run main ModuleTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Module/ModuleTestBase.java --- a/langtools/test/tools/javac/classfiles/attributes/Module/ModuleTestBase.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Module/ModuleTestBase.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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,6 +42,10 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModuleTestBase { protected final ToolBox tb = new ToolBox(); private final TestResult tr = new TestResult(); @@ -124,9 +128,9 @@ } protected void compile(Path base) throws IOException { - tb.new JavacTask() + new JavacTask(tb) .files(findJavaFiles(base)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/ConstructorTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/ConstructorTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/ConstructorTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for constructors. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build ConstructorTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver ConstructorTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/EnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/EnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/EnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for enum. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build EnumTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver EnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/ExceptionTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/ExceptionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/ExceptionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for methods which throw exceptions. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build ExceptionTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver ExceptionTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/FieldTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/FieldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/FieldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for fields. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build FieldTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver FieldTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/InnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/InnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/InnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for inner classes. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build InnerClassTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver InnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for method parameters. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build MethodParameterTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver MethodParameterTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @summary Checks Signature attribute for type bounds. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build MethodTypeBoundTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver MethodTypeBoundTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,11 +28,9 @@ * @library /tools/lib /tools/javac/lib ../lib * @modules java.desktop * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build ReturnTypeTest Driver ExpectedSignature ExpectedSignatureContainer * @run main Driver ReturnTypeTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/AnonymousClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/AnonymousClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/AnonymousClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main AnonymousClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/InnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/InnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/InnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main InnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/LocalClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/LocalClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/LocalClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main LocalClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/MixTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/MixTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/MixTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main MixTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/ModuleInfoTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/ModuleInfoTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/ModuleInfoTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,27 +27,29 @@ * @bug 8080878 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox toolbox.JavacTask InMemoryFileManager TestBase SourceFileTestBase * @run main ModuleInfoTest */ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModuleInfoTest extends SourceFileTestBase { public static void main(String[] args) throws Exception { Path outdir = Paths.get("."); ToolBox tb = new ToolBox(); final Path moduleInfo = Paths.get("module-info.java"); tb.writeFile(moduleInfo, "module m1{}"); - tb.new JavacTask() + new JavacTask(tb) .files(moduleInfo) .outdir(outdir) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); new ModuleInfoTest().test(outdir.resolve("module-info.class"), "module-info.java"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/NoSourceFileAttribute.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/NoSourceFileAttribute.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/NoSourceFileAttribute.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @compile -g:none NoSourceFileAttribute.java * @run main NoSourceFileAttribute */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/SourceFileTestBase.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/SourceFileTestBase.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/SourceFileTestBase.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -31,6 +31,8 @@ import java.util.Map; import javax.tools.JavaFileObject; +import toolbox.ToolBox; + /** * Base class for Source file attribute tests. Checks expected file name for specified classes in the SourceFile attribute. * To add new tests you should extend the SourceFileTestBase class and invoke {@link #test} for static sources diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/SyntheticClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/SyntheticClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/SyntheticClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main SyntheticClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/SourceFile/TopLevelClassesOneFileTest.java --- a/langtools/test/tools/javac/classfiles/attributes/SourceFile/TopLevelClassesOneFileTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/SourceFile/TopLevelClassesOneFileTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @bug 8040129 * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox SourceFileTestBase TestBase InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestBase SourceFileTestBase * @run main TopLevelClassesOneFileTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateInnerClassMembersTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateInnerClassMembersTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateInnerClassMembersTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,12 +27,10 @@ * @summary Checking ACC_SYNTHETIC flag is generated for access method * generated to access to private methods and fields. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult * @build AccessToPrivateInnerClassMembersTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver AccessToPrivateInnerClassMembersTest 1 */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateSiblingsTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateSiblingsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateSiblingsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,9 +29,8 @@ * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build AccessToPrivateSiblingsTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver AccessToPrivateSiblingsTest 1 */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/AssertFieldTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/AssertFieldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AssertFieldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -26,12 +26,10 @@ * @bug 8044537 * @summary Checking ACC_SYNTHETIC flag is generated for assert statement. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build AssertFieldTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver AssertFieldTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodForGenericMethodTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodForGenericMethodTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodForGenericMethodTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -26,12 +26,10 @@ * @bug 8044537 * @summary Checking ACC_SYNTHETIC flag is generated for bridge method generated for generic method. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build BridgeMethodForGenericMethodTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver BridgeMethodForGenericMethodTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodsForLambdaTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodsForLambdaTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodsForLambdaTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,12 +27,10 @@ * @summary Checking ACC_SYNTHETIC flag is generated for bridge method * generated for lambda expressions and method references. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build BridgeMethodsForLambdaTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver BridgeMethodsForLambdaTest 1 */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/EnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/EnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/EnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -26,12 +26,10 @@ * @bug 8044537 * @summary Checking ACC_SYNTHETIC flag is generated for enum members. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build EnumTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver EnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/PackageInfoTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/PackageInfoTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/PackageInfoTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -26,12 +26,10 @@ * @bug 8044537 * @summary Checking ACC_SYNTHETIC flag is generated for package-info. * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build SyntheticTestDriver ExpectedClass ExpectedClasses * @compile -Xpkginfo:always package_info_test/package-info.java * @run main SyntheticTestDriver package_info_test.package-info 1 diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/Synthetic/ThisFieldTest.java --- a/langtools/test/tools/javac/classfiles/attributes/Synthetic/ThisFieldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/ThisFieldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,9 +28,8 @@ * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @build ThisFieldTest SyntheticTestDriver ExpectedClass ExpectedClasses * @run main SyntheticTestDriver ThisFieldTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForGenericMethodTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForGenericMethodTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForGenericMethodTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -29,10 +29,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForGenericMethodTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForGenericMethodTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerAnnotationTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerAnnotationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerAnnotationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForInnerAnnotationTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForInnerAnnotationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForInnerClassTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForInnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerEnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerEnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerEnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForInnerEnumTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForInnerEnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerInterfaceTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForInnerInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForInnerInterfaceTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForInnerInterfaceTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForTopLevelClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForTopLevelClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeAnnotationsForTopLevelClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeAnnotationsForTopLevelClassTest AnnotationsTestBase RuntimeAnnotationsTestBase * @run main RuntimeAnnotationsForTopLevelClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForGenericMethodTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForGenericMethodTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForGenericMethodTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -29,10 +29,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeParameterAnnotationsForGenericMethodTest AnnotationsTestBase RuntimeParameterAnnotationsTestBase * @run main RuntimeParameterAnnotationsForGenericMethodTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForLambdaTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForLambdaTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsForLambdaTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeParameterAnnotationsForLambdaTest AnnotationsTestBase RuntimeParameterAnnotationsTestBase * @run main RuntimeParameterAnnotationsForLambdaTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsTest.java --- a/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/annotations/RuntimeParameterAnnotationsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,10 +28,9 @@ * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap * @library /tools/lib /tools/javac/lib ../lib - * @build WorkAnnotations TestBase TestResult InMemoryFileManager ToolBox - * @build TestCase ClassType TestAnnotationInfo + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build WorkAnnotations TestCase ClassType TestAnnotationInfo * @build RuntimeParameterAnnotationsTest AnnotationsTestBase RuntimeParameterAnnotationsTestBase * @run main RuntimeParameterAnnotationsTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedPackageTest.java --- a/langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedPackageTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedPackageTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -30,8 +30,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox TestBase TestResult InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @run main DeprecatedPackageTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedTest.java --- a/langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/deprecated/DeprecatedTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -31,8 +31,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox TestBase TestResult InMemoryFileManager + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @run main DeprecatedTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerAnnotationTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerAnnotationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerAnnotationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner annotations in inner annotation. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerAnnotationsInInnerAnnotationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner annotations in inner class. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerAnnotationsInInnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerEnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerEnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerEnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner annotations in inner enum. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerAnnotationsInInnerEnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerInterfaceTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerAnnotationsInInnerInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner annotations in inner interface. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerAnnotationsInInnerInterfaceTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesHierarchyTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesHierarchyTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesHierarchyTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,17 +27,12 @@ * @summary Test that inner classes have in its inner classes attribute enclosing classes and its immediate members. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @run main InnerClassesHierarchyTest */ -import com.sun.tools.classfile.*; -import com.sun.tools.classfile.InnerClasses_attribute.Info; - import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -45,6 +40,9 @@ import java.util.*; import java.util.stream.Collectors; +import com.sun.tools.classfile.*; +import com.sun.tools.classfile.InnerClasses_attribute.Info; + public class InnerClassesHierarchyTest extends TestResult { private final Map> innerClasses; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInAnonymousClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInAnonymousClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInAnonymousClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner classes in anonymous class. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesTestBase * @run main InnerClassesInAnonymousClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerAnnotationTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerAnnotationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerAnnotationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner classes in inner annotation. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerClassesInInnerAnnotationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner classes in inner class. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerClassesInInnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerEnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerEnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerEnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner classes in inner enum. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerClassesInInnerEnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerInterfaceTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInInnerInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner classes in inner interface. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerClassesInInnerInterfaceTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInLocalClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInLocalClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesInLocalClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,10 +28,9 @@ * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesTestBase TestResult TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesTestBase * @run main InnerClassesInLocalClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesIndexTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesIndexTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesIndexTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,9 @@ * @summary Test that outer_class_info_index of local and anonymous class is zero. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase * @run main InnerClassesIndexTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerClassesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing inner classes attributes. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesTestBase * @run main InnerClassesTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerAnnotationTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerAnnotationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerAnnotationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner enums in inner annotation. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerEnumInInnerAnnotationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerEnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerEnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerEnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner enums in inner enum. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerEnumInInnerEnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerInterfaceTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumInInnerInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner enums in inner interface. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerEnumInInnerInterfaceTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumsInInnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumsInInnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerEnumsInInnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner enums in inner class. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerEnumsInInnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerAnnotationTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerAnnotationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerAnnotationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner interfaces in inner annotation. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerInterfacesInInnerAnnotationTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerClassTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,10 @@ * @author aeremeev * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerInterfacesInInnerClassTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerEnumTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerEnumTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerEnumTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner interfaces in inner enum. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerInterfacesInInnerEnumTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerInterfaceTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/InnerInterfacesInInnerInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,11 +27,10 @@ * @summary Testing InnerClasses_attribute of inner interfaces in inner interface. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build InnerClassesInInnerClassTestBase InnerClassesTestBase TestBase TestResult InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase + * @build InnerClassesInInnerClassTestBase InnerClassesTestBase * @run main InnerInterfacesInInnerInterfaceTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/innerclasses/NoInnerClassesTest.java --- a/langtools/test/tools/javac/classfiles/attributes/innerclasses/NoInnerClassesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/innerclasses/NoInnerClassesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,9 @@ * @summary Test that there are no inner classes attributes in case of there are no inner classes. * @library /tools/lib /tools/javac/lib ../lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.classfile - * jdk.jdeps/com.sun.tools.javap - * @build TestBase InMemoryFileManager ToolBox + * @build toolbox.ToolBox InMemoryFileManager TestBase * @run main NoInnerClassesTest */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/classfiles/attributes/lib/TestBase.java --- a/langtools/test/tools/javac/classfiles/attributes/lib/TestBase.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/classfiles/attributes/lib/TestBase.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -36,6 +36,9 @@ import com.sun.tools.classfile.ClassFile; import com.sun.tools.classfile.ConstantPoolException; +import toolbox.JavacTask; +import toolbox.ToolBox; + /** * Base class for class file attribute tests. * Contains methods for compiling generated sources in memory, diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/completionDeps/DepsAndAnno.java --- a/langtools/test/tools/javac/completionDeps/DepsAndAnno.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/completionDeps/DepsAndAnno.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,16 +27,18 @@ * @summary Make sure -XDcompletionDeps does not cause an infinite loop. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main/othervm/timeout=10 DepsAndAnno */ import java.lang.annotation.ElementType; import java.lang.annotation.Target; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class DepsAndAnno { @Target(ElementType.METHOD) @@ -44,7 +46,7 @@ public static void main(String[] args) { ToolBox toolBox = new ToolBox(); - toolBox.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(toolBox, Task.Mode.CMDLINE) .options("-XDcompletionDeps") .outdir(".") .files(ToolBox.testSrc + "/DepsAndAnno.java") diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/defaultMethods/AssertionsTest.java --- a/langtools/test/tools/javac/defaultMethods/AssertionsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/defaultMethods/AssertionsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -28,10 +28,8 @@ * is not generated into an interface * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox Assertions AssertionsTest + * @build toolbox.ToolBox toolbox.JavaTask Assertions AssertionsTest * @run main AssertionsTest -da * @run main AssertionsTest -ea:test.Assertions Inner * @run main AssertionsTest -ea:test.Outer Outer @@ -41,17 +39,21 @@ import java.util.Arrays; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AssertionsTest { public static void main(String... args) throws Exception { String testClasses = System.getProperty("test.classes"); ToolBox tb = new ToolBox(); - tb.new JavaTask().classpath(testClasses) + new JavaTask(tb).classpath(testClasses) .vmOptions(args[0]) .className("test.Assertions") .classArgs(Arrays.copyOfRange(args, 1, args.length)) .includeStandardOptions(false) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/defaultMethodsVisibility/DefaultMethodsNotVisibleForSourceLessThan8Test.java --- a/langtools/test/tools/javac/defaultMethodsVisibility/DefaultMethodsNotVisibleForSourceLessThan8Test.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/defaultMethodsVisibility/DefaultMethodsNotVisibleForSourceLessThan8Test.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,16 +28,18 @@ * Default methods should be visible under source previous to 8 * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main DefaultMethodsNotVisibleForSourceLessThan8Test */ import java.nio.file.Files; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class DefaultMethodsNotVisibleForSourceLessThan8Test { // common definitions @@ -132,19 +134,19 @@ /* as an extra check let's make sure that interface 'I' can't be compiled * with source < 8 */ - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .options("-source", source) .sources(ISrc) - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); //but it should compile with source >= 8 - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .sources(ISrc) .run(); - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .classpath(outDir) .options("-source", source) @@ -154,7 +156,7 @@ void testLegacyImplementations() throws Exception { //compile C1-4 - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .classpath(outDir) .options("-source", source) @@ -164,7 +166,7 @@ void testLegacyInvocations() throws Exception { //compile LegacyInvocation - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .classpath(outDir) .options("-source", source) @@ -174,7 +176,7 @@ void testSuperInvocations() throws Exception { //compile SubA, SubB - tb.new JavacTask() + new JavacTask(tb) .outdir(outDir) .classpath(outDir) .options("-source", source) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java --- a/langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -24,18 +24,20 @@ /* * @test * @bug 4263768 4785453 - * @summary Verify that the compiler does not crash when java.lang is not + * @summary Verify that the compiler does not crash when java.lang is not available * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main NoJavaLangTest */ import java.nio.file.*; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class NoJavaLangTest { private static final String noJavaLangSrc = @@ -64,7 +66,7 @@ // sanity check, with java.lang available void testStandard() { - tb.new JavacTask() + new JavacTask(tb) .sources(noJavaLangSrc) .run(); } @@ -80,7 +82,7 @@ void testModulePath() throws Exception { // need to ensure there is an empty java.base to avoid different error message Files.createDirectories(Paths.get("modules/java.base")); - tb.new JavacTask() + new JavacTask(tb) .sources("module java.base { }") .outdir("modules/java.base") .run(); @@ -93,12 +95,12 @@ private void test(String[] options, String expect) { System.err.println("Testing " + java.util.Arrays.toString(options)); - String out = tb.new JavacTask() + String out = new JavacTask(tb) .options(options) .sources(noJavaLangSrc) - .run(ToolBox.Expect.FAIL, 3) + .run(Task.Expect.FAIL, 3) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!out.trim().equals(expect)) { throw new AssertionError("javac generated error output is not correct"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/file/ExplodedImage.java --- a/langtools/test/tools/javac/file/ExplodedImage.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/file/ExplodedImage.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -21,8 +21,21 @@ * questions. */ -import com.sun.source.util.JavacTask; -import com.sun.tools.javac.code.Symbol.ClassSymbol; +/** + * @test + * @bug 8067138 + * @summary Verify that compiling against the exploded JDK image works, and that Locations close + * the directory streams properly when working with exploded JDK image. + * @library /tools/lib + * @modules jdk.compiler/com.sun.tools.javac.api + * jdk.compiler/com.sun.tools.javac.code + * jdk.compiler/com.sun.tools.javac.main + * jdk.jdeps/com.sun.tools.javap + * @build toolbox.ToolBox ExplodedImage + * @run main/othervm ExplodedImage modules/* testDirectoryStreamClosed + * @run main/othervm ExplodedImage modules/* testCanCompileAgainstExplodedImage + */ + import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -43,21 +56,10 @@ import javax.tools.StandardLocation; import javax.tools.ToolProvider; -/** - * @test - * @bug 8067138 - * @summary Verify that compiling against the exploded JDK image works, and that Locations close - * the directory streams properly when working with exploded JDK image. - * @library /tools/lib - * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.code - * jdk.compiler/com.sun.tools.javac.file - * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ExplodedImage - * @run main/othervm ExplodedImage modules/* testDirectoryStreamClosed - * @run main/othervm ExplodedImage modules/* testCanCompileAgainstExplodedImage - */ +import com.sun.source.util.JavacTask; +import com.sun.tools.javac.code.Symbol.ClassSymbol; + +import toolbox.ToolBox; public class ExplodedImage { public static void main(String... args) throws IOException { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/importscope/CompletionFailureDuringImport.java --- a/langtools/test/tools/javac/importscope/CompletionFailureDuringImport.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/importscope/CompletionFailureDuringImport.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,9 +27,9 @@ * @summary Verify that CompletionFailure thrown during listing of import content is handled properly. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap + * @build toolbox.ToolBox toolbox.JavacTask + * @run main CompletionFailureDuringImport */ import java.nio.file.Files; @@ -37,6 +37,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class CompletionFailureDuringImport { public static void main(String... args) throws Exception { new CompletionFailureDuringImport().run(); @@ -45,7 +49,7 @@ ToolBox tb = new ToolBox(); void run() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .sources("package p; public class Super { public static final int I = 0; }", "package p; public class Sub extends Super { }") @@ -75,13 +79,13 @@ } void doTest(String importText, String useText, String... expectedOutput) { - List log = tb.new JavacTask() + List log = new JavacTask(tb) .classpath(".") .sources(importText + " public class Test { " + useText + " }") .options("-XDrawDiagnostics") - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!log.equals(Arrays.asList(expectedOutput))) { throw new AssertionError("Unexpected output: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/importscope/ImportDependenciesTest.java --- a/langtools/test/tools/javac/importscope/ImportDependenciesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/importscope/ImportDependenciesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,10 +27,8 @@ * @summary The test checks dependencies through type parameters and implements/extends statements. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ImportDependenciesTest + * @build toolbox.ToolBox ImportDependenciesTest * @run main ImportDependenciesTest */ @@ -43,6 +41,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import toolbox.ToolBox; + /** * The test checks that code which contains dependencies through type parameters, * implements/extends statements compiles properly. All combinations of diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/importscope/ImportMembersTest.java --- a/langtools/test/tools/javac/importscope/ImportMembersTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/importscope/ImportMembersTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary The test checks possibility of class members to be imported. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ImportMembersTest + * @build toolbox.ToolBox ImportMembersTest * @run main ImportMembersTest */ @@ -41,6 +40,8 @@ import java.util.Arrays; import java.util.List; +import toolbox.ToolBox; + /** * The test checks that members of a class, an enum, an interface or annotation * can be imported with help of a static import or an import statement. diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/importscope/NegativeCyclicDependencyTest.java --- a/langtools/test/tools/javac/importscope/NegativeCyclicDependencyTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/importscope/NegativeCyclicDependencyTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -27,10 +27,8 @@ * @summary The negative test against cyclic dependencies. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox NegativeCyclicDependencyTest + * @build toolbox.ToolBox NegativeCyclicDependencyTest * @run main NegativeCyclicDependencyTest */ @@ -41,6 +39,8 @@ import java.util.Arrays; import java.util.List; +import toolbox.ToolBox; + /** * The test generates the following code: * diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/innerClassFile/InnerClassFileTest.java --- a/langtools/test/tools/javac/innerClassFile/InnerClassFileTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/innerClassFile/InnerClassFileTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,16 +27,17 @@ * @summary Prob w/static inner class with same name as a regular class * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main InnerClassFileTest */ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + // Original test: test/tools/javac/innerClassFile/Driver.sh public class InnerClassFileTest { @@ -108,7 +109,7 @@ } void compileFiles() throws Exception { - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .classpath(".") .sourcepath("src") @@ -118,7 +119,7 @@ tb.deleteFiles("y/R3.class"); - tb.new JavacTask() + new JavacTask(tb) .outdir(".") .classpath(".") .sourcepath("src") diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/javazip/JavaZipTest.java --- a/langtools/test/tools/javac/javazip/JavaZipTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/javazip/JavaZipTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,10 +27,8 @@ * @summary check that source files inside zip files on the class path are ignored * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask * @run main JavaZipTest */ @@ -38,6 +36,11 @@ import java.nio.file.Paths; import java.util.Arrays; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javac/javazip/Test.sh public class JavaZipTest { @@ -84,8 +87,8 @@ public void test() throws Exception { createOutputDirAndSourceFiles(); createZipsAndJars(); - check(ToolBox.Expect.SUCCESS, successfulCompilationArgs); - check(ToolBox.Expect.FAIL, unsuccessfulCompilationArgs); + check(Task.Expect.SUCCESS, successfulCompilationArgs); + check(Task.Expect.FAIL, unsuccessfulCompilationArgs); } void createOutputDirAndSourceFiles() throws Exception { @@ -101,15 +104,15 @@ void createZipsAndJars() throws Exception { //jar and zip creation for (String[] args: jarArgs) { - tb.new JarTask().run(args).writeAll(); + new JarTask(tb).run(args).writeAll(); } } - void check(ToolBox.Expect expectedStatus, String[][] theArgs) throws Exception { + void check(Task.Expect expectedStatus, String[][] theArgs) throws Exception { for (String[] allArgs: theArgs) { - tb.new JavacTask() + new JavacTask(tb) .options(opts(allArgs)) .files(files(allArgs)) .run(expectedStatus) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/lambda/T8129740/SourceToSourceTranslationTest.java --- a/langtools/test/tools/javac/lambda/T8129740/SourceToSourceTranslationTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/lambda/T8129740/SourceToSourceTranslationTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,10 +27,9 @@ * @summary Incorrect class file created when passing lambda in inner class constructor * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox * @run compile -XD-printsource SourceForTranslation.java * @run main SourceToSourceTranslationTest */ @@ -39,6 +38,8 @@ import java.nio.file.Paths; import java.util.List; +import toolbox.ToolBox; + public class SourceToSourceTranslationTest { public static void main(String[] args) throws Exception { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/lambda/lambdaNaming/TestNonSerializableLambdaNameStability.java --- a/langtools/test/tools/javac/lambda/lambdaNaming/TestNonSerializableLambdaNameStability.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/lambda/lambdaNaming/TestNonSerializableLambdaNameStability.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,21 +28,24 @@ * @library /tools/lib * @modules jdk.jdeps/com.sun.tools.classfile * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main TestNonSerializableLambdaNameStability */ -import com.sun.tools.classfile.ClassFile; -import com.sun.tools.classfile.Method; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.tools.StandardLocation; +import com.sun.tools.classfile.ClassFile; +import com.sun.tools.classfile.Method; + +import toolbox.JavacTask; +import toolbox.ToolBox; + public class TestNonSerializableLambdaNameStability { public static void main(String... args) throws Exception { @@ -71,12 +74,12 @@ ToolBox tb = new ToolBox(); try (ToolBox.MemoryFileManager fm = new ToolBox.MemoryFileManager()) { - tb.new JavacTask() + new JavacTask(tb) .sources(sources.toArray(new String[sources.size()])) .fileManager(fm) .run(); - for (String file : fm.files.get(StandardLocation.CLASS_OUTPUT).keySet()) { + for (String file : fm.getFileNames(StandardLocation.CLASS_OUTPUT)) { byte[] fileBytes = fm.getFileBytes(StandardLocation.CLASS_OUTPUT, file); try (InputStream in = new ByteArrayInputStream(fileBytes)) { boolean foundLambdaMethod = false; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/lambda/lambdaNaming/TestSerializedLambdaNameStability.java --- a/langtools/test/tools/javac/lambda/lambdaNaming/TestSerializedLambdaNameStability.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/lambda/lambdaNaming/TestSerializedLambdaNameStability.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,10 +27,9 @@ * @summary Desugar serializable lambda bodies using more robust naming scheme * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main TestSerializedLambdaNameStability */ @@ -40,6 +39,9 @@ import java.lang.reflect.Method; import java.nio.file.*; +import toolbox.JavacTask; +import toolbox.ToolBox; + public class TestSerializedLambdaNameStability { final ClassLoader writingClassLoader; @@ -159,7 +161,7 @@ else throw new Exception("Did not expect to load " + name); Path srcFile = Paths.get(sourceBaseDir, context, srcName + ".java"); - tb.new JavacTask() + new JavacTask(tb) .outdir(compiledDir) .files(srcFile) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/links/LinksTest.java --- a/langtools/test/tools/javac/links/LinksTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/links/LinksTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,10 +27,8 @@ * @summary javac no longer follows symlinks * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main LinksTest */ @@ -38,6 +36,9 @@ import java.nio.file.Files; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.ToolBox; + // Original test: test/tools/javac/links/links.sh public class LinksTest { @@ -65,7 +66,7 @@ // If symbolic link was successfully created, // try a compilation that will use it. - tb.new JavacTask() + new JavacTask(tb) .sourcepath(".") .outdir(".") .sources(TSrc) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AbstractOrInnerClassServiceImplTest.java --- a/langtools/test/tools/javac/modules/AbstractOrInnerClassServiceImplTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AbstractOrInnerClassServiceImplTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,13 +29,17 @@ * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main AbstractOrInnerClassServiceImplTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AbstractOrInnerClassServiceImplTest extends ModuleTestBase { public static void main(String... args) throws Exception { AbstractOrInnerClassServiceImplTest t = new AbstractOrInnerClassServiceImplTest(); @@ -52,13 +56,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:39: compiler.err.service.implementation.is.abstract: p2.Impl")) throw new Exception("expected output not found"); } @@ -73,13 +77,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:45: compiler.err.service.implementation.is.inner: p2.Outer.Inner")) throw new Exception("expected output not found"); } @@ -94,13 +98,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:45: compiler.err.service.implementation.is.abstract: p2.Outer.Inner")) throw new Exception("expected output not found"); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AddLimitMods.java --- a/langtools/test/tools/javac/modules/AddLimitMods.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AddLimitMods.java Thu Mar 31 15:20:50 2016 -0700 @@ -33,7 +33,7 @@ * jdk.compiler/com.sun.tools.javac.processing * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask toolbox.JavaTask ModuleTestBase * @run main AddLimitMods */ @@ -65,6 +65,12 @@ import com.sun.tools.javac.processing.JavacProcessingEnvironment; import com.sun.tools.javac.util.Context; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AddLimitMods extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -96,14 +102,14 @@ Files.createDirectories(modulePath); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(m3)) .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(m2)) @@ -111,26 +117,26 @@ .writeAll(); //real test - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "java.base") .outdir(modulePath) .files(findJavaFiles(m1)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "java.base", "-addmods", "m2") .outdir(modulePath) .files(findJavaFiles(m1)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "java.base", @@ -140,7 +146,7 @@ .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "m2") @@ -149,16 +155,16 @@ .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "m3") .outdir(modulePath) .files(findJavaFiles(m1)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-XDshouldStopPolicyIfNoError=FLOW", "-limitmods", "m3", @@ -185,7 +191,7 @@ Files.createDirectories(modulePath); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(moduleSrc)) @@ -199,14 +205,14 @@ Files.createDirectories(cpOut); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString()) .outdir(cpOut) .files(findJavaFiles(cpSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-addmods", "ALL-MODULE-PATH") .outdir(cpOut) @@ -219,43 +225,43 @@ "- compiler.err.addmods.all.module.path.invalid", "1 error"); - actual = tb.new JavacTask() + actual = new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString(), "-XDrawDiagnostics", "-addmods", "ALL-MODULE-PATH") .outdir(modulePath) .files(findJavaFiles(moduleSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!Objects.equals(actual, expected)) { throw new IllegalStateException("incorrect errors; actual=" + actual + "; expected=" + expected); } - actual = tb.new JavacTask() + actual = new JavacTask(tb) .options("-Xmodule:java.base", "-XDrawDiagnostics", "-addmods", "ALL-MODULE-PATH") .outdir(cpOut) .files(findJavaFiles(cpSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!Objects.equals(actual, expected)) { throw new IllegalStateException("incorrect errors; actual=" + actual + "; expected=" + expected); } - actual = tb.new JavacTask(ToolBox.Mode.CMDLINE) + actual = new JavacTask(tb, Task.Mode.CMDLINE) .options("-source", "8", "-target", "8", "-XDrawDiagnostics", "-addmods", "ALL-MODULE-PATH") .outdir(cpOut) .files(findJavaFiles(cpSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!actual.contains("javac: option -addmods not allowed with target 1.8")) { throw new IllegalStateException("incorrect errors; actual=" + actual); @@ -263,14 +269,14 @@ tb.writeJavaFiles(cpSrc, "module m1 {}"); - actual = tb.new JavacTask() + actual = new JavacTask(tb) .options("-XDrawDiagnostics", "-addmods", "ALL-MODULE-PATH") .outdir(cpOut) .files(findJavaFiles(cpSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!Objects.equals(actual, expected)) { throw new IllegalStateException("incorrect errors; actual=" + actual + "; expected=" + expected); @@ -287,12 +293,12 @@ Files.createDirectories(classpathOut); - tb.new JavacTask() + new JavacTask(tb) .outdir(classpathOut) .files(findJavaFiles(classpathSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); Path automaticSrc = base.resolve("automatic-src"); Path automaticOut = base.resolve("automatic-out"); @@ -302,12 +308,12 @@ Files.createDirectories(automaticOut); - tb.new JavacTask() + new JavacTask(tb) .outdir(automaticOut) .files(findJavaFiles(automaticSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); Path modulePath = base.resolve("module-path"); @@ -315,7 +321,7 @@ Path automaticJar = modulePath.resolve("automatic.jar"); - tb.new JarTask(automaticJar) + new JarTask(tb, automaticJar) .baseDir(automaticOut) .files("automatic/Automatic.class") .run(); @@ -327,13 +333,13 @@ "module m1 { exports api; }", "package api; public class Api { public void test() { } }"); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); int index = 0; @@ -369,7 +375,7 @@ tb.writeJavaFiles(m2Runtime, moduleInfo, testClassNamed.toString()); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString()) .outdir(out) .files(findJavaFiles(m2Runtime)) @@ -380,7 +386,7 @@ String output; try { - output = tb.new JavaTask() + output = new JavaTask(tb) .vmOptions(augmentOptions(options, Collections.emptyList(), "-modulepath", modulePath.toString() + File.pathSeparator + out.getParent().toString(), @@ -389,10 +395,10 @@ "-m", "m2/test.Test")) .run() .writeAll() - .getOutput(ToolBox.OutputKind.STDERR); + .getOutput(Task.OutputKind.STDERR); success = true; - } catch (ToolBox.TaskError err) { + } catch (Task.TaskError err) { success = false; output = ""; } @@ -410,7 +416,7 @@ "-Aoutput=" + output, "-XDaccessInternalAPI=true" ) : Collections.emptyList(); - tb.new JavacTask() + new JavacTask(tb) .options(augmentOptions(options, auxOptions, "-modulepath", modulePath.toString(), @@ -418,7 +424,7 @@ "-XDshouldStopPolicyIfNoError=FLOW")) .outdir(modulePath) .files(findJavaFiles(m2)) - .run(success ? ToolBox.Expect.SUCCESS : ToolBox.Expect.FAIL) + .run(success ? Task.Expect.SUCCESS : Task.Expect.FAIL) .writeAll(); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AddReadsTest.java --- a/langtools/test/tools/javac/modules/AddReadsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AddReadsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,7 +28,7 @@ * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask toolbox.JavapTask ModuleTestBase * @run main AddReadsTest */ @@ -45,6 +45,12 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.util.ElementFilter; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AddReadsTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -65,20 +71,20 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("Test.java:1:44: compiler.err.not.def.access.package.cant.access: api.Api, api")) throw new Exception("expected output not found"); //test add dependencies: - tb.new JavacTask() + new JavacTask(tb) .options("-XaddReads:m2=m1", "-modulesourcepath", src.toString(), "-processor", VerifyRequires.class.getName()) @@ -87,17 +93,17 @@ .run() .writeAll(); - String decompiled = tb.new JavapTask() + String decompiled = new JavapTask(tb) .options("-verbose", classes.resolve("m2").resolve("module-info.class").toString()) .run() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (decompiled.contains("m1")) { throw new Exception("Incorrectly refers to m1 module."); } //cyclic dependencies OK when created through addReads: - tb.new JavacTask() + new JavacTask(tb) .options("-XaddReads:m2=m1,m1=m2", "-modulesourcepath", src.toString()) .outdir(classes) @@ -108,7 +114,7 @@ tb.writeJavaFiles(src_m2, "module m2 { requires m1; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-XaddReads:m1=m2", "-modulesourcepath", src.toString()) .outdir(classes) @@ -158,7 +164,7 @@ "module m1 { }", "package impl; public class Impl { api.Api api; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString(), "-XaddReads:m1=ALL-UNNAMED", "-XDrawDiagnostics") @@ -184,7 +190,7 @@ "package api; public class Api { public static void test() { } }", "package impl; public class Impl { { api.Api.test(); } }"); - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString(), "-modulesourcepath", moduleSrc.toString(), "-XaddReads:m1=ALL-UNNAMED", @@ -206,7 +212,7 @@ tb.writeJavaFiles(src, "package impl; public class Impl { api.Api a; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString(), "-XaddReads:java.base=ALL-UNNAMED", "-Xmodule:java.base") @@ -226,7 +232,7 @@ tb.writeJavaFiles(src, "package impl; public class Impl { javax.swing.JButton b; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-XaddReads:java.base=java.desktop", "-Xmodule:java.base") .outdir(classes) @@ -242,13 +248,13 @@ Path legacyClasses = base.resolve("legacy-classes"); Files.createDirectories(legacyClasses); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options() .outdir(legacyClasses) .files(findJavaFiles(legacySrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new Exception("unexpected output: " + log); @@ -260,7 +266,7 @@ Path jar = lib.resolve("test-api-1.0.jar"); - tb.new JarTask(jar) + new JarTask(tb, jar) .baseDir(legacyClasses) .files("api/Api.class") .run(); @@ -278,7 +284,7 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) @@ -293,7 +299,7 @@ tb.writeJavaFiles(unnamedSrc, "package impl; public class Impl { }"); - tb.new JavacTask() + new JavacTask(tb) .options("-XaddReads:m1=ALL-UNNAMED", "-Xmodule:m1", "-modulepath", classes.toString()) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AnnotationProcessing.java --- a/langtools/test/tools/javac/modules/AnnotationProcessing.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AnnotationProcessing.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main AnnotationProcessing */ @@ -58,6 +57,10 @@ import javax.lang.model.util.ElementFilter; import javax.lang.model.util.ElementScanner9; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AnnotationProcessing extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -77,7 +80,7 @@ "module m1 { }", "package impl; public class Impl { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString(), "-processor", AP.class.getName(), "-AexpectedEnclosedElements=m1=>impl") @@ -85,7 +88,7 @@ .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new AssertionError("Unexpected output: " + log); @@ -109,7 +112,7 @@ "module m2 { }", "package impl2; public class Impl2 { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString(), "-processor", AP.class.getName(), "-AexpectedEnclosedElements=m1=>impl1,m2=>impl2") @@ -117,7 +120,7 @@ .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new AssertionError("Unexpected output: " + log); @@ -206,13 +209,13 @@ "package api; public class Api { }", "package impl; public class Impl extends api.Api { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-doe", "-processor", VerifyUsesProvidesAP.class.getName()) .outdir(classes) .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new AssertionError("Unexpected output: " + log); @@ -260,7 +263,7 @@ tb.writeJavaFiles(src, "package api; public class Api { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-processor", VerifyPackageNoModule.class.getName(), "-source", "8", "-Xlint:-options") @@ -268,7 +271,7 @@ .files(findJavaFiles(src)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new AssertionError("Unexpected output: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AnnotationProcessorsInModulesTest.java --- a/langtools/test/tools/javac/modules/AnnotationProcessorsInModulesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AnnotationProcessorsInModulesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -25,11 +25,9 @@ * @test * @summary Verify that annotation processors inside modules works * @library /tools/lib - * @modules - * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @modules jdk.compiler/com.sun.tools.javac.api + * jdk.compiler/com.sun.tools.javac.main + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main AnnotationProcessorsInModulesTest */ @@ -38,6 +36,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AnnotationProcessorsInModulesTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -133,13 +135,13 @@ annotationProcessorModule2, annotationProcessor2); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(processorCompiledModules) .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new AssertionError("Unexpected output: " + log); @@ -156,14 +158,14 @@ @Test void testUseOnlyOneProcessor(Path base) throws Exception { initialization(base); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-processormodulepath", processorCompiledModules.toString(), "-processor", "mypkg2.MyProcessor2") .outdir(classes) .sources(testClass) .run() .writeAll() - .getOutput(ToolBox.OutputKind.STDOUT); + .getOutput(Task.OutputKind.STDOUT); if (!log.trim().equals("the annotation processor 2 is working!")) { throw new AssertionError("Unexpected output: " + log); } @@ -172,27 +174,27 @@ @Test void testAnnotationProcessorExecutionOrder(Path base) throws Exception { initialization(base); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-processormodulepath", processorCompiledModules.toString(), "-processor", "mypkg1.MyProcessor1,mypkg2.MyProcessor2") .outdir(classes) .sources(testClass) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.STDOUT); + .getOutputLines(Task.OutputKind.STDOUT); if (!log.equals(Arrays.asList("the annotation processor 1 is working!", "the annotation processor 2 is working!"))) { throw new AssertionError("Unexpected output: " + log); } - log = tb.new JavacTask() + log = new JavacTask(tb) .options("-processormodulepath", processorCompiledModules.toString(), "-processor", "mypkg2.MyProcessor2,mypkg1.MyProcessor1") .outdir(classes) .sources(testClass) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.STDOUT); + .getOutputLines(Task.OutputKind.STDOUT); if (!log.equals(Arrays.asList("the annotation processor 2 is working!", "the annotation processor 1 is working!"))) { throw new AssertionError("Unexpected output: " + log); @@ -202,14 +204,14 @@ @Test void testErrorOutputIfOneProcessorNameIsIncorrect(Path base) throws Exception { initialization(base); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-processormodulepath", processorCompiledModules.toString(), "-processor", "mypkg2.MyProcessor2,noPackage.noProcessor,mypkg1.MyProcessor1") .outdir(classes) .sources(testClass) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.STDOUT, ToolBox.OutputKind.DIRECT).toString(); + .getOutputLines(Task.OutputKind.STDOUT, Task.OutputKind.DIRECT).toString(); if (!log.trim().equals("[the annotation processor 2 is working!, - compiler.err.proc.processor.not.found: noPackage.noProcessor, 1 error]")) { throw new AssertionError("Unexpected output: " + log); } @@ -218,14 +220,14 @@ @Test void testOptionsExclusion(Path base) throws Exception { initialization(base); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-processormodulepath", processorCompiledModules.toString(), "-processorpath", processorCompiledModules.toString()) .outdir(classes) .sources(testClass) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!log.equals(Arrays.asList("- compiler.err.processorpath.no.processormodulepath", "1 error"))) { throw new AssertionError("Unexpected output: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/AutomaticModules.java --- a/langtools/test/tools/javac/modules/AutomaticModules.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/AutomaticModules.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,18 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask toolbox.JarTask ModuleTestBase * @run main AutomaticModules */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class AutomaticModules extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -51,13 +55,13 @@ Path legacyClasses = base.resolve("legacy-classes"); Files.createDirectories(legacyClasses); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options() .outdir(legacyClasses) .files(findJavaFiles(legacySrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new Exception("unexpected output: " + log); @@ -69,7 +73,7 @@ Path jar = modulePath.resolve("test-api-1.0.jar"); - tb.new JarTask(jar) + new JarTask(tb, jar) .baseDir(legacyClasses) .files("api/Api.class") .run(); @@ -85,7 +89,7 @@ "module m1 { requires test.api; }", "package impl; public class Impl { public void e(api.Api api) { api.actionPerformed(null); } }"); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString(), "-modulepath", modulePath.toString(), "-addmods", "java.desktop") .outdir(classes) .files(findJavaFiles(moduleSrc)) @@ -102,13 +106,13 @@ Path legacyClasses = base.resolve("legacy-classes"); Files.createDirectories(legacyClasses); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options() .outdir(legacyClasses) .files(findJavaFiles(legacySrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new Exception("unexpected output: " + log); @@ -120,14 +124,14 @@ Path apiJar = modulePath.resolve("test-api-1.0.jar"); - tb.new JarTask(apiJar) + new JarTask(tb, apiJar) .baseDir(legacyClasses) .files("api/Api.class") .run(); Path baseJar = base.resolve("base.jar"); - tb.new JarTask(baseJar) + new JarTask(tb, baseJar) .baseDir(legacyClasses) .files("base/Base.class") .run(); @@ -143,7 +147,7 @@ "module m1 { requires test.api; }", "package impl; public class Impl { public void e(api.Api api) { api.run(\"\"); } }"); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString(), "-modulepath", modulePath.toString(), "-classpath", baseJar.toString()) .outdir(classes) .files(findJavaFiles(moduleSrc)) @@ -158,12 +162,12 @@ Path automaticClasses = base.resolve("automaticClasses"); tb.createDirectories(automaticClasses); - String automaticLog = tb.new JavacTask() + String automaticLog = new JavacTask(tb) .outdir(automaticClasses) .files(findJavaFiles(automaticSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!automaticLog.isEmpty()) throw new Exception("expected output not found: " + automaticLog); @@ -174,7 +178,7 @@ Path automaticJar = modulePath.resolve("automatic-1.0.jar"); - tb.new JarTask(automaticJar) + new JarTask(tb, automaticJar) .baseDir(automaticClasses) .files("api/Api.class") .run(); @@ -189,7 +193,7 @@ "module m1 { requires public automatic; }", "package dep; public class Dep { api.Api api; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString()) .outdir(depClasses) .files(findJavaFiles(depSrc)) @@ -198,7 +202,7 @@ Path moduleJar = modulePath.resolve("m1.jar"); - tb.new JarTask(moduleJar) + new JarTask(tb, moduleJar) .baseDir(depClasses) .files("module-info.class", "dep/Dep.class") .run(); @@ -213,7 +217,7 @@ "module m2 { requires automatic; }", "package test; public class Test { }"); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString()) .outdir(testClasses) .files(findJavaFiles(testSrc)) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/DoclintOtherModules.java --- a/langtools/test/tools/javac/modules/DoclintOtherModules.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/DoclintOtherModules.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main DoclintOtherModules */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class DoclintOtherModules extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -57,13 +60,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString(), "-Xlint:deprecation", "-Xdoclint:-reference", "-Werror") .outdir(classes) .files(findJavaFiles(m1)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/DuplicateClassTest.java --- a/langtools/test/tools/javac/modules/DuplicateClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/DuplicateClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main DuplicateClassTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class DuplicateClassTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -56,13 +59,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-modulesourcepath", base.toString()) .outdir(classes) .files(findJavaFiles(base)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found; output: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/EdgeCases.java --- a/langtools/test/tools/javac/modules/EdgeCases.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/EdgeCases.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -29,8 +29,7 @@ * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.code * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main EdgeCases */ @@ -51,10 +50,15 @@ import javax.tools.ToolProvider; import com.sun.source.tree.CompilationUnitTree; -import com.sun.source.util.JavacTask; +//import com.sun.source.util.JavacTask; // conflicts with toolbox.JavacTask import com.sun.tools.javac.api.JavacTaskImpl; import com.sun.tools.javac.code.Symbol.ModuleSymbol; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class EdgeCases extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -68,13 +72,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XaddExports:undef/undef=ALL-UNNAMED", "-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("- compiler.err.cant.find.module: undef", "Test.java:1:27: compiler.err.doesnt.exist: undef", @@ -94,7 +98,8 @@ tb.writeJavaFiles(m1, "module m1 { }"); Iterable files = fm.getJavaFileObjects(findJavaFiles(moduleSrc)); - JavacTask task = (JavacTask) compiler.getTask(null, fm, null, null, null, files); + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) compiler.getTask(null, fm, null, null, null, files); task.analyze(); @@ -160,14 +165,14 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("Test.java:1:52: compiler.err.not.def.access.class.intf.cant.access: call(), api1.Api1") || !log.contains("Test.java:1:76: compiler.err.not.def.access.class.intf.cant.access: toString(), java.lang.Object")) @@ -183,12 +188,12 @@ Path automaticClasses = base.resolve("automaticClasses"); tb.createDirectories(automaticClasses); - String automaticLog = tb.new JavacTask() + String automaticLog = new JavacTask(tb) .outdir(automaticClasses) .files(findJavaFiles(automaticSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!automaticLog.isEmpty()) throw new Exception("expected output not found: " + automaticLog); @@ -199,7 +204,7 @@ Path automaticJar = modulePath.resolve("m1-1.0.jar"); - tb.new JarTask(automaticJar) + new JarTask(tb, automaticJar) .baseDir(automaticClasses) .files("api1/Api1.class") .run(); @@ -216,7 +221,7 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-modulesourcepath", src.toString()) .outdir(classes) @@ -224,7 +229,7 @@ .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modulePath.toString(), "-modulesourcepath", src.toString()) .outdir(classes) @@ -244,18 +249,18 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-sourcepath", src_m1.toString(), "-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src_m1.resolve("test"))) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); tb.writeJavaFiles(src_m1, "module m1 {}"); - tb.new JavacTask() + new JavacTask(tb) .options("-sourcepath", src_m1.toString()) .outdir(classes) .files(findJavaFiles(src_m1.resolve("test"))) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/GraphsTest.java --- a/langtools/test/tools/javac/modules/GraphsTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/GraphsTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main GraphsTest */ @@ -40,6 +39,11 @@ import java.util.List; import java.util.regex.Pattern; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class GraphsTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -77,7 +81,7 @@ Path jarModules = Files.createDirectories(base.resolve("jarModules")); Path jar = jarModules.resolve("J.jar"); - tb.new JarTask(jar) + new JarTask(tb, jar) .baseDir(base.resolve("jar/J")) .files(".") .run() @@ -109,7 +113,7 @@ .classes("package p; public class Positive { openO.O o; openN.N n; openL.L l; }") .write(base.resolve("positiveSrc")); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) .outdir(Files.createDirectories(base.resolve("positive"))) .files(findJavaFiles(positiveSrc)) @@ -118,13 +122,13 @@ //negative case Path negativeSrc = m.classes("package p; public class Negative { closedO.O o; closedN.N n; closedL.L l; }") .write(base.resolve("negativeSrc")); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) .outdir(Files.createDirectories(base.resolve("negative"))) .files(findJavaFiles(negativeSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "Negative.java:1:43: compiler.err.doesnt.exist: closedO", @@ -135,16 +139,16 @@ } //multi module mode m.write(modules); - List out = tb.new JavacTask() + List out = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", modules + "/*/src", "-mp", jarModules.toString() ) .outdir(Files.createDirectories(base.resolve("negative"))) .files(findJavaFiles(modules)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); expected = Arrays.asList( "Negative.java:1:43: compiler.err.not.def.access.package.cant.access: closedO.O, closedO", "Negative.java:1:56: compiler.err.not.def.access.package.cant.access: closedN.N, closedN", @@ -185,14 +189,14 @@ .requires("M") .classes("package p; public class A { A(pack.Clazz cl){} } ") .write(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", modules + "/*/src") .outdir(Files.createDirectories(base.resolve("negative"))) .files(findJavaFiles(modules)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); String expected = "A.java:1:35: compiler.err.not.def.access.package.cant.access: pack.Clazz, pack"; if (!log.contains(expected)) { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/HelloWorldTest.java --- a/langtools/test/tools/javac/modules/HelloWorldTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/HelloWorldTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,18 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main HelloWorldTest */ import java.nio.file.*; import javax.tools.*; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class HelloWorldTest extends ModuleTestBase { public static void main(String... args) throws Exception { HelloWorldTest t = new HelloWorldTest(); @@ -63,13 +67,13 @@ Path smallRtJar = base.resolve("small-rt.jar"); try (JavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)) { - tb.new JarTask(smallRtJar) + new JarTask(tb, smallRtJar) .files(fm, StandardLocation.PLATFORM_CLASS_PATH, "java.lang.**", "java.io.*", "java.util.*") .run(); } - tb.new JavacTask() + new JavacTask(tb) .options("-source", "8", "-target", "8", "-bootclasspath", smallRtJar.toString()) @@ -88,7 +92,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(src.resolve("HelloWorld.java")) .run(); @@ -105,7 +109,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .files(src.resolve("module-info.java"), src.resolve("p/HelloWorld.java")) .run() @@ -126,7 +130,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(classes) .files(src_m1.resolve("p/HelloWorld.java")) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/MOptionTest.java --- a/langtools/test/tools/javac/modules/MOptionTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/MOptionTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,8 +29,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main MOptionTest */ @@ -38,7 +37,9 @@ import java.nio.file.Path; import java.nio.file.attribute.FileTime; -import com.sun.source.util.JavacTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; public class MOptionTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -56,9 +57,9 @@ "module m1 {}", "package test; public class Test {}"); - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); Path moduleInfoClass = build.resolve("m1/module-info.class"); @@ -79,9 +80,9 @@ Thread.sleep(2000); //timestamps - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); if (!moduleInfoTimeStamp.equals(Files.getLastModifiedTime(moduleInfoClass))) { @@ -96,9 +97,9 @@ Files.setLastModifiedTime(testTest, FileTime.fromMillis(System.currentTimeMillis())); - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); if (!moduleInfoTimeStamp.equals(Files.getLastModifiedTime(moduleInfoClass))) { @@ -121,13 +122,13 @@ "module m1 {}", "package test; public class Test {}"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-m", "m1", "-modulesourcepath", src.toString()) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.output.dir.must.be.specified.with.dash.m.option")) throw new Exception("expected output not found"); @@ -144,13 +145,13 @@ "module m1 {}", "package test; public class Test {}"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-m", "m1", "-d", build.toString()) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.modulesourcepath.must.be.specified.with.dash.m.option")) throw new Exception("expected output not found"); @@ -172,9 +173,9 @@ "module m2 {}", "package p2; public class C2 {}"); - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1,m2", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); Path m1ModuleInfoClass = build.resolve("m1/module-info.class"); @@ -213,9 +214,9 @@ Thread.sleep(2000); //timestamps - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1,m2", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); if (!m1ModuleInfoTimeStamp.equals(Files.getLastModifiedTime(m1ModuleInfoClass))) { @@ -239,9 +240,9 @@ Files.setLastModifiedTime(C1Source, FileTime.fromMillis(System.currentTimeMillis())); Files.setLastModifiedTime(C2Source, FileTime.fromMillis(System.currentTimeMillis())); - tb.new JavacTask() + new JavacTask(tb) .options("-m", "m1,m2", "-modulesourcepath", src.toString(), "-d", build.toString()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); if (!m1ModuleInfoTimeStamp.equals(Files.getLastModifiedTime(m1ModuleInfoClass))) { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModuleFinderTest.java --- a/langtools/test/tools/javac/modules/ModuleFinderTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModuleFinderTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,14 +28,18 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main ModuleFinderTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModuleFinderTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -53,18 +57,18 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .files(findJavaFiles(src)) .run() .writeAll(); - tb.new JarTask(modules.resolve("m1-1.jar")) + new JarTask(tb, modules.resolve("m1-1.jar")) .baseDir(classes) .files(".") .run(); - tb.new JarTask(modules.resolve("m1-2.jar")) + new JarTask(tb, modules.resolve("m1-2.jar")) .baseDir(classes) .files(".") .run(); @@ -73,13 +77,13 @@ tb.writeJavaFiles(src2, "module m2 { requires m1; }"); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", modules.toString()) .outdir(classes) .files(findJavaFiles(src2)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.duplicate.module.on.path: (compiler.misc.locn.module_path), m1")) throw new Exception("expected output not found"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModuleInfoTest.java --- a/langtools/test/tools/javac/modules/ModuleInfoTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModuleInfoTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -23,19 +23,23 @@ /* * @test - * @summary tests for modfule declarations + * @summary tests for module declarations * @library /tools/lib * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ModuleInfoTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModuleInfoTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -50,12 +54,12 @@ void testModuleDeclNotInModuleJava(Path base) throws Exception { Path src = base.resolve("src"); tb.writeFile(src.resolve("M.java"), "module M { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("M.java:1:1: compiler.err.module.decl.sb.in.module-info.java")) throw new Exception("expected output not found"); @@ -68,7 +72,7 @@ void testNotModuleDeclInModuleJava_1(Path base) throws Exception { Path src = base.resolve("src"); tb.writeFile(src.resolve("module-info.java"), "class C { }"); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) .run() @@ -82,12 +86,12 @@ void testNotModuleDeclInModuleJava_2(Path base) throws Exception { Path src = base.resolve("src"); tb.writeFile(src.resolve("module-info.java"), "public class C { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:8: compiler.err.class.public.should.be.in.file: C")) throw new Exception("expected output not found"); @@ -100,12 +104,12 @@ void testSingleModuleDecl(Path base) throws Exception { Path src = base.resolve("src"); tb.writeJavaFiles(src, "module M1 { } /*...*/ module M2 { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:14: compiler.err.expected: token.end-of-input")) throw new Exception("expected output not found"); @@ -118,12 +122,12 @@ void testRequiresNotFound(Path base) throws Exception { Path src = base.resolve("src"); tb.writeJavaFiles(src, "module M1 { requires M2; }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:22: compiler.err.module.not.found: M2")) throw new Exception("expected output not found"); @@ -136,12 +140,12 @@ void testExportsNotFound(Path base) throws Exception { Path src = base.resolve("src"); tb.writeJavaFiles(src, "module M1 { exports p to M2; }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:26: compiler.err.module.not.found: M2")) throw new Exception("expected output not found"); @@ -154,12 +158,12 @@ void testRequiresSelf(Path base) throws Exception { Path src = base.resolve("src"); tb.writeJavaFiles(src, "module M { requires M; }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:21: compiler.err.cyclic.requires: M")) throw new Exception("expected output not found"); @@ -181,13 +185,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:22: compiler.err.cyclic.requires: m3")) throw new Exception("expected output not found"); @@ -209,13 +213,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:29: compiler.err.cyclic.requires: m3")) throw new Exception("expected output not found"); @@ -235,13 +239,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:35: compiler.err.duplicate.requires: m1")) throw new Exception("expected output not found"); @@ -258,13 +262,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:32: compiler.err.duplicate.exports: p")) throw new Exception("expected output not found"); @@ -282,13 +286,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:32: compiler.err.duplicate.exports: p")) throw new Exception("expected output not found"); @@ -308,13 +312,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:30: compiler.err.duplicate.exports: m1")) throw new Exception("expected output not found"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModulePathTest.java --- a/langtools/test/tools/javac/modules/ModulePathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModulePathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -30,7 +30,7 @@ * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap * jdk.jlink/jdk.tools.jmod - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main ModulePathTest */ @@ -39,6 +39,11 @@ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModulePathTest extends ModuleTestBase { public static final String PATH_SEP = File.pathSeparator; @@ -53,13 +58,13 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "class C { }"); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", "doesNotExist") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.illegal.argument.for.option: -modulepath, doesNotExist")) throw new Exception("expected output not found"); @@ -71,13 +76,13 @@ tb.writeJavaFiles(src, "class C { }"); tb.writeFile("dummy.txt", ""); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", "dummy.txt") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.illegal.argument.for.option: -modulepath, dummy.txt")) throw new Exception("expected output not found"); @@ -89,13 +94,13 @@ tb.writeJavaFiles(src, "class C { }"); tb.writeFile("dummy.jimage", ""); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", "dummy.jimage") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.illegal.argument.for.option: -modulepath, dummy.jimage")) throw new Exception("expected output not found"); @@ -110,7 +115,7 @@ Path modClasses = base.resolve("modClasses"); Files.createDirectories(modClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(modClasses) .files(findJavaFiles(modSrc)) .run() @@ -123,7 +128,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .options("-modulepath", modClasses.toString()) .files(findJavaFiles(src)) @@ -143,14 +148,14 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .options("-XDrawDiagnostics", "-modulepath", modClasses.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.locn.bad.module-info: " + modClasses.toString())) throw new Exception("expected output not found"); @@ -164,14 +169,14 @@ Path jarClasses = base.resolve("jarClasses"); Files.createDirectories(jarClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(jarClasses) .files(findJavaFiles(jarSrc)) .run() .writeAll(); Path moduleJar = base.resolve("m1.jar"); - tb.new JarTask(moduleJar) + new JarTask(tb, moduleJar) .baseDir(jarClasses) .files("p/CC.class") .run(); @@ -181,7 +186,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .options("-modulepath", moduleJar.toString(), "-addmods", "m1") .files(findJavaFiles(src)) @@ -198,14 +203,14 @@ Path jarClasses = base.resolve("jarClasses"); Files.createDirectories(jarClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(jarClasses) .files(findJavaFiles(jarSrc)) .run() .writeAll(); Path moduleJar = base.resolve("myModule.jar"); // deliberately not m1 - tb.new JarTask(moduleJar) + new JarTask(tb, moduleJar) .baseDir(jarClasses) .files("module-info.class", "p/CC.class") .run(); @@ -217,7 +222,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .options("-modulepath", moduleJar.toString()) .files(findJavaFiles(src)) @@ -231,13 +236,13 @@ tb.writeJavaFiles(src, "class C { }"); tb.writeFile("dummy.jar", ""); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", "dummy.jar") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.locn.cant.read.file: dummy.jar")) throw new Exception("expected output not found"); @@ -252,7 +257,7 @@ Path jmodClasses = base.resolve("jmodClasses"); Files.createDirectories(jmodClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(jmodClasses) .files(findJavaFiles(jmodSrc)) .run() @@ -268,7 +273,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) .options("-modulepath", jmod.toString()) .files(findJavaFiles(src)) @@ -282,13 +287,13 @@ tb.writeJavaFiles(src, "class C { }"); tb.writeFile("dummy.jmod", ""); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", "dummy.jmod") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.locn.cant.read.file: dummy.jmod")) throw new Exception("expected output not found"); @@ -302,7 +307,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "module m2 { requires m1; }", "class A { }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", modules + "/./../modules") .files(findJavaFiles(src)) @@ -318,7 +323,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "module m2 { requires m1; }", "class A { }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", modules + "/./../modules" + PATH_SEP + modules) .files(findJavaFiles(src)) @@ -334,7 +339,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "module m2 { requires m1; }", "class A { }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", modules.toString(), "-modulepath", modules.toString()) @@ -360,7 +365,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "module m2 { requires m1; }", " package p; class A { void main() { pkg2.E.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", deepModuleDir + PATH_SEP + module) .files(findJavaFiles(src)) @@ -390,7 +395,7 @@ tb.writeJavaFiles(src, "module m { requires m3; requires m2; requires m1; }", "package p; class A { void main() { one.A.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", modules.toString()) .files(findJavaFiles(src)) @@ -399,7 +404,7 @@ } private void jar(Path dir, Path jar) throws IOException { - tb.new JarTask(jar) + new JarTask(tb, jar) .baseDir(dir) .files(".") .run() diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModuleSourcePathTest.java --- a/langtools/test/tools/javac/modules/ModuleSourcePathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModuleSourcePathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ModuleSourcePathTest */ @@ -43,6 +42,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModuleSourcePathTest extends ModuleTestBase { public static final char PATH_SEP = File.pathSeparatorChar; @@ -57,14 +60,14 @@ Path sp = base.resolve("src"); Path msp = base.resolve("srcmodules"); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-sourcepath", sp.toString().replace('/', File.separatorChar), "-modulesourcepath", msp.toString().replace('/', File.separatorChar), "dummyClass") - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("cannot specify both -sourcepath and -modulesourcepath")) throw new Exception("expected diagnostic not found"); @@ -78,7 +81,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) @@ -95,7 +98,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", "./" + src) .outdir(modules) @@ -118,7 +121,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{src1,src2/inner_dir}") .files(base.resolve("src1/m0/pkg0/A.java"), base.resolve("src2/inner_dir/m1/pkg1/A.java")) @@ -149,12 +152,12 @@ "{}*}" ); for (String sourcepath : sourcePaths) { - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", sourcepath.replace('/', File.separatorChar)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.illegal.argument.for.option: -modulesourcepath, mismatched braces")) throw new Exception("expected output for path [" + sourcepath + "] not found"); @@ -177,7 +180,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{src/{{src1,src2,src3},{srcB,srcC}/{src1,src2/srcX{X,Y}/}},.}" @@ -202,7 +205,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{dummy.txt,src}") .files(src.resolve("kettle$/electric/Heater.java")) @@ -222,7 +225,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{src}") .files(src.resolve("kettle$/electric/Heater.java")) @@ -241,7 +244,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{}") .files(base.resolve("kettle$/electric/Heater.java")) @@ -262,7 +265,7 @@ final Path modules = src.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", "{" + src + "," + src + "/car}") .files(findJavaFiles(src)) @@ -281,7 +284,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/src/./../src") .files(src.resolve("kettle/electric/Heater.java")) @@ -300,7 +303,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{src,src,src}") .files(src.resolve("m1/a/A.java")) @@ -318,14 +321,14 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/not_exist" + PATH_SEP + base + "/{not_exist,}") .files(base.resolve("m1/a/A.java")) .outdir(modules) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("compiler.err.module.not.found: m0")) throw new Exception("expected output for not existent module source path not found"); } @@ -337,7 +340,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "{/not_exist,/}") .files(base.resolve("m1/a/A.java")) @@ -356,7 +359,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/{,{,,,,src,,,}}") .files(src.resolve("m1/a/A.java")) @@ -375,7 +378,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", base + "/*/classes/") .files(base.resolve("kettle/classes/electric/Heater.java")) @@ -398,7 +401,7 @@ final Path modules = base.resolve("modules"); tb.createDirectories(modules); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", src + "{/*/gensrc/,/*/classes/}" + PATH_SEP + src + "/*/special/classes") @@ -427,12 +430,12 @@ "src/module*/" ); for (String sourcepath : sourcePaths) { - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", sourcepath.replace('/', File.separatorChar)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.illegal.argument.for.option: -modulesourcepath, illegal use of *")) throw new Exception("expected output for path [" + sourcepath + "] not found"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModuleTestBase.java --- a/langtools/test/tools/javac/modules/ModuleTestBase.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModuleTestBase.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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,6 +42,9 @@ import java.util.TreeSet; import java.util.stream.Collectors; +import toolbox.JavacTask; +import toolbox.ToolBox; + /** * Base class for module tests. */ @@ -175,7 +178,7 @@ public void build(Path where) throws IOException { Path moduleSrc = write(where); - tb.new JavacTask() + new JavacTask(tb) .outdir(where.resolve(name)) .options("-mp", modulePath) .files(findJavaFiles(moduleSrc)) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ModulesAndClassPathTest.java --- a/langtools/test/tools/javac/modules/ModulesAndClassPathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ModulesAndClassPathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -25,11 +25,9 @@ * @test * @summary Ensure named modules cannot refer to classpath types. * @library /tools/lib - * @modules - * jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @modules jdk.compiler/com.sun.tools.javac.api + * jdk.compiler/com.sun.tools.javac.main + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase * @run main ModulesAndClassPathTest */ @@ -45,6 +43,11 @@ import javax.annotation.processing.SupportedAnnotationTypes; import javax.lang.model.element.TypeElement; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ModulesAndClassPathTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -66,14 +69,14 @@ "module m1 { }", "package impl; public class Impl { api.Api api; }"); - List modLog = tb.new JavacTask() + List modLog = new JavacTask(tb) .options("-classpath", jar.toString(), "-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(moduleSrc)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api", "1 error"); @@ -82,16 +85,16 @@ throw new Exception("unexpected output: " + modLog); } - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString(), "-XaddReads:m1=ALL-UNNAMED") .outdir(classes) .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString() + File.pathSeparator + System.getProperty("test.classes"), "-XaddReads:m1=ALL-UNNAMED", "-processor", ProcessorImpl.class.getName()) @@ -99,7 +102,7 @@ .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); } @Test @@ -117,15 +120,15 @@ "module m1 { }", "package impl; public class Impl { api.Api api; }"); - List modLog = tb.new JavacTask() + List modLog = new JavacTask(tb) .options("-classpath", jar.toString(), "-sourcepath", m1.toString(), "-XDrawDiagnostics") .outdir(classes) .files(m1.resolve("impl").resolve("Impl.java")) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api", "1 error"); @@ -150,23 +153,23 @@ "module m1 { }", "package impl; public class Impl { api.Api api; }"); - tb.new JavacTask() + new JavacTask(tb) .options("-classpath", jar.toString(), "-XDrawDiagnostics") .outdir(classes) .files(m1.resolve("module-info.java")) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); - List modLog = tb.new JavacTask() + List modLog = new JavacTask(tb) .options("-classpath", jar.toString(), "-XDrawDiagnostics") .outdir(classes) .files(m1.resolve("impl").resolve("Impl.java")) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api", "1 error"); @@ -183,13 +186,13 @@ Path legacyClasses = base.resolve("legacy-classes"); Files.createDirectories(legacyClasses); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options() .outdir(legacyClasses) .files(findJavaFiles(legacySrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new Exception("unexpected output: " + log); @@ -201,7 +204,7 @@ Path jar = lib.resolve("test-api-1.0.jar"); - tb.new JarTask(jar) + new JarTask(tb, jar) .baseDir(legacyClasses) .files("api/Api.class") .run(); @@ -233,33 +236,33 @@ "package test; public class TestCP extends impl.Impl { }", "package test; public class TestSP extends src.Src { }"); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(m1.resolve("impl").resolve("Impl.java")) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(m1.resolve("module-info.java")) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(m1.resolve("test").resolve("TestCP.java")) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); - tb.new JavacTask() + new JavacTask(tb) .options("-sourcepath", m1.toString()) .outdir(classes) .files(m1.resolve("test").resolve("TestSP.java")) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/MultiModuleModeTest.java --- a/langtools/test/tools/javac/modules/MultiModuleModeTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/MultiModuleModeTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main MultiModuleModeTest */ @@ -39,6 +38,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class MultiModuleModeTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -55,14 +58,14 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:1: compiler.err.duplicate.module: m1")) throw new Exception("expected output not found"); @@ -78,14 +81,14 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(join(findJavaFiles(src), findJavaFiles(misc))) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C.java:1:1: compiler.err.unnamed.pkg.not.allowed.named.modules")) throw new Exception("expected output not found"); @@ -99,14 +102,14 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:8: compiler.err.module.name.mismatch: m2, m1")) throw new Exception("expected output not found"); @@ -120,7 +123,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(modules) .files(src.resolve("m2/module-info.java")) @@ -135,7 +138,7 @@ Path modules1 = base.resolve("modules1"); Files.createDirectories(modules1); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src1.toString()) .outdir(modules1) .files(src1.resolve("m1/module-info.java")) @@ -147,7 +150,7 @@ Path modules2 = base.resolve("modules2"); Files.createDirectories(modules2); - tb.new JavacTask() + new JavacTask(tb) .options("-modulepath", modules1.toString(), "-modulesourcepath", src2.toString()) .outdir(modules2) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/NPECompilingModuleInfoTest.java --- a/langtools/test/tools/javac/modules/NPECompilingModuleInfoTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/NPECompilingModuleInfoTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,14 +29,15 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main NPECompilingModuleInfoTest */ import java.nio.file.Path; -import com.sun.source.util.JavacTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; public class NPECompilingModuleInfoTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -53,11 +54,11 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(findJavaFiles(mod)) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/NPEEmptyFileTest.java --- a/langtools/test/tools/javac/modules/NPEEmptyFileTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/NPEEmptyFileTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main NPEEmptyFileTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class NPEEmptyFileTest extends ModuleTestBase { public static void main(String... args) throws Exception { new NPEEmptyFileTest().runTests(); @@ -47,7 +50,7 @@ Files.createDirectories(modules); Path emptyJavaFile = base.resolve("Test.java"); tb.writeFile(emptyJavaFile, ""); - tb.new JavacTask(ToolBox.Mode.EXEC) + new JavacTask(tb, Task.Mode.EXEC) .options("-modulesourcepath", modules.toString(), "-d", modules.toString(), emptyJavaFile.toString()) .run() diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/OutputDirTest.java --- a/langtools/test/tools/javac/modules/OutputDirTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/OutputDirTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main OutputDirTest */ @@ -38,6 +37,10 @@ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class OutputDirTest extends ModuleTestBase { public static void main(String... args) throws Exception { new OutputDirTest().run(); @@ -58,13 +61,13 @@ @Test void testError(Path base) throws Exception { - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.no.output.dir")) throw new Exception("expected output not found"); @@ -72,24 +75,24 @@ @Test void testProcOnly(Path base) throws IOException { - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics", "-proc:only", "-modulesourcepath", src.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @Test void testClassOutDir(Path base) throws IOException { Path classes = base.resolve("classes"); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics", "-d", classes.toString(), "-modulesourcepath", src.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -102,7 +105,7 @@ Path modClasses = base.resolve("modClasses"); Files.createDirectories(modClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(modClasses) .files(findJavaFiles(modSrc)) .run() @@ -114,14 +117,14 @@ "module m { requires m1 ; }", "class C { }"); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .outdir(modClasses) // an exploded module .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.err.multi-module.outdir.cannot.be.exploded.module: " + modClasses.toString())) throw new Exception("expected output not found"); @@ -136,7 +139,7 @@ Path modClasses = base.resolve("modClasses"); Files.createDirectories(modClasses); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .outdir(modClasses) .files(findJavaFiles(modSrc)) .run() @@ -150,15 +153,15 @@ Path classes = modClasses.resolve("m"); Files.createDirectories(classes); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .outdir(classes) // within an exploded module .options("-XDrawDiagnostics", "-Xlint", "-Werror", "-modulepath", modClasses.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("- compiler.warn.outdir.is.in.exploded.module: " + classes.toString())) throw new Exception("expected output not found"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/PackageConflictTest.java --- a/langtools/test/tools/javac/modules/PackageConflictTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/PackageConflictTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main PackageConflictTest */ @@ -38,6 +37,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class PackageConflictTest extends ModuleTestBase { public static void main(String... args) throws Exception { PackageConflictTest t = new PackageConflictTest(); @@ -52,13 +55,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("MyList.java:1:1: compiler.err.package.in.other.module: java.base")) throw new Exception("expected output not found"); @@ -77,7 +80,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-Werror", "-modulesourcepath", base.toString()) .outdir(classes) .files(findJavaFiles(base)) @@ -102,13 +105,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", base.toString()) .outdir(classes) .files(findJavaFiles(base)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:1: compiler.err.package.clash.from.requires: m3, test, m1, m2", @@ -131,13 +134,13 @@ .classes("package pack; public class B { pack.A f; }") .write(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-mp", modules.toString()) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules.resolve("M"))) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("B.java:1:1: compiler.err.package.in.other.module: N")) throw new Exception("expected output not found"); @@ -156,13 +159,13 @@ .classes("package pack; public class C { publ.B b; }") .write(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", modules + "/*/src") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("")) throw new Exception("unexpected output not found"); @@ -182,13 +185,13 @@ .classes("package pack; public class C { publ.B b; }") .write(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-mp", modules.toString()) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules.resolve("M"))) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("")) throw new Exception("expected output not found"); @@ -212,13 +215,13 @@ .classes("package pkg; public class C { pack.A a; pack.B b; }") .write(modules); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-mp", modules.toString()) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules.resolve("K"))) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:1: compiler.err.package.clash.from.requires: K, pack, M, N", @@ -244,11 +247,11 @@ .requires("N") .classes("package p; public class DependsOnN { boolean f = pkg.A.flagN; } ") .write(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", modules + "/*/src") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules.resolve("K"))) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); //negative case @@ -256,14 +259,14 @@ .classes("package p; public class DependsOnM { boolean f = pkg.A.flagM; } ") .write(modules); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", modules + "/*/src") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules.resolve("K"))) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "DependsOnM.java:1:55: compiler.err.cant.resolve.location: kindname.variable, flagM, , , (compiler.misc.location: kindname.class, pkg.A, null)"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/PackageMultipleModules.java --- a/langtools/test/tools/javac/modules/PackageMultipleModules.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/PackageMultipleModules.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main PackageMultipleModules */ @@ -38,6 +37,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class PackageMultipleModules extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -60,13 +63,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", base.toString()) .outdir(classes) .files(findJavaFiles(base)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("A.java:1:26: compiler.err.not.def.access.package.cant.access: test.B, test", "B.java:1:26: compiler.err.not.def.access.package.cant.access: test.A, test", diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/PluginsInModulesTest.java --- a/langtools/test/tools/javac/modules/PluginsInModulesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/PluginsInModulesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main PluginsInModulesTest */ @@ -38,6 +37,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class PluginsInModulesTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -103,13 +106,13 @@ pluginModule1, plugin1); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(processorCompiledModules) .files(findJavaFiles(moduleSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) { throw new AssertionError("Unexpected output: " + log); @@ -126,14 +129,14 @@ @Test void testUseOnlyOneProcessor(Path base) throws Exception { initialization(base); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-processormodulepath", processorCompiledModules.toString(), "-Xplugin:simpleplugin1") .outdir(classes) .sources(testClass) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.STDOUT); + .getOutputLines(Task.OutputKind.STDOUT); if (!log.equals(Arrays.asList("simpleplugin1 started for event COMPILATION", "simpleplugin1 finished for event COMPILATION"))) { throw new AssertionError("Unexpected output: " + log); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ProvidesTest.java --- a/langtools/test/tools/javac/modules/ProvidesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ProvidesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ProvidesTest */ @@ -38,6 +37,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ProvidesTest extends ModuleTestBase { public static void main(String... args) throws Exception { ProvidesTest t = new ProvidesTest(); @@ -54,10 +57,10 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -73,11 +76,11 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -91,13 +94,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:24: compiler.err.expected: 'with'")) throw new Exception("expected output not found"); @@ -114,11 +117,11 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostic") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll(); } @@ -129,13 +132,13 @@ "module m { provides p.Missing with p.C; }", "package p; public class C extends p.Missing { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "C.java:1:36: compiler.err.cant.resolve.location: kindname.class, Missing, , , (compiler.misc.location: kindname.package, p, null)", @@ -156,14 +159,14 @@ tb.writeJavaFiles(modules.resolve("L"), "module L { requires M; provides p.Service with p.Service; }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", modules.toString()) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(modules)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:24: compiler.err.service.implementation.not.in.right.module: M", "1 error"); @@ -181,13 +184,13 @@ "package p; public class A { }", "package p; public class B { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:31: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: p.B, p.A)", "1 error"); @@ -203,13 +206,13 @@ "module m { provides p.C with p.Impl; }", "package p; public class C { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:31: compiler.err.cant.resolve.location: kindname.class, Impl, , , (compiler.misc.location: kindname.package, p, null)", "1 error"); @@ -227,10 +230,10 @@ "package p; public class Impl1 extends p.C { }", "package p; public class Impl2 extends p.C { }"); - tb.new JavacTask() + new JavacTask(tb) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -243,10 +246,10 @@ "package p; public abstract class Service2 { }", "package p; public class Impl extends p.Service2 implements p.Service1 { }"); - tb.new JavacTask() + new JavacTask(tb) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -258,13 +261,13 @@ "package p1; public class C1 { }", "package p2; public abstract class C2 extends p1.C1 { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:34: compiler.err.service.implementation.is.abstract: p2.C2"); @@ -281,13 +284,13 @@ "package p1; public interface Service { }", "package p2; public interface Impl extends p1.Service { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:39: compiler.err.service.implementation.is.abstract: p2.Impl"); @@ -304,13 +307,13 @@ "package p1; public class C1 { }", "package p2; class C2 extends p1.C1 { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:34: compiler.err.not.def.public.cant.access: p2.C2, p2", "1 error"); @@ -327,13 +330,13 @@ "package p1; public class C1 { }", "package p2; public class C2 extends p1.C1 { public C2(String str) { } }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:46: compiler.err.service.implementation.doesnt.have.a.no.args.constructor: p2.C2"); @@ -350,13 +353,13 @@ "package p1; public class C1 { }", "package p2; public class C2 extends p1.C1 { private C2() { } }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:46: compiler.err.service.implementation.no.args.constructor.not.public: p2.C2"); @@ -374,10 +377,10 @@ "package p2; public class C2 extends p1.C1 { }", "package p2; public class C3 extends p2.C2 { }"); - tb.new JavacTask() + new JavacTask(tb) .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -389,13 +392,13 @@ "package p1; public class C1 { }", "package p2; public class C2 { public class Inner extends p1.C1 { } }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:37: compiler.err.service.implementation.is.inner: p2.C2.Inner"); @@ -412,13 +415,13 @@ "package p1; public class C1 { public class InnerDefinition { } }", "package p2; public class C2 extends p1.C1.InnerDefinition { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:26: compiler.err.service.definition.is.inner: p1.C1.InnerDefinition", diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/QueryBeforeEnter.java --- a/langtools/test/tools/javac/modules/QueryBeforeEnter.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/QueryBeforeEnter.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main QueryBeforeEnter */ @@ -49,12 +48,16 @@ import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; -import com.sun.source.util.JavacTask; +// import com.sun.source.util.JavacTask; import com.sun.source.util.Plugin; import com.sun.source.util.TaskEvent; import com.sun.source.util.TaskListener; import com.sun.tools.javac.Main; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class QueryBeforeEnter extends ModuleTestBase { public static void main(String... args) throws Exception { QueryBeforeEnter t = new QueryBeforeEnter(); @@ -64,7 +67,8 @@ @Test void testEmpty(Path base) throws Exception { JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); - JavacTask task = (JavacTask) javaCompiler.getTask(null, null, null, null, null, null); + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) javaCompiler.getTask(null, null, null, null, null, null); TypeElement jlString = task.getElements().getTypeElement("java.lang.String"); assertNotNull(jlString); @@ -89,7 +93,7 @@ Files.createDirectories(modulePath); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(moduleSrc)) @@ -105,7 +109,7 @@ Files.createDirectories(cp); - tb.new JavacTask() + new JavacTask(tb) .outdir(cp) .files(findJavaFiles(cpSrc)) .run() @@ -123,7 +127,8 @@ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) { - JavacTask task = (JavacTask) javaCompiler.getTask(null, + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) javaCompiler.getTask(null, null, d -> { throw new IllegalStateException(d.toString()); }, Arrays.asList("-modulepath", modulePath.toString(), @@ -164,7 +169,7 @@ Files.createDirectories(modulePath); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", moduleSrc.toString()) .outdir(modulePath) .files(findJavaFiles(moduleSrc)) @@ -180,7 +185,7 @@ Files.createDirectories(cp); - tb.new JavacTask() + new JavacTask(tb) .outdir(cp) .files(findJavaFiles(cpSrc)) .run() @@ -198,7 +203,8 @@ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) { - JavacTask task = (JavacTask) javaCompiler.getTask(null, + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) javaCompiler.getTask(null, null, d -> { throw new IllegalStateException(d.toString()); }, Arrays.asList("-modulepath", modulePath.toString(), @@ -238,7 +244,7 @@ Files.createDirectories(modulePath); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", modulePathSrc.toString()) .outdir(modulePath) .files(findJavaFiles(modulePathSrc)) @@ -254,7 +260,7 @@ Files.createDirectories(cp); - tb.new JavacTask() + new JavacTask(tb) .outdir(cp) .files(findJavaFiles(cpSrc)) .run() @@ -279,7 +285,8 @@ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) { - JavacTask task = (JavacTask) javaCompiler.getTask(null, + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) javaCompiler.getTask(null, null, d -> { throw new IllegalStateException(d.toString()); }, Arrays.asList("-modulepath", modulePath.toString(), @@ -328,7 +335,8 @@ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); Path testSource = src.resolve("test").resolve("Test.java"); try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) { - JavacTask task = (JavacTask) javaCompiler.getTask(null, + com.sun.source.util.JavacTask task = + (com.sun.source.util.JavacTask) javaCompiler.getTask(null, null, d -> { throw new IllegalStateException(d.toString()); }, Arrays.asList("-processorpath", processorPath, @@ -352,7 +360,7 @@ } @Override - public void init(JavacTask task, String... args) { + public void init(com.sun.source.util.JavacTask task, String... args) { task.addTaskListener(new TaskListener() { boolean wasEntered; @Override diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/RepeatedUsesAndProvidesTest.java --- a/langtools/test/tools/javac/modules/RepeatedUsesAndProvidesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/RepeatedUsesAndProvidesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main RepeatedUsesAndProvidesTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class RepeatedUsesAndProvidesTest extends ModuleTestBase { public static void main(String... args) throws Exception { RepeatedUsesAndProvidesTest t = new RepeatedUsesAndProvidesTest(); @@ -51,13 +54,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:24: compiler.err.duplicate.uses: p1.C1")) throw new Exception("expected output not found"); } @@ -72,13 +75,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:39: compiler.err.duplicate.provides")) throw new Exception("expected output not found"); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ReportNonExistentPackageTest.java --- a/langtools/test/tools/javac/modules/ReportNonExistentPackageTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ReportNonExistentPackageTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ReportNonExistentPackageTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ReportNonExistentPackageTest extends ModuleTestBase { public static void main(String... args) throws Exception { ReportNonExistentPackageTest t = new ReportNonExistentPackageTest(); @@ -49,13 +52,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:20: compiler.err.package.empty.or.not.found: p1")) throw new Exception("expected output not found"); } @@ -69,13 +72,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:20: compiler.err.package.empty.or.not.found: p1")) throw new Exception("expected output not found"); } @@ -90,13 +93,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:20: compiler.err.package.empty.or.not.found: p1")) throw new Exception("expected output not found"); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/RequiresPublicTest.java --- a/langtools/test/tools/javac/modules/RequiresPublicTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/RequiresPublicTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main RequiresPublicTest */ import java.nio.file.Files; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class RequiresPublicTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -55,7 +58,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .files(findJavaFiles(src)) .outdir(classes) .run() @@ -74,13 +77,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) .outdir(classes.toString()) // should allow Path here - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("Test.java:1:27: compiler.err.doesnt.exist: com.sun.source.tree")) throw new Exception("expected output not found"); @@ -92,7 +95,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulesourcepath", src.toString()) .files(findJavaFiles(src)) .outdir(classes) @@ -108,14 +111,14 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .files(findJavaFiles(src)) .outdir(classes) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); String[] expect = { "C1.java:5:10: compiler.err.not.def.access.package.cant.access: p5.C5, p5", diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ResolveTest.java --- a/langtools/test/tools/javac/modules/ResolveTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ResolveTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -28,13 +28,16 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ResolveTest */ import java.nio.file.*; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ResolveTest extends ModuleTestBase { public static void main(String... args) throws Exception { ResolveTest t = new ResolveTest(); @@ -46,12 +49,12 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "class C { D d; }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C.java:1:11: compiler.err.cant.resolve.location: " + "kindname.class, D, , , (compiler.misc.location: kindname.class, C, null)")) @@ -65,12 +68,12 @@ "module m { }", "class C { D d; }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C.java:1:11: compiler.err.cant.resolve.location: " + "kindname.class, D, , , (compiler.misc.location: kindname.class, C, null)")) @@ -89,13 +92,13 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C2.java:1:33: compiler.err.not.def.access.package.cant.access: p1.C1, p1")) throw new Exception("expected output not found"); @@ -113,13 +116,13 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C2.java:1:33: compiler.err.not.def.access.package.cant.access: p1.C1, p1")) throw new Exception("expected output not found"); @@ -139,13 +142,13 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C2.java:1:33: compiler.err.not.def.access.package.cant.access: p1.C1, p1")) throw new Exception("expected output not found"); @@ -163,13 +166,13 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("C2.java:1:33: compiler.err.not.def.access.package.cant.access: p1.C1, p1")) throw new Exception("expected output not found"); @@ -187,7 +190,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) @@ -207,7 +210,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ServiceInStaticClassErrorTest.java --- a/langtools/test/tools/javac/modules/ServiceInStaticClassErrorTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ServiceInStaticClassErrorTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,8 +29,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ServiceInStaticClassErrorTest */ @@ -38,6 +37,10 @@ import java.nio.file.Path; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ServiceInStaticClassErrorTest extends ModuleTestBase { public static void main(String... args) throws Exception { ServiceInStaticClassErrorTest t = new ServiceInStaticClassErrorTest(); @@ -54,12 +57,12 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .outdir(classes) .files(findJavaFiles(src)) .run() .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); } } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/ServiceProvidedButNotExportedOrUsedTest.java --- a/langtools/test/tools/javac/modules/ServiceProvidedButNotExportedOrUsedTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/ServiceProvidedButNotExportedOrUsedTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,8 +29,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main ServiceProvidedButNotExportedOrUsedTest */ @@ -39,6 +38,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class ServiceProvidedButNotExportedOrUsedTest extends ModuleTestBase { public static void main(String... args) throws Exception { ServiceProvidedButNotExportedOrUsedTest t = new ServiceProvidedButNotExportedOrUsedTest(); @@ -55,13 +58,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .outdir(classes) .options("-Werror", "-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1", "- compiler.err.warnings.and.werror", @@ -86,13 +89,13 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList( "module-info.java:1:39: compiler.err.service.implementation.not.in.right.module: m3", "1 error"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/SingleModuleModeTest.java --- a/langtools/test/tools/javac/modules/SingleModuleModeTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/SingleModuleModeTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main SingleModuleModeTest */ @@ -43,6 +42,10 @@ import javax.lang.model.SourceVersion; import javax.lang.model.element.TypeElement; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class SingleModuleModeTest extends ModuleTestBase{ public static void main(String... args) throws Exception { @@ -61,12 +64,12 @@ tb.writeJavaFiles(src.resolve("m1"), "module m1 { }"); tb.writeJavaFiles(src.resolve("m2"), "module m2 { }"); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("module-info.java:1:1: compiler.err.too.many.modules")) throw new Exception("expected output not found"); @@ -79,7 +82,7 @@ "module m { }", "class C { }"); - tb.new JavacTask() + new JavacTask(tb) .classpath(src) .files(src.resolve("C.java")) .run() @@ -95,13 +98,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(src.resolve("module-info.java")) .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .classpath(classes) .files(src.resolve("C.java")) .run() @@ -117,13 +120,13 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(src.resolve("module-info.java")) .run() .writeAll(); - tb.new JavacTask() + new JavacTask(tb) .options("-processor", VerifyUsesProvides.class.getName(), "-processorpath", System.getProperty("test.classes")) .outdir(classes) @@ -142,7 +145,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .options("-processor", VerifyUsesProvides.class.getName(), "-processorpath", System.getProperty("test.classes")) .outdir(classes) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/SubpackageTest.java --- a/langtools/test/tools/javac/modules/SubpackageTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/SubpackageTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main SubpackageTest */ @@ -41,6 +40,10 @@ import java.util.List; import java.util.stream.Collectors; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class SubpackageTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -55,7 +58,7 @@ "package p; public class E extends Error { }"); Path libclasses = base.resolve("lib/classes"); Files.createDirectories(libclasses); - tb.new JavacTask() + new JavacTask(tb) .outdir(libclasses) .files(findJavaFiles(libsrc)) .run() @@ -71,7 +74,7 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .classpath(libclasses) .outdir(classes) .files(findJavaFiles(src)) @@ -106,7 +109,7 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/UpgradeModulePathTest.java --- a/langtools/test/tools/javac/modules/UpgradeModulePathTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/UpgradeModulePathTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,14 +28,17 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main UpgradeModulePathTest */ import java.io.File; import java.nio.file.Path; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class UpgradeModulePathTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -61,7 +64,7 @@ tb.writeJavaFiles(src, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.E.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-upgrademodulepath", upgradeModule.toString()) .files(findJavaFiles(src)) @@ -87,7 +90,7 @@ tb.writeJavaFiles(src, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.E.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-upgrademodulepath", upgradeModule + File.pathSeparator + module) .files(findJavaFiles(src)) .run() @@ -121,7 +124,7 @@ tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; requires m3; }", "package p; class A { void main() { pkg2.E.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-modulesourcepath", src + File.pathSeparator + s, "-upgrademodulepath", upgradeModule + File.pathSeparator + upgradeModule3) @@ -149,7 +152,7 @@ tb.writeJavaFiles(src, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.E.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", upgradeModule + File.pathSeparator + module, "-upgrademodulepath", upgradeModule.toString()) .files(findJavaFiles(src)) @@ -172,14 +175,14 @@ tb.writeJavaFiles(src, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.E.class.getName(); } }"); - String output = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String output = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", module.toString(), "-upgrademodulepath", dummy.toString()) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!output.contains("compiler.err.illegal.argument.for.option: -upgrademodulepath, " + dummy)) { throw new Exception("Expected output was not found"); } @@ -212,7 +215,7 @@ tb.writeJavaFiles(src, "module m4 { requires m1; requires m2; requires m3; }", "package p; class A { void main() { pkg1.A.class.getName(); pkg2.BC.class.getName(); pkg3.DC.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-upgrademodulepath", upgradeModule.toString()) .files(findJavaFiles(src)) @@ -223,14 +226,14 @@ tb.writeJavaFiles(src2, "module m4 { requires m1; }", "package p; class A { void main() { pkg2.B.class.getName(); } }"); - String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", module.toString(), "-upgrademodulepath", upgradeModule.toString()) .files(findJavaFiles(src2)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("compiler.err.doesnt.exist: pkg2")) { throw new Exception("Expected output was not found"); } @@ -260,7 +263,7 @@ tb.writeJavaFiles(src, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.EC2.class.getName(); } }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-upgrademodulepath", upgradeModule1.toString(), "-upgrademodulepath", upgradeModule2.toString()) @@ -272,15 +275,15 @@ tb.writeJavaFiles(src2, "module m2 { requires m1; }", "package p; class A { void main() { pkg2.EC1.class.getName(); } }"); - final String log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + final String log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", module.toString(), "-upgrademodulepath", upgradeModule1.toString(), "-upgrademodulepath", upgradeModule2.toString()) .files(findJavaFiles(src2)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.contains("compiler.err.cant.resolve.location: kindname.class, EC1, , , (compiler.misc.location: kindname.package, pkg2, null)")) { throw new Exception("Expected output was not found"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/UsesTest.java --- a/langtools/test/tools/javac/modules/UsesTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/UsesTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main UsesTest */ @@ -39,6 +38,10 @@ import java.util.Collection; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class UsesTest extends ModuleTestBase { public static void main(String... args) throws Exception { UsesTest t = new UsesTest(); @@ -54,10 +57,10 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -70,10 +73,10 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -86,10 +89,10 @@ Path classes = base.resolve("classes"); Files.createDirectories(classes); - tb.new JavacTask() + new JavacTask(tb) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -100,13 +103,13 @@ "module m { uses p.C.A; uses p.C; }", "package p; public class C { protected class A { } }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:20: compiler.err.report.access: p.C.A, protected, p.C", "1 error"); @@ -126,11 +129,11 @@ Path modules = base.resolve("modules"); Files.createDirectories(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-modulesourcepath", src.toString()) .outdir(modules) .files(findJavaFiles(src)) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -146,11 +149,11 @@ .uses("p.C") .write(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-mp", modules.toString()) .outdir(modules) .files(findJavaFiles(modules.resolve("m2"))) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -166,11 +169,11 @@ .uses("p.C.Inner") .write(modules); - tb.new JavacTask() + new JavacTask(tb) .options("-mp", modules.toString()) .outdir(modules) .files(findJavaFiles(modules.resolve("m2"))) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); } @@ -181,13 +184,13 @@ "module m { uses p.C; uses p.C; }", "package p; public class C { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics") .outdir(Files.createDirectories(base.resolve("classes"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); if (!output.containsAll(Arrays.asList( "module-info.java:1:22: compiler.err.duplicate.uses: p.C"))) { @@ -202,13 +205,13 @@ "module m { uses p.NotExist; }", "package p; public class C { }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .outdir(Files.createDirectories(base.resolve("classes"))) .options("-XDrawDiagnostics") .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); Collection expected = Arrays.asList("module-info.java:1:18: compiler.err.cant.resolve.location: kindname.class, NotExist, , , (compiler.misc.location: kindname.package, p, null)", "1 error"); if (!output.containsAll(expected)) { @@ -225,13 +228,13 @@ tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; uses p.C; }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(Files.createDirectories(base.resolve("modules"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", "1 error"); @@ -249,13 +252,13 @@ tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; uses p.C; }"); - List output = tb.new JavacTask() + List output = new JavacTask(tb) .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) .outdir(Files.createDirectories(base.resolve("modules"))) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", "1 error"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/modules/XModuleTest.java --- a/langtools/test/tools/javac/modules/XModuleTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/modules/XModuleTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,8 +28,7 @@ * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox ModuleTestBase + * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase * @run main XModuleTest */ @@ -37,6 +36,10 @@ import java.util.Arrays; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class XModuleTest extends ModuleTestBase { public static void main(String... args) throws Exception { @@ -51,13 +54,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); @@ -71,13 +74,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-Xmodule:java.compiler", "-sourcepath", src.toString()) .outdir(classes) .files(src.resolve("javax/lang/model/element/Extra.java")) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); @@ -90,12 +93,12 @@ Path cpClasses = base.resolve("cpClasses"); tb.createDirectories(cpClasses); - String cpLog = tb.new JavacTask() + String cpLog = new JavacTask(tb) .outdir(cpClasses) .files(findJavaFiles(cpSrc)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!cpLog.isEmpty()) throw new Exception("expected output not found: " + cpLog); @@ -106,13 +109,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String log = tb.new JavacTask() + String log = new JavacTask(tb) .options("-Xmodule:java.compiler", "-classpath", cpClasses.toString()) .outdir(classes) .files(src.resolve("javax/lang/model/element/Extra.java")) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); @@ -128,13 +131,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.xmodule.sourcepath", "1 error"); @@ -152,13 +155,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - String logMod = tb.new JavacTask() + String logMod = new JavacTask(tb) .options() .outdir(classes) .files(findJavaFiles(srcMod)) .run() .writeAll() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!logMod.isEmpty()) throw new Exception("unexpected output found: " + logMod); @@ -168,13 +171,13 @@ "package javax.lang.model.element; public interface Extra { }"); tb.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.xmodule.classpath", "1 error"); @@ -191,13 +194,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - List log = tb.new JavacTask() + List log = new JavacTask(tb) .options("-XDrawDiagnostics", "-Xmodule:java.compiler", "-modulesourcepath", src.toString()) .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("- compiler.err.xmodule.no.module.sourcepath", "1 error"); @@ -214,13 +217,13 @@ Path classes = base.resolve("classes"); tb.createDirectories(classes); - List log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + List log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-Xmodule:java.compiler", "-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("javac: option -Xmodule: can only be specified once", "Usage: javac ", @@ -240,7 +243,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "package p; interface A extends pkg1.E { }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-Xmodule:m1") .files(findJavaFiles(src)) @@ -255,14 +258,14 @@ Path src2 = base.resolve("src2"); tb.writeJavaFiles(src2, "package p; interface A extends pkg2.D { }"); - List log = tb.new JavacTask(ToolBox.Mode.CMDLINE) + List log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "-modulepath", module.toString(), "-Xmodule:m1") .files(findJavaFiles(src2)) - .run(ToolBox.Expect.FAIL) + .run(Task.Expect.FAIL) .writeAll() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List expected = Arrays.asList("A.java:1:36: compiler.err.doesnt.exist: pkg2", "1 error"); @@ -286,7 +289,7 @@ Path src = base.resolve("src"); tb.writeJavaFiles(src, "package p; interface A extends pkg1.D { }"); - tb.new JavacTask(ToolBox.Mode.CMDLINE) + new JavacTask(tb, Task.Mode.CMDLINE) .options("-modulepath", module.toString(), "-upgrademodulepath", upgrade.toString(), "-Xmodule:m1") diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/newlines/NewLineTest.java --- a/langtools/test/tools/javac/newlines/NewLineTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/newlines/NewLineTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,8 @@ * @summary portability : javac.properties * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask * @run main NewLineTest */ @@ -39,16 +37,20 @@ import java.nio.file.Files; import java.util.List; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + //original test: test/tools/javac/newlines/Newlines.sh public class NewLineTest { public static void main(String args[]) throws Exception { ToolBox tb = new ToolBox(); File javacErrOutput = new File("output.txt"); - tb.new JavacTask(ToolBox.Mode.EXEC) - .redirect(ToolBox.OutputKind.STDERR, javacErrOutput.getPath()) + new JavacTask(tb, Task.Mode.EXEC) + .redirect(Task.OutputKind.STDERR, javacErrOutput.getPath()) .options("-J-Dline.separator='@'") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); List lines = Files.readAllLines(javacErrOutput.toPath(), Charset.defaultCharset()); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/platform/PlatformProviderTest.java --- a/langtools/test/tools/javac/platform/PlatformProviderTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/platform/PlatformProviderTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,12 +27,11 @@ * @summary Ensure all methods of PlatformProvider are called correctly, and their result is used * correctly. * @library /tools/lib - * @build ToolBox PlatformProviderTest * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.platform * jdk.compiler/com.sun.tools.javac.util - * jdk.jdeps/com.sun.tools.javap + * @build toolbox.ToolBox PlatformProviderTest * @run main/othervm PlatformProviderTest */ @@ -62,12 +61,16 @@ import javax.tools.StandardLocation; import javax.tools.ToolProvider; -import com.sun.source.util.JavacTask; +// import com.sun.source.util.JavacTask; import com.sun.source.util.Plugin; import com.sun.tools.javac.platform.PlatformDescription; import com.sun.tools.javac.platform.PlatformProvider; import com.sun.tools.javac.util.Log; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + public class PlatformProviderTest implements PlatformProvider { public static void main(String... args) throws IOException { @@ -91,8 +94,8 @@ void doTest(String platformSpec, String expectedParameter) { ToolBox tb = new ToolBox(); - ToolBox.Result result = - tb.new JavacTask(ToolBox.Mode.EXEC) + Task.Result result = + new JavacTask(tb, Task.Mode.EXEC) .outdir(".") .options("-J-classpath", "-J" + System.getProperty("test.classes"), @@ -116,7 +119,7 @@ "PlatformProviderTestSource.java:4:49: compiler.warn.raw.class.use: java.util.ArrayList, java.util.ArrayList", "compiler.misc.count.warn", "close"); - List actualOutput = result.getOutputLines(ToolBox.OutputKind.STDERR); + List actualOutput = result.getOutputLines(Task.OutputKind.STDERR); result.writeAll(); if (!expectedOutput.equals(actualOutput)) { throw new AssertionError( "Expected output: " + expectedOutput + @@ -127,8 +130,8 @@ void doTestFailure() { ToolBox tb = new ToolBox(); - ToolBox.Result result = - tb.new JavacTask(ToolBox.Mode.EXEC) + Task.Result result = + new JavacTask(tb, Task.Mode.EXEC) .outdir(".") .options("-J-classpath", "-J" + System.getProperty("test.classes"), @@ -137,14 +140,14 @@ "-release", "fail", System.getProperty("test.src") + "/PlatformProviderTestSource.java") - .run(ToolBox.Expect.FAIL); + .run(Task.Expect.FAIL); List expectedOutput = Arrays.asList("getSupportedPlatformNames", "getPlatform(fail, )", "javac: javac.err.unsupported.release.version", "javac.msg.usage"); - List actualOutput = result.getOutputLines(ToolBox.OutputKind.STDERR); + List actualOutput = result.getOutputLines(Task.OutputKind.STDERR); result.writeAll(); if (!expectedOutput.equals(actualOutput)) { throw new AssertionError( "Expected output: " + expectedOutput + @@ -281,7 +284,7 @@ } @Override - public void init(JavacTask task, String... args) { + public void init(com.sun.source.util.JavacTask task, String... args) { System.err.println("testPlugin: " + Arrays.toString(args)); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/plugin/showtype/Test.java --- a/langtools/test/tools/javac/plugin/showtype/Test.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/plugin/showtype/Test.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2016, 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 @@ -26,10 +26,9 @@ * @bug 8001098 8004961 8004082 * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask toolbox.JarTask * @run main Test * @summary Provide a simple light-weight "plug-in" mechanism for javac */ @@ -44,7 +43,10 @@ import javax.tools.StandardLocation; import javax.tools.ToolProvider; -import com.sun.source.util.JavacTask; +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; public class Test { public static void main(String... args) throws Exception { @@ -77,14 +79,14 @@ try { // compile the plugin explicitly, to a non-standard directory // so that we don't find it on the wrong path by accident - tb.new JavacTask() + new JavacTask(tb) .options("-d", pluginClasses.getPath()) .files(pluginSrc.getPath()) .run(); File plugin = new File(pluginClasses.getPath(), "META-INF/services/com.sun.source.util.Plugin"); tb.writeFile(plugin.getPath(), "ShowTypePlugin\n"); - tb.new JarTask() + new JarTask(tb) .run("cf", pluginJar.getPath(), "-C", pluginClasses.getPath(), "."); testCommandLine("-Xplugin:showtype", ref1); @@ -107,13 +109,13 @@ Iterable files = fm.getJavaFileObjects(identifiers); System.err.println("test api: " + options + " " + files); - ToolBox.Result result = tb.new JavacTask(ToolBox.Mode.API) + Task.Result result = new JavacTask(tb, Task.Mode.API) .fileManager(fm) .options(opt) .files(identifiers.toPath()) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); - String out = result.getOutput(ToolBox.OutputKind.DIRECT); + String out = result.getOutput(Task.OutputKind.DIRECT); checkOutput(out, ref); } @@ -126,11 +128,11 @@ identifiers.getPath() }; System.err.println("test command line: " + Arrays.asList(args)); - ToolBox.Result result = tb.new JavacTask(ToolBox.Mode.CMDLINE) + Task.Result result = new JavacTask(tb, Task.Mode.CMDLINE) .options(args) - .run(ToolBox.Expect.SUCCESS) + .run(Task.Expect.SUCCESS) .writeAll(); - String out = result.getOutput(ToolBox.OutputKind.DIRECT); + String out = result.getOutput(Task.OutputKind.DIRECT); checkOutput(out, ref); } diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/processing/rounds/CompleteOnClosed.java --- a/langtools/test/tools/javac/processing/rounds/CompleteOnClosed.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/processing/rounds/CompleteOnClosed.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,10 +28,9 @@ * the compiler. * @library /tools/lib /tools/javac/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox JavacTestingAbstractProcessor + * @build toolbox.ToolBox JavacTestingAbstractProcessor * @run main CompleteOnClosed */ @@ -45,6 +44,8 @@ import javax.tools.JavaFileObject; import javax.tools.ToolProvider; +import toolbox.ToolBox; + public class CompleteOnClosed extends JavacTestingAbstractProcessor { public static void main(String... args) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/processing/rounds/OverwriteBetweenCompilations.java --- a/langtools/test/tools/javac/processing/rounds/OverwriteBetweenCompilations.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/processing/rounds/OverwriteBetweenCompilations.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -28,13 +28,13 @@ * during previous compilations, and that the Symbols are updated appropriatelly. * @library /tools/lib /tools/javac/lib/ * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.javac.processing * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.javap * @clean * - * @build OverwriteBetweenCompilations ToolBox JavacTestingAbstractProcessor + * @build toolbox.ToolBox toolbox.JavacTask + * @build OverwriteBetweenCompilations JavacTestingAbstractProcessor * @compile/ref=OverwriteBetweenCompilations_1.out -XDaccessInternalAPI -processor OverwriteBetweenCompilations -Apass=1 -parameters -XDrawDiagnostics OverwriteBetweenCompilationsSource.java * @compile/ref=OverwriteBetweenCompilations_2.out -XDaccessInternalAPI -processor OverwriteBetweenCompilations -Apass=2 -parameters -XDrawDiagnostics OverwriteBetweenCompilationsSource.java * @compile/ref=OverwriteBetweenCompilations_3.out -XDaccessInternalAPI -processor OverwriteBetweenCompilations -Apass=3 -parameters -XDrawDiagnostics OverwriteBetweenCompilationsSource.java @@ -52,6 +52,9 @@ import com.sun.tools.javac.util.Log; import com.sun.tools.javac.util.Log.WriterKind; +import toolbox.JavacTask; +import toolbox.ToolBox; + @SupportedOptions("pass") public class OverwriteBetweenCompilations extends JavacTestingAbstractProcessor { int round = 1; @@ -95,7 +98,7 @@ ToolBox tb = new ToolBox(); ToolBox.MemoryFileManager mfm = new ToolBox.MemoryFileManager(); - tb.new JavacTask() + new JavacTask(tb) .fileManager(mfm) .options("-parameters") .sources(code) diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/stackmap/StackMapTest.java --- a/langtools/test/tools/javac/stackmap/StackMapTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/stackmap/StackMapTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary The "method0" StackMap attribute should have two entries instead of three * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavapTask * @run compile StackMapTest.java * @run main StackMapTest */ @@ -38,6 +37,10 @@ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javac/stackmap/T4955930.sh public class StackMapTest { @@ -54,11 +57,11 @@ public static void main(String args[]) throws Exception { ToolBox tb = new ToolBox(); Path pathToClass = Paths.get(ToolBox.testClasses, "StackMapTest$Test.class"); - String javapOut = tb.new JavapTask() + String javapOut = new JavapTask(tb) .options("-v") .classes(pathToClass.toString()) .run() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!javapOut.contains("StackMapTable: number_of_entries = 2")) throw new AssertionError("The number of entries of the stack map " diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/sym/ElementStructureTest.java --- a/langtools/test/tools/javac/sym/ElementStructureTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/sym/ElementStructureTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -26,7 +26,6 @@ * @bug 8072480 * @summary Check the platform classpath contains the correct elements. * @library /tools/lib - * @build ToolBox ElementStructureTest * @modules jdk.compiler/com.sun.tools.javac.code * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.main @@ -34,6 +33,7 @@ * jdk.compiler/com.sun.tools.javac.util * jdk.jdeps/com.sun.tools.classfile * jdk.jdeps/com.sun.tools.javap + * @build toolbox.ToolBox ElementStructureTest * @run main ElementStructureTest */ @@ -99,6 +99,9 @@ import com.sun.tools.javac.code.Symbol.CompletionFailure; import com.sun.tools.javac.platform.PlatformProvider; +import toolbox.ToolBox; + + /**To generate the hash values for version N, invoke this class like: * * java ElementStructureTest generate-hashes $LANGTOOLS_DIR/make/data/symbols/include.list ( N)+ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javac/tree/8067914/NukeExtraCast.java --- a/langtools/test/tools/javac/tree/8067914/NukeExtraCast.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javac/tree/8067914/NukeExtraCast.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, 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 @@ -24,13 +24,11 @@ /* * @test * @bug 8067914 - * @summary Redunant type cast nodes in AST (follow up from JDK-8043741) + * @summary Redundant type cast nodes in AST (follow up from JDK-8043741) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox * @run compile -XD-printsource T8067914.java * @run main NukeExtraCast */ @@ -39,6 +37,8 @@ import java.nio.file.Paths; import java.util.List; +import toolbox.ToolBox; + public class NukeExtraCast { public static void main(String[] args) throws Exception { diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javadoc/CompletionError.java --- a/langtools/test/tools/javadoc/CompletionError.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javadoc/CompletionError.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -64,7 +64,7 @@ testsDone = false; while (!testsDone) { ToolBox tb = new ToolBox(); - tb.new JavacTask() + new JavacTask(tb) .sources(testSource.toString(), "public class CompletionErrorMissing {}", "public interface CompletionErrorIntfMissing {}", diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javah/6257087/T6257087.java --- a/langtools/test/tools/javah/6257087/T6257087.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javah/6257087/T6257087.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -27,15 +27,16 @@ * @summary javah doesn't produce proper signatures for inner class native methods * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavahTask * @run main T6257087 */ import java.util.List; +import toolbox.JavahTask; +import toolbox.ToolBox; + public class T6257087 { private static final String fooBarGoldenFile = @@ -63,7 +64,7 @@ public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - tb.new JavahTask() + new JavahTask(tb) .classpath(ToolBox.testClasses) .classes("foo") .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javah/ModuleClass.java --- a/langtools/test/tools/javah/ModuleClass.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javah/ModuleClass.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,15 +27,16 @@ * @summary javah should accept module/class names * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavahTask * @run main ModuleClass */ import java.util.List; +import toolbox.JavahTask; +import toolbox.ToolBox; + public class ModuleClass { static public void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); @@ -44,7 +45,7 @@ } static void check(ToolBox tb, String name) throws Exception { - tb.new JavahTask() + new JavahTask(tb) .classes(name) .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javah/T4942232/MissingParamClassTest.java --- a/langtools/test/tools/javah/T4942232/MissingParamClassTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javah/T4942232/MissingParamClassTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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 @@ -29,10 +29,8 @@ * class is missing or not in the classpath * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavahTask * @run compile MissingParamClassTest.java * @clean MissingParamClassException * @run main MissingParamClassTest @@ -44,17 +42,21 @@ import java.nio.file.Files; import java.nio.file.Paths; +import toolbox.JavahTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javah/MissingParamClassTest.sh public class MissingParamClassTest { public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - String out = tb.new JavahTask() + String out = new JavahTask(tb) .classpath(ToolBox.testClasses) .classes("ParamClassTest") - .run(ToolBox.Expect.FAIL) - .getOutput(ToolBox.OutputKind.DIRECT); + .run(Task.Expect.FAIL) + .getOutput(Task.OutputKind.DIRECT); if (Files.exists(Paths.get("ParamClassTest.h")) || out.isEmpty()) throw new AssertionError("The only output generated by javah must be an error message"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javah/constMacroTest/ConstMacroTest.java --- a/langtools/test/tools/javah/constMacroTest/ConstMacroTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javah/constMacroTest/ConstMacroTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,16 +29,18 @@ * header file. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavahTask * @run main ConstMacroTest */ import java.io.*; import java.util.List; +import toolbox.JavahTask; +import toolbox.ToolBox; + // Original test: test/tools/javah/ConstMacroTest.sh public class ConstMacroTest { @@ -78,7 +80,7 @@ public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - tb.new JavahTask() + new JavahTask(tb) .classpath(ToolBox.testClasses) .classes("SubClassConsts") .run(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javap/4798312/JavapShouldLoadClassesFromRTJarTest.java --- a/langtools/test/tools/javap/4798312/JavapShouldLoadClassesFromRTJarTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javap/4798312/JavapShouldLoadClassesFromRTJarTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,22 +27,25 @@ * @summary In Windows, javap doesn't load classes from rt.jar * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavapTask * @run main JavapShouldLoadClassesFromRTJarTest */ +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + public class JavapShouldLoadClassesFromRTJarTest { public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - String out = tb.new JavapTask() + String out = new JavapTask(tb) .options("-v") .classes("java.lang.String") .run() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (out.isEmpty()) throw new AssertionError("javap generated no output"); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javap/4866831/PublicInterfaceTest.java --- a/langtools/test/tools/javap/4866831/PublicInterfaceTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javap/4866831/PublicInterfaceTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,16 +27,19 @@ * @summary Verify that javap marks public interfaces as public * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavapTask * @run main PublicInterfaceTest */ import java.nio.file.Path; import java.nio.file.Paths; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javap/PublicInterfaceTest.sh public class PublicInterfaceTest { public interface Test {} @@ -46,10 +49,10 @@ Path pathToClass = Paths.get(ToolBox.testClasses, "PublicInterfaceTest$Test.class"); - String out = tb.new JavapTask() + String out = new JavapTask(tb) .classes(pathToClass.toString()) .run() - .getOutput(ToolBox.OutputKind.DIRECT); + .getOutput(Task.OutputKind.DIRECT); if (!out.contains("public")) throw new AssertionError("The javap output does not contain \"public\""); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javap/T6729471.java --- a/langtools/test/tools/javap/T6729471.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javap/T6729471.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary javap does not output inner interfaces of an interface * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JarTask * @run main T6729471 */ @@ -39,6 +38,9 @@ import java.util.*; import javax.tools.*; +import toolbox.JarTask; +import toolbox.ToolBox; + public class T6729471 { public static void main(String... args) throws IOException { @@ -82,7 +84,7 @@ try (JavaFileManager fm = comp.getStandardFileManager(null, null, null)) { File f = new File(name); ToolBox tb = new ToolBox(); - tb.new JarTask(f.getPath()) + new JarTask(tb, f.getPath()) .files(fm, StandardLocation.PLATFORM_CLASS_PATH, paths) .run(); return f; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/javap/stackmap/StackmapTest.java --- a/langtools/test/tools/javap/stackmap/StackmapTest.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/javap/stackmap/StackmapTest.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,16 +27,20 @@ * @summary Verify that javap prints StackMapTable attribute contents * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build ToolBox + * @build toolbox.ToolBox toolbox.JavacTask toolbox.JavapTask * @run main StackmapTest */ import java.util.ArrayList; import java.util.List; +import toolbox.JavacTask; +import toolbox.JavapTask; +import toolbox.Task; +import toolbox.ToolBox; + // Original test: test/tools/javap/stackmap/T6271292.sh public class StackmapTest { @@ -80,15 +84,15 @@ public static void main(String[] args) throws Exception { ToolBox tb = new ToolBox(); - tb.new JavacTask() + new JavacTask(tb) .sources(TestSrc) .run(); - List out = tb.new JavapTask() + List out = new JavapTask(tb) .options("-v") .classes("Test.class") .run() - .getOutputLines(ToolBox.OutputKind.DIRECT); + .getOutputLines(Task.OutputKind.DIRECT); List grepResult = new ArrayList<>(); grepResult.addAll(tb.grep("frame_type", out)); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/ToolBox.java --- a/langtools/test/tools/lib/ToolBox.java Thu Mar 31 14:56:33 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2166 +0,0 @@ -/* - * Copyright (c) 2013, 2015, 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 - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FilterOutputStream; -import java.io.FilterWriter; -import java.io.IOError; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.Writer; -import java.net.URI; -import java.nio.charset.Charset; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.StandardCopyOption; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.ListIterator; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.jar.Attributes; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; -import java.util.jar.Manifest; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import javax.tools.FileObject; -import javax.tools.ForwardingJavaFileManager; -import javax.tools.JavaCompiler; -import javax.tools.JavaFileManager; -import javax.tools.JavaFileObject; -import javax.tools.JavaFileObject.Kind; -import javax.tools.JavaFileManager.Location; -import javax.tools.SimpleJavaFileObject; -import javax.tools.StandardJavaFileManager; -import javax.tools.StandardLocation; - -import com.sun.tools.javac.api.JavacTaskImpl; -import com.sun.tools.javac.api.JavacTool; - -/** - * Utility methods and classes for writing jtreg tests for - * javac, javah, javap, and sjavac. (For javadoc support, - * see JavadocTester.) - * - *

There is support for common file operations similar to - * shell commands like cat, cp, diff, mv, rm, grep. - * - *

There is also support for invoking various tools, like - * javac, javah, javap, jar, java and other JDK tools. - * - *

File separators: for convenience, many operations accept strings - * to represent filenames. On all platforms on which JDK is supported, - * "/" is a legal filename component separator. In particular, even - * on Windows, where the official file separator is "\", "/" is a legal - * alternative. It is therefore recommended that any client code using - * strings to specify filenames should use "/". - * - * @author Vicente Romero (original) - * @author Jonathan Gibbons (revised) - */ -public class ToolBox { - /** The platform line separator. */ - public static final String lineSeparator = System.getProperty("line.separator"); - /** The platform OS name. */ - public static final String osName = System.getProperty("os.name"); - - /** The location of the class files for this test, or null if not set. */ - public static final String testClasses = System.getProperty("test.classes"); - /** The location of the source files for this test, or null if not set. */ - public static final String testSrc = System.getProperty("test.src"); - /** The location of the test JDK for this test, or null if not set. */ - public static final String testJDK = System.getProperty("test.jdk"); - - /** The current directory. */ - public static final Path currDir = Paths.get("."); - - /** The stream used for logging output. */ - public PrintStream out = System.err; - - /** - * Checks if the host OS is some version of Windows. - * @return true if the host OS is some version of Windows - */ - public boolean isWindows() { - return osName.toLowerCase(Locale.ENGLISH).startsWith("windows"); - } - - /** - * Splits a string around matches of the given regular expression. - * If the string is empty, an empty list will be returned. - * @param text the string to be split - * @param sep the delimiting regular expression - * @return the strings between the separators - */ - public List split(String text, String sep) { - if (text.isEmpty()) - return Collections.emptyList(); - return Arrays.asList(text.split(sep)); - } - - /** - * Checks if two lists of strings are equal. - * @param l1 the first list of strings to be compared - * @param l2 the second list of strings to be compared - * @throws Error if the lists are not equal - */ - public void checkEqual(List l1, List l2) throws Error { - if (!Objects.equals(l1, l2)) { - // l1 and l2 cannot both be null - if (l1 == null) - throw new Error("comparison failed: l1 is null"); - if (l2 == null) - throw new Error("comparison failed: l2 is null"); - // report first difference - for (int i = 0; i < Math.min(l1.size(), l2.size()); i++) { - String s1 = l1.get(i); - String s2 = l1.get(i); - if (!Objects.equals(s1, s2)) { - throw new Error("comparison failed, index " + i + - ", (" + s1 + ":" + s2 + ")"); - } - } - throw new Error("comparison failed: l1.size=" + l1.size() + ", l2.size=" + l2.size()); - } - } - - /** - * Filters a list of strings according to the given regular expression. - * @param regex the regular expression - * @param lines the strings to be filtered - * @return the strings matching the regular expression - */ - public List grep(String regex, List lines) { - return grep(Pattern.compile(regex), lines); - } - - /** - * Filters a list of strings according to the given regular expression. - * @param pattern the regular expression - * @param lines the strings to be filtered - * @return the strings matching the regular expression - */ - public List grep(Pattern pattern, List lines) { - return lines.stream() - .filter(s -> pattern.matcher(s).find()) - .collect(Collectors.toList()); - } - - /** - * Copies a file. - * If the given destination exists and is a directory, the copy is created - * in that directory. Otherwise, the copy will be placed at the destination, - * possibly overwriting any existing file. - *

Similar to the shell "cp" command: {@code cp from to}. - * @param from the file to be copied - * @param to where to copy the file - * @throws IOException if any error occurred while copying the file - */ - public void copyFile(String from, String to) throws IOException { - copyFile(Paths.get(from), Paths.get(to)); - } - - /** - * Copies a file. - * If the given destination exists and is a directory, the copy is created - * in that directory. Otherwise, the copy will be placed at the destination, - * possibly overwriting any existing file. - *

Similar to the shell "cp" command: {@code cp from to}. - * @param from the file to be copied - * @param to where to copy the file - * @throws IOException if an error occurred while copying the file - */ - public void copyFile(Path from, Path to) throws IOException { - if (Files.isDirectory(to)) { - to = to.resolve(from.getFileName()); - } else { - Files.createDirectories(to.getParent()); - } - Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING); - } - - /** - * Creates one of more directories. - * For each of the series of paths, a directory will be created, - * including any necessary parent directories. - *

Similar to the shell command: {@code mkdir -p paths}. - * @param paths the directories to be created - * @throws IOException if an error occurred while creating the directories - */ - public void createDirectories(String... paths) throws IOException { - if (paths.length == 0) - throw new IllegalArgumentException("no directories specified"); - for (String p : paths) - Files.createDirectories(Paths.get(p)); - } - - /** - * Creates one or more directories. - * For each of the series of paths, a directory will be created, - * including any necessary parent directories. - *

Similar to the shell command: {@code mkdir -p paths}. - * @param paths the directories to be created - * @throws IOException if an error occurred while creating the directories - */ - public void createDirectories(Path... paths) throws IOException { - if (paths.length == 0) - throw new IllegalArgumentException("no directories specified"); - for (Path p : paths) - Files.createDirectories(p); - } - - /** - * Deletes one or more files. - * Any directories to be deleted must be empty. - *

Similar to the shell command: {@code rm files}. - * @param files the files to be deleted - * @throws IOException if an error occurred while deleting the files - */ - public void deleteFiles(String... files) throws IOException { - if (files.length == 0) - throw new IllegalArgumentException("no files specified"); - for (String file : files) - Files.delete(Paths.get(file)); - } - - /** - * Deletes all content of a directory (but not the directory itself). - * @param root the directory to be cleaned - */ - public void cleanDirectory(Path root) throws IOException { - if (!Files.isDirectory(root)) { - throw new IOException(root + " is not a directory"); - } - Files.walkFileTree(root, new SimpleFileVisitor() { - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes a) throws IOException { - Files.delete(file); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException e) throws IOException { - if (e != null) { - throw e; - } - if (!dir.equals(root)) { - Files.delete(dir); - } - return FileVisitResult.CONTINUE; - } - }); - } - - /** - * Moves a file. - * If the given destination exists and is a directory, the file will be moved - * to that directory. Otherwise, the file will be moved to the destination, - * possibly overwriting any existing file. - *

Similar to the shell "mv" command: {@code mv from to}. - * @param from the file to be moved - * @param to where to move the file - * @throws IOException if an error occurred while moving the file - */ - public void moveFile(String from, String to) throws IOException { - moveFile(Paths.get(from), Paths.get(to)); - } - - /** - * Moves a file. - * If the given destination exists and is a directory, the file will be moved - * to that directory. Otherwise, the file will be moved to the destination, - * possibly overwriting any existing file. - *

Similar to the shell "mv" command: {@code mv from to}. - * @param from the file to be moved - * @param to where to move the file - * @throws IOException if an error occurred while moving the file - */ - public void moveFile(Path from, Path to) throws IOException { - if (Files.isDirectory(to)) { - to = to.resolve(from.getFileName()); - } else { - Files.createDirectories(to.getParent()); - } - Files.move(from, to, StandardCopyOption.REPLACE_EXISTING); - } - - /** - * Reads the lines of a file. - * The file is read using the default character encoding. - * @param path the file to be read - * @return the lines of the file. - * @throws IOException if an error occurred while reading the file - */ - public List readAllLines(String path) throws IOException { - return readAllLines(path, null); - } - - /** - * Reads the lines of a file. - * The file is read using the default character encoding. - * @param path the file to be read - * @return the lines of the file. - * @throws IOException if an error occurred while reading the file - */ - public List readAllLines(Path path) throws IOException { - return readAllLines(path, null); - } - - /** - * Reads the lines of a file using the given encoding. - * @param path the file to be read - * @param encoding the encoding to be used to read the file - * @return the lines of the file. - * @throws IOException if an error occurred while reading the file - */ - public List readAllLines(String path, String encoding) throws IOException { - return readAllLines(Paths.get(path), encoding); - } - - /** - * Reads the lines of a file using the given encoding. - * @param path the file to be read - * @param encoding the encoding to be used to read the file - * @return the lines of the file. - * @throws IOException if an error occurred while reading the file - */ - public List readAllLines(Path path, String encoding) throws IOException { - return Files.readAllLines(path, getCharset(encoding)); - } - - private Charset getCharset(String encoding) { - return (encoding == null) ? Charset.defaultCharset() : Charset.forName(encoding); - } - - /** - * Writes a file containing the given content. - * Any necessary directories for the file will be created. - * @param path where to write the file - * @param content the content for the file - * @throws IOException if an error occurred while writing the file - */ - public void writeFile(String path, String content) throws IOException { - writeFile(Paths.get(path), content); - } - - /** - * Writes a file containing the given content. - * Any necessary directories for the file will be created. - * @param path where to write the file - * @param content the content for the file - * @throws IOException if an error occurred while writing the file - */ - public void writeFile(Path path, String content) throws IOException { - Path dir = path.getParent(); - if (dir != null) - Files.createDirectories(dir); - try (BufferedWriter w = Files.newBufferedWriter(path)) { - w.write(content); - } - } - - /** - * Writes one or more files containing Java source code. - * For each file to be written, the filename will be inferred from the - * given base directory, the package declaration (if present) and from the - * the name of the first class, interface or enum declared in the file. - *

For example, if the base directory is /my/dir/ and the content - * contains "package p; class C { }", the file will be written to - * /my/dir/p/C.java. - *

Note: the content is analyzed using regular expressions; - * errors can occur if any contents have initial comments that might trip - * up the analysis. - * @param dir the base directory - * @param contents the contents of the files to be written - * @throws IOException if an error occurred while writing any of the files. - */ - public void writeJavaFiles(Path dir, String... contents) throws IOException { - if (contents.length == 0) - throw new IllegalArgumentException("no content specified for any files"); - for (String c : contents) { - new JavaSource(c).write(dir); - } - } - - /** - * Returns the path for the binary of a JDK tool within {@link testJDK}. - * @param tool the name of the tool - * @return the path of the tool - */ - public Path getJDKTool(String tool) { - return Paths.get(testJDK, "bin", tool); - } - - /** - * Returns a string representing the contents of an {@code Iterable} as a list. - * @param the type parameter of the {@code Iterable} - * @param items the iterable - * @return the string - */ - String toString(Iterable items) { - return StreamSupport.stream(items.spliterator(), false) - .map(Objects::toString) - .collect(Collectors.joining(",", "[", "]")); - } - - /** - * The supertype for tasks. - * Complex operations are modelled by building and running a "Task" object. - * Tasks are typically configured in a fluent series of calls. - */ - public interface Task { - /** - * Returns the name of the task. - * @return the name of the task - */ - String name(); - - /** - * Executes the task as currently configured. - * @return a Result object containing the results of running the task - * @throws TaskError if the outcome of the task was not as expected - */ - Result run() throws TaskError; - } - - /** - * Exception thrown by {@code Task.run} when the outcome is not as - * expected. - */ - public static class TaskError extends Error { - /** - * Creates a TaskError object with the given message. - * @param message the message - */ - public TaskError(String message) { - super(message); - } - } - - /** - * An enum to indicate the mode a task should use it is when executed. - */ - public enum Mode { - /** - * The task should use the interface used by the command - * line launcher for the task. - * For example, for javac: com.sun.tools.javac.Main.compile - */ - CMDLINE, - /** - * The task should use a publicly defined API for the task. - * For example, for javac: javax.tools.JavaCompiler - */ - API, - /** - * The task should use the standard launcher for the task. - * For example, $JAVA_HOME/bin/javac - */ - EXEC - } - - /** - * An enum to indicate the expected success or failure of executing a task. - */ - public enum Expect { - /** It is expected that the task will complete successfully. */ - SUCCESS, - /** It is expected that the task will not complete successfully. */ - FAIL - } - - /** - * An enum to identify the streams that may be written by a {@code Task}. - */ - public enum OutputKind { - /** Identifies output written to {@code System.out} or {@code stdout}. */ - STDOUT, - /** Identifies output written to {@code System.err} or {@code stderr}. */ - STDERR, - /** Identifies output written to a stream provided directly to the task. */ - DIRECT - }; - - /** - * The results from running a {@link Task}. - * The results contain the exit code returned when the tool was invoked, - * and a map containing the output written to any streams during the - * execution of the tool. - * All tools support "stdout" and "stderr". - * Tools that take an explicit PrintWriter save output written to that - * stream as "main". - */ - public class Result { - - final Task task; - final int exitCode; - final Map outputMap; - - Result(Task task, int exitCode, Map outputMap) { - this.task = task; - this.exitCode = exitCode; - this.outputMap = outputMap; - } - - /** - * Returns the content of a specified stream. - * @param outputKind the kind of the selected stream - * @return the content that was written to that stream when the tool - * was executed. - */ - public String getOutput(OutputKind outputKind) { - return outputMap.get(outputKind); - } - - /** - * Returns the content of named streams as a list of lines. - * @param outputKinds the kinds of the selected streams - * @return the content that was written to the given streams when the tool - * was executed. - */ - public List getOutputLines(OutputKind... outputKinds) { - List result = new ArrayList<>(); - for (OutputKind outputKind : outputKinds) { - result.addAll(Arrays.asList(outputMap.get(outputKind).split(lineSeparator))); - } - return result; - } - - /** - * Writes the content of the specified stream to the log. - * @param kind the kind of the selected stream - * @return this Result object - */ - public Result write(OutputKind kind) { - String text = getOutput(kind); - if (text == null || text.isEmpty()) - out.println("[" + task.name() + ":" + kind + "]: empty"); - else { - out.println("[" + task.name() + ":" + kind + "]:"); - out.print(text); - } - return this; - } - - /** - * Writes the content of all streams with any content to the log. - * @return this Result object - */ - public Result writeAll() { - outputMap.forEach((name, text) -> { - if (!text.isEmpty()) { - out.println("[" + name + "]:"); - out.print(text); - } - }); - return this; - } - } - - /** - * A utility base class to simplify the implementation of tasks. - * Provides support for running the task in a process and for - * capturing output written by the task to stdout, stderr and - * other writers where applicable. - * @param the implementing subclass - */ - protected static abstract class AbstractTask> implements Task { - protected final Mode mode; - private final Map redirects = new EnumMap<>(OutputKind.class); - private final Map envVars = new HashMap<>(); - private Expect expect = Expect.SUCCESS; - int expectedExitCode = 0; - - /** - * Create a task that will execute in the specified mode. - * @param mode the mode - */ - protected AbstractTask(Mode mode) { - this.mode = mode; - } - - /** - * Sets the expected outcome of the task and calls {@code run()}. - * @param expect the expected outcome - * @return the result of calling {@code run()} - */ - public Result run(Expect expect) { - expect(expect, Integer.MIN_VALUE); - return run(); - } - - /** - * Sets the expected outcome of the task and calls {@code run()}. - * @param expect the expected outcome - * @param exitCode the expected exit code if the expected outcome - * is {@code FAIL} - * @return the result of calling {@code run()} - */ - public Result run(Expect expect, int exitCode) { - expect(expect, exitCode); - return run(); - } - - /** - * Sets the expected outcome and expected exit code of the task. - * The exit code will not be checked if the outcome is - * {@code Expect.SUCCESS} or if the exit code is set to - * {@code Integer.MIN_VALUE}. - * @param expect the expected outcome - * @param exitCode the expected exit code - */ - protected void expect(Expect expect, int exitCode) { - this.expect = expect; - this.expectedExitCode = exitCode; - } - - /** - * Checks the exit code contained in a {@code Result} against the - * expected outcome and exit value - * @param result the result object - * @return the result object - * @throws TaskError if the exit code stored in the result object - * does not match the expected outcome and exit code. - */ - protected Result checkExit(Result result) throws TaskError { - switch (expect) { - case SUCCESS: - if (result.exitCode != 0) { - result.writeAll(); - throw new TaskError("Task " + name() + " failed: rc=" + result.exitCode); - } - break; - - case FAIL: - if (result.exitCode == 0) { - result.writeAll(); - throw new TaskError("Task " + name() + " succeeded unexpectedly"); - } - - if (expectedExitCode != Integer.MIN_VALUE - && result.exitCode != expectedExitCode) { - result.writeAll(); - throw new TaskError("Task " + name() + "failed with unexpected exit code " - + result.exitCode + ", expected " + expectedExitCode); - } - break; - } - return result; - } - - /** - * Sets an environment variable to be used by this task. - * @param name the name of the environment variable - * @param value the value for the environment variable - * @return this task object - * @throws IllegalStateException if the task mode is not {@code EXEC} - */ - protected T envVar(String name, String value) { - if (mode != Mode.EXEC) - throw new IllegalStateException(); - envVars.put(name, value); - return (T) this; - } - - /** - * Redirects output from an output stream to a file. - * @param outputKind the name of the stream to be redirected. - * @param path the file - * @return this task object - * @throws IllegalStateException if the task mode is not {@code EXEC} - */ - protected T redirect(OutputKind outputKind, String path) { - if (mode != Mode.EXEC) - throw new IllegalStateException(); - redirects.put(outputKind, path); - return (T) this; - } - - /** - * Returns a {@code ProcessBuilder} initialized with any - * redirects and environment variables that have been set. - * @return a {@code ProcessBuilder} - */ - protected ProcessBuilder getProcessBuilder() { - if (mode != Mode.EXEC) - throw new IllegalStateException(); - ProcessBuilder pb = new ProcessBuilder(); - if (redirects.get(OutputKind.STDOUT) != null) - pb.redirectOutput(new File(redirects.get(OutputKind.STDOUT))); - if (redirects.get(OutputKind.STDERR) != null) - pb.redirectError(new File(redirects.get(OutputKind.STDERR))); - pb.environment().putAll(envVars); - return pb; - } - - /** - * Collects the output from a process and saves it in a {@code Result}. - * @param tb the {@code ToolBox} containing the task {@code t} - * @param t the task initiating the process - * @param p the process - * @return a Result object containing the output from the process and its - * exit value. - * @throws InterruptedException if the thread is interrupted - */ - protected Result runProcess(ToolBox tb, Task t, Process p) throws InterruptedException { - if (mode != Mode.EXEC) - throw new IllegalStateException(); - ProcessOutput sysOut = new ProcessOutput(p.getInputStream()).start(); - ProcessOutput sysErr = new ProcessOutput(p.getErrorStream()).start(); - sysOut.waitUntilDone(); - sysErr.waitUntilDone(); - int rc = p.waitFor(); - Map outputMap = new EnumMap<>(OutputKind.class); - outputMap.put(OutputKind.STDOUT, sysOut.getOutput()); - outputMap.put(OutputKind.STDERR, sysErr.getOutput()); - return checkExit(tb.new Result(t, rc, outputMap)); - } - - /** - * Thread-friendly class to read the output from a process until the stream - * is exhausted. - */ - static class ProcessOutput implements Runnable { - ProcessOutput(InputStream from) { - in = new BufferedReader(new InputStreamReader(from)); - out = new StringBuilder(); - } - - ProcessOutput start() { - new Thread(this).start(); - return this; - } - - @Override - public void run() { - try { - String line; - while ((line = in.readLine()) != null) { - out.append(line).append(lineSeparator); - } - } catch (IOException e) { - } - synchronized (this) { - done = true; - notifyAll(); - } - } - - synchronized void waitUntilDone() throws InterruptedException { - boolean interrupted = false; - - // poll interrupted flag, while waiting for copy to complete - while (!(interrupted = Thread.interrupted()) && !done) - wait(1000); - - if (interrupted) - throw new InterruptedException(); - } - - String getOutput() { - return out.toString(); - } - - private BufferedReader in; - private final StringBuilder out; - private boolean done; - } - - /** - * Utility class to simplify the handling of temporarily setting a - * new stream for System.out or System.err. - */ - static class StreamOutput { - // Functional interface to set a stream. - // Expected use: System::setOut, System::setErr - private interface Initializer { - void set(PrintStream s); - } - - private final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - private final PrintStream ps = new PrintStream(baos); - private final PrintStream prev; - private final Initializer init; - - StreamOutput(PrintStream s, Initializer init) { - prev = s; - init.set(ps); - this.init = init; - } - - /** - * Closes the stream and returns the contents that were written to it. - * @return the contents that were written to it. - */ - String close() { - init.set(prev); - ps.close(); - return baos.toString(); - } - } - - /** - * Utility class to simplify the handling of creating an in-memory PrintWriter. - */ - static class WriterOutput { - private final StringWriter sw = new StringWriter(); - final PrintWriter pw = new PrintWriter(sw); - - /** - * Closes the stream and returns the contents that were written to it. - * @return the contents that were written to it. - */ - String close() { - pw.close(); - return sw.toString(); - } - } - } - - /** - * A task to configure and run the Java compiler, javac. - */ - public class JavacTask extends AbstractTask { - private boolean includeStandardOptions; - private List classpath; - private List sourcepath; - private Path outdir; - private List options; - private List classes; - private List files; - private List fileObjects; - private JavaFileManager fileManager; - - private JavaCompiler compiler; - private StandardJavaFileManager internalFileManager; - - /** - * Creates a task to execute {@code javac} using API mode. - */ - public JavacTask() { - super(Mode.API); - } - - /** - * Creates a task to execute {@code javac} in a specified mode. - * @param mode the mode to be used - */ - public JavacTask(Mode mode) { - super(mode); - } - - /** - * Sets the classpath. - * @param classpath the classpath - * @return this task object - */ - public JavacTask classpath(String classpath) { - this.classpath = Stream.of(classpath.split(File.pathSeparator)) - .filter(s -> !s.isEmpty()) - .map(s -> Paths.get(s)) - .collect(Collectors.toList()); - return this; - } - - /** - * Sets the classpath. - * @param classpath the classpath - * @return this task object - */ - public JavacTask classpath(Path... classpath) { - this.classpath = Arrays.asList(classpath); - return this; - } - - /** - * Sets the sourcepath. - * @param sourcepath the sourcepath - * @return this task object - */ - public JavacTask sourcepath(String sourcepath) { - this.sourcepath = Stream.of(sourcepath.split(File.pathSeparator)) - .filter(s -> !s.isEmpty()) - .map(s -> Paths.get(s)) - .collect(Collectors.toList()); - return this; - } - - /** - * Sets the sourcepath. - * @param classpath the sourcepath - * @return this task object - */ - public JavacTask sourcepath(Path... sourcepath) { - this.sourcepath = Arrays.asList(sourcepath); - return this; - } - - /** - * Sets the output directory. - * @param outdir the output directory - * @return this task object - */ - public JavacTask outdir(String outdir) { - this.outdir = Paths.get(outdir); - return this; - } - - /** - * Sets the output directory. - * @param outdir the output directory - * @return this task object - */ - public JavacTask outdir(Path outdir) { - this.outdir = outdir; - return this; - } - - /** - * Sets the options. - * @param options the options - * @return this task object - */ - public JavacTask options(String... options) { - this.options = Arrays.asList(options); - return this; - } - - /** - * Sets the classes to be analyzed. - * @param classes the classes - * @return this task object - */ - public JavacTask classes(String... classes) { - this.classes = Arrays.asList(classes); - return this; - } - - /** - * Sets the files to be compiled or analyzed. - * @param files the files - * @return this task object - */ - public JavacTask files(String... files) { - this.files = Arrays.asList(files); - return this; - } - - /** - * Sets the files to be compiled or analyzed. - * @param files the files - * @return this task object - */ - public JavacTask files(Path... files) { - this.files = Stream.of(files) - .map(Path::toString) - .collect(Collectors.toList()); - return this; - } - - /** - * Sets the sources to be compiled or analyzed. - * Each source string is converted into an in-memory object that - * can be passed directly to the compiler. - * @param sources the sources - * @return this task object - */ - public JavacTask sources(String... sources) { - fileObjects = Stream.of(sources) - .map(s -> new JavaSource(s)) - .collect(Collectors.toList()); - return this; - } - - /** - * Sets the file manager to be used by this task. - * @param fileManager the file manager - * @return this task object - */ - public JavacTask fileManager(JavaFileManager fileManager) { - this.fileManager = fileManager; - return this; - } - - /** - * {@inheritDoc} - * @return the name "javac" - */ - @Override - public String name() { - return "javac"; - } - - /** - * Calls the compiler with the arguments as currently configured. - * @return a Result object indicating the outcome of the compilation - * and the content of any output written to stdout, stderr, or the - * main stream by the compiler. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - if (mode == Mode.EXEC) - return runExec(); - - WriterOutput direct = new WriterOutput(); - // The following are to catch output to System.out and System.err, - // in case these are used instead of the primary (main) stream - StreamOutput sysOut = new StreamOutput(System.out, System::setOut); - StreamOutput sysErr = new StreamOutput(System.err, System::setErr); - int rc; - Map outputMap = new HashMap<>(); - try { - switch (mode == null ? Mode.API : mode) { - case API: - rc = runAPI(direct.pw); - break; - case CMDLINE: - rc = runCommand(direct.pw); - break; - default: - throw new IllegalStateException(); - } - } catch (IOException e) { - out.println("Exception occurred: " + e); - rc = 99; - } finally { - outputMap.put(OutputKind.STDOUT, sysOut.close()); - outputMap.put(OutputKind.STDERR, sysErr.close()); - outputMap.put(OutputKind.DIRECT, direct.close()); - } - return checkExit(new Result(this, rc, outputMap)); - } - - private int runAPI(PrintWriter pw) throws IOException { - try { -// if (compiler == null) { - // TODO: allow this to be set externally -// compiler = ToolProvider.getSystemJavaCompiler(); - compiler = JavacTool.create(); -// } - - if (fileManager == null) - fileManager = internalFileManager = compiler.getStandardFileManager(null, null, null); - if (outdir != null) - setLocationFromPaths(StandardLocation.CLASS_OUTPUT, Collections.singletonList(outdir)); - if (classpath != null) - setLocationFromPaths(StandardLocation.CLASS_PATH, classpath); - if (sourcepath != null) - setLocationFromPaths(StandardLocation.SOURCE_PATH, sourcepath); - List allOpts = new ArrayList<>(); - if (options != null) - allOpts.addAll(options); - - Iterable allFiles = joinFiles(files, fileObjects); - JavaCompiler.CompilationTask task = compiler.getTask(pw, - fileManager, - null, // diagnostic listener; should optionally collect diags - allOpts, - classes, - allFiles); - return ((JavacTaskImpl) task).doCall().exitCode; - } finally { - if (internalFileManager != null) - internalFileManager.close(); - } - } - - private void setLocationFromPaths(StandardLocation location, List files) throws IOException { - if (!(fileManager instanceof StandardJavaFileManager)) - throw new IllegalStateException("not a StandardJavaFileManager"); - ((StandardJavaFileManager) fileManager).setLocationFromPaths(location, files); - } - - private int runCommand(PrintWriter pw) { - List args = getAllArgs(); - String[] argsArray = args.toArray(new String[args.size()]); - return com.sun.tools.javac.Main.compile(argsArray, pw); - } - - private Result runExec() { - List args = new ArrayList<>(); - Path javac = getJDKTool("javac"); - args.add(javac.toString()); - if (includeStandardOptions) { - args.addAll(split(System.getProperty("test.tool.vm.opts"), " +")); - args.addAll(split(System.getProperty("test.compiler.opts"), " +")); - } - args.addAll(getAllArgs()); - - String[] argsArray = args.toArray(new String[args.size()]); - ProcessBuilder pb = getProcessBuilder(); - pb.command(argsArray); - try { - return runProcess(ToolBox.this, this, pb.start()); - } catch (IOException | InterruptedException e) { - throw new Error(e); - } - } - - private List getAllArgs() { - List args = new ArrayList<>(); - if (options != null) - args.addAll(options); - if (outdir != null) { - args.add("-d"); - args.add(outdir.toString()); - } - if (classpath != null) { - args.add("-classpath"); - args.add(toSearchPath(classpath)); - } - if (sourcepath != null) { - args.add("-sourcepath"); - args.add(toSearchPath(sourcepath)); - } - if (classes != null) - args.addAll(classes); - if (files != null) - args.addAll(files); - - return args; - } - - private String toSearchPath(List files) { - return files.stream() - .map(Path::toString) - .collect(Collectors.joining(File.pathSeparator)); - } - - private Iterable joinFiles( - List files, List fileObjects) { - if (files == null) - return fileObjects; - if (internalFileManager == null) - internalFileManager = compiler.getStandardFileManager(null, null, null); - Iterable filesAsFileObjects = - internalFileManager.getJavaFileObjectsFromStrings(files); - if (fileObjects == null) - return filesAsFileObjects; - List combinedList = new ArrayList<>(); - for (JavaFileObject o : filesAsFileObjects) - combinedList.add(o); - combinedList.addAll(fileObjects); - return combinedList; - } - } - - /** - * A task to configure and run the native header tool, javah. - */ - public class JavahTask extends AbstractTask { - private String classpath; - private List options; - private List classes; - - /** - * Create a task to execute {@code javah} using {@code CMDLINE} mode. - */ - public JavahTask() { - super(Mode.CMDLINE); - } - - /** - * Sets the classpath. - * @param classpath the classpath - * @return this task object - */ - public JavahTask classpath(String classpath) { - this.classpath = classpath; - return this; - } - - /** - * Sets the options. - * @param options the options - * @return this task object - */ - public JavahTask options(String... options) { - this.options = Arrays.asList(options); - return this; - } - - /** - * Sets the classes to be analyzed. - * @param classes the classes - * @return this task object - */ - public JavahTask classes(String... classes) { - this.classes = Arrays.asList(classes); - return this; - } - - /** - * {@inheritDoc} - * @return the name "javah" - */ - @Override - public String name() { - return "javah"; - } - - /** - * Calls the javah tool with the arguments as currently configured. - * @return a Result object indicating the outcome of the task - * and the content of any output written to stdout, stderr, or the - * main stream provided to the task. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - List args = new ArrayList<>(); - if (options != null) - args.addAll(options); - if (classpath != null) { - args.add("-classpath"); - args.add(classpath); - } - if (classes != null) - args.addAll(classes); - - WriterOutput direct = new WriterOutput(); - // These are to catch output to System.out and System.err, - // in case these are used instead of the primary streams - StreamOutput sysOut = new StreamOutput(System.out, System::setOut); - StreamOutput sysErr = new StreamOutput(System.err, System::setErr); - int rc; - Map outputMap = new HashMap<>(); - try { - rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), direct.pw); - } finally { - outputMap.put(OutputKind.STDOUT, sysOut.close()); - outputMap.put(OutputKind.STDERR, sysErr.close()); - outputMap.put(OutputKind.DIRECT, direct.close()); - } - return checkExit(new Result(this, rc, outputMap)); - } - } - - /** - * A task to configure and run the disassembler tool, javap. - */ - public class JavapTask extends AbstractTask { - private String classpath; - private List options; - private List classes; - - /** - * Create a task to execute {@code javap} using {@code CMDLINE} mode. - */ - public JavapTask() { - super(Mode.CMDLINE); - } - - /** - * Sets the classpath. - * @param classpath the classpath - * @return this task object - */ - public JavapTask classpath(String classpath) { - this.classpath = classpath; - return this; - } - - /** - * Sets the options. - * @param options the options - * @return this task object - */ - public JavapTask options(String... options) { - this.options = Arrays.asList(options); - return this; - } - - /** - * Sets the classes to be analyzed. - * @param classes the classes - * @return this task object - */ - public JavapTask classes(String... classes) { - this.classes = Arrays.asList(classes); - return this; - } - - /** - * {@inheritDoc} - * @return the name "javap" - */ - @Override - public String name() { - return "javap"; - } - - /** - * Calls the javap tool with the arguments as currently configured. - * @return a Result object indicating the outcome of the task - * and the content of any output written to stdout, stderr, or the - * main stream. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - List args = new ArrayList<>(); - if (options != null) - args.addAll(options); - if (classpath != null) { - args.add("-classpath"); - args.add(classpath); - } - if (classes != null) - args.addAll(classes); - - WriterOutput direct = new WriterOutput(); - // These are to catch output to System.out and System.err, - // in case these are used instead of the primary streams - StreamOutput sysOut = new StreamOutput(System.out, System::setOut); - StreamOutput sysErr = new StreamOutput(System.err, System::setErr); - - int rc; - Map outputMap = new HashMap<>(); - try { - rc = com.sun.tools.javap.Main.run(args.toArray(new String[args.size()]), direct.pw); - } finally { - outputMap.put(OutputKind.STDOUT, sysOut.close()); - outputMap.put(OutputKind.STDERR, sysErr.close()); - outputMap.put(OutputKind.DIRECT, direct.close()); - } - return checkExit(new Result(this, rc, outputMap)); - } - } - - /** - * A task to configure and run the jar file utility. - */ - public class JarTask extends AbstractTask { - private Path jar; - private Manifest manifest; - private String classpath; - private String mainClass; - private Path baseDir; - private List paths; - private Set fileObjects; - - /** - * Creates a task to write jar files, using API mode. - */ - public JarTask() { - super(Mode.API); - paths = Collections.emptyList(); - fileObjects = new LinkedHashSet<>(); - } - - /** - * Creates a JarTask for use with a given jar file. - * @param path the file - */ - public JarTask(String path) { - this(); - jar = Paths.get(path); - } - - /** - * Creates a JarTask for use with a given jar file. - * @param path the file - */ - public JarTask(Path path) { - this(); - jar = path; - } - - /** - * Sets a manifest for the jar file. - * @param manifest the manifest - * @return this task object - */ - public JarTask manifest(Manifest manifest) { - this.manifest = manifest; - return this; - } - - /** - * Sets a manifest for the jar file. - * @param manifest a string containing the contents of the manifest - * @return this task object - * @throws IOException if there is a problem creating the manifest - */ - public JarTask manifest(String manifest) throws IOException { - this.manifest = new Manifest(new ByteArrayInputStream(manifest.getBytes())); - return this; - } - - /** - * Sets the classpath to be written to the {@code Class-Path} - * entry in the manifest. - * @param classpath the classpath - * @return this task object - */ - public JarTask classpath(String classpath) { - this.classpath = classpath; - return this; - } - - /** - * Sets the class to be written to the {@code Main-Class} - * entry in the manifest.. - * @param mainClass the name of the main class - * @return this task object - */ - public JarTask mainClass(String mainClass) { - this.mainClass = mainClass; - return this; - } - - /** - * Sets the base directory for files to be written into the jar file. - * @param baseDir the base directory - * @return this task object - */ - public JarTask baseDir(String baseDir) { - this.baseDir = Paths.get(baseDir); - return this; - } - - /** - * Sets the base directory for files to be written into the jar file. - * @param baseDir the base directory - * @return this task object - */ - public JarTask baseDir(Path baseDir) { - this.baseDir = baseDir; - return this; - } - - /** - * Sets the files to be written into the jar file. - * @param files the files - * @return this task object - */ - public JarTask files(String... files) { - this.paths = Stream.of(files) - .map(file -> Paths.get(file)) - .collect(Collectors.toList()); - return this; - } - - /** - * Adds a set of file objects to be written into the jar file, by copying them - * from a Location in a JavaFileManager. - * The file objects to be written are specified by a series of paths; - * each path can be in one of the following forms: - *

    - *
  • The name of a class. For example, java.lang.Object. - * In this case, the corresponding .class file will be written to the jar file. - *
  • the name of a package followed by {@code .*}. For example, {@code java.lang.*}. - * In this case, all the class files in the specified package will be written to - * the jar file. - *
  • the name of a package followed by {@code .**}. For example, {@code java.lang.**}. - * In this case, all the class files in the specified package, and any subpackages - * will be written to the jar file. - *
- * - * @param fm the file manager in which to find the file objects - * @param l the location in which to find the file objects - * @param paths the paths specifying the file objects to be copied - * @return this task object - * @throws IOException if errors occur while determining the set of file objects - */ - public JarTask files(JavaFileManager fm, Location l, String... paths) - throws IOException { - for (String p : paths) { - if (p.endsWith(".**")) - addPackage(fm, l, p.substring(0, p.length() - 3), true); - else if (p.endsWith(".*")) - addPackage(fm, l, p.substring(0, p.length() - 2), false); - else - addFile(fm, l, p); - } - return this; - } - - private void addPackage(JavaFileManager fm, Location l, String pkg, boolean recurse) - throws IOException { - for (JavaFileObject fo : fm.list(l, pkg, EnumSet.allOf(JavaFileObject.Kind.class), recurse)) { - fileObjects.add(fo); - } - } - - private void addFile(JavaFileManager fm, Location l, String path) throws IOException { - JavaFileObject fo = fm.getJavaFileForInput(l, path, Kind.CLASS); - fileObjects.add(fo); - } - - /** - * Provides limited jar command-like functionality. - * The supported commands are: - *
    - *
  • jar cf jarfile -C dir files... - *
  • jar cfm jarfile manifestfile -C dir files... - *
- * Any values specified by other configuration methods will be ignored. - * @param args arguments in the style of those for the jar command - * @return a Result object containing the results of running the task - */ - public Result run(String... args) { - if (args.length < 2) - throw new IllegalArgumentException(); - - ListIterator iter = Arrays.asList(args).listIterator(); - String first = iter.next(); - switch (first) { - case "cf": - jar = Paths.get(iter.next()); - break; - case "cfm": - jar = Paths.get(iter.next()); - try (InputStream in = Files.newInputStream(Paths.get(iter.next()))) { - manifest = new Manifest(in); - } catch (IOException e) { - throw new IOError(e); - } - break; - } - - if (iter.hasNext()) { - if (iter.next().equals("-C")) - baseDir = Paths.get(iter.next()); - else - iter.previous(); - } - - paths = new ArrayList<>(); - while (iter.hasNext()) - paths.add(Paths.get(iter.next())); - - return run(); - } - - /** - * {@inheritDoc} - * @return the name "jar" - */ - @Override - public String name() { - return "jar"; - } - - /** - * Creates a jar file with the arguments as currently configured. - * @return a Result object indicating the outcome of the compilation - * and the content of any output written to stdout, stderr, or the - * main stream by the compiler. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - Manifest m = (manifest == null) ? new Manifest() : manifest; - Attributes mainAttrs = m.getMainAttributes(); - if (mainClass != null) - mainAttrs.put(Attributes.Name.MAIN_CLASS, mainClass); - if (classpath != null) - mainAttrs.put(Attributes.Name.CLASS_PATH, classpath); - - StreamOutput sysOut = new StreamOutput(System.out, System::setOut); - StreamOutput sysErr = new StreamOutput(System.err, System::setErr); - - Map outputMap = new HashMap<>(); - - try (OutputStream os = Files.newOutputStream(jar); - JarOutputStream jos = openJar(os, m)) { - writeFiles(jos); - writeFileObjects(jos); - } catch (IOException e) { - error("Exception while opening " + jar, e); - } finally { - outputMap.put(OutputKind.STDOUT, sysOut.close()); - outputMap.put(OutputKind.STDERR, sysErr.close()); - } - return checkExit(new Result(this, (errors == 0) ? 0 : 1, outputMap)); - } - - private JarOutputStream openJar(OutputStream os, Manifest m) throws IOException { - if (m == null || m.getMainAttributes().isEmpty() && m.getEntries().isEmpty()) { - return new JarOutputStream(os); - } else { - if (m.getMainAttributes().get(Attributes.Name.MANIFEST_VERSION) == null) - m.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); - return new JarOutputStream(os, m); - } - } - - private void writeFiles(JarOutputStream jos) throws IOException { - Path base = (baseDir == null) ? currDir : baseDir; - for (Path path : paths) { - Files.walkFileTree(base.resolve(path), new SimpleFileVisitor() { - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - try { - String p = base.relativize(file) - .normalize() - .toString() - .replace(File.separatorChar, '/'); - JarEntry e = new JarEntry(p); - jos.putNextEntry(e); - try { - jos.write(Files.readAllBytes(file)); - } finally { - jos.closeEntry(); - } - return FileVisitResult.CONTINUE; - } catch (IOException e) { - error("Exception while adding " + file + " to jar file", e); - return FileVisitResult.TERMINATE; - } - } - }); - } - } - - private void writeFileObjects(JarOutputStream jos) throws IOException { - for (FileObject fo : fileObjects) { - String p = guessPath(fo); - JarEntry e = new JarEntry(p); - jos.putNextEntry(e); - try { - byte[] buf = new byte[1024]; - try (BufferedInputStream in = new BufferedInputStream(fo.openInputStream())) { - int n; - while ((n = in.read(buf)) > 0) - jos.write(buf, 0, n); - } catch (IOException ex) { - error("Exception while adding " + fo.getName() + " to jar file", ex); - } - } finally { - jos.closeEntry(); - } - } - } - - /* - * A jar: URL is of the form jar:URL!/ where URL is a URL for the .jar file itself. - * In Symbol files (i.e. ct.sym) the underlying entry is prefixed META-INF/sym/. - */ - private final Pattern jarEntry = Pattern.compile(".*!/(?:META-INF/sym/[^/]+/)?(.*)"); - - /* - * A jrt: URL is of the form jrt:/modules/// - */ - private final Pattern jrtEntry = Pattern.compile("/modules/([^/]+)/(.*)"); - - /* - * A file: URL is of the form file:/path/to/{modules,patches}/// - */ - private final Pattern fileEntry = Pattern.compile(".*/(?:modules|patches)/([^/]+)/(.*)"); - - private String guessPath(FileObject fo) { - URI u = fo.toUri(); - switch (u.getScheme()) { - case "jar": { - Matcher m = jarEntry.matcher(u.getSchemeSpecificPart()); - if (m.matches()) { - return m.group(1); - } - break; - } - case "jrt": { - Matcher m = jrtEntry.matcher(u.getSchemeSpecificPart()); - if (m.matches()) { - return m.group(2); - } - break; - } - case "file": { - Matcher m = fileEntry.matcher(u.getSchemeSpecificPart()); - if (m.matches()) { - return m.group(2); - } - break; - } - } - throw new IllegalArgumentException(fo.getName() + "--" + fo.toUri()); - } - - private void error(String message, Throwable t) { - out.println("Error: " + message + ": " + t); - errors++; - } - - private int errors; - } - - /** - * A task to configure and run the Java launcher. - */ - public class JavaTask extends AbstractTask { - boolean includeStandardOptions = true; - private String classpath; - private List vmOptions; - private String className; - private List classArgs; - - /** - * Create a task to run the Java launcher, using {@code EXEC} mode. - */ - public JavaTask() { - super(Mode.EXEC); - } - - /** - * Sets the classpath. - * @param classpath the classpath - * @return this task object - */ - public JavaTask classpath(String classpath) { - this.classpath = classpath; - return this; - } - - /** - * Sets the VM options. - * @param vmOptions the options - * @return this task object - */ - public JavaTask vmOptions(String... vmOptions) { - this.vmOptions = Arrays.asList(vmOptions); - return this; - } - - /** - * Sets the name of the class to be executed. - * @param className the name of the class - * @return this task object - */ - public JavaTask className(String className) { - this.className = className; - return this; - } - - /** - * Sets the arguments for the class to be executed. - * @param classArgs the arguments - * @return this task object - */ - public JavaTask classArgs(String... classArgs) { - this.classArgs = Arrays.asList(classArgs); - return this; - } - - /** - * Sets whether or not the standard VM and java options for the test should be passed - * to the new VM instance. If this method is not called, the default behavior is that - * the options will be passed to the new VM instance. - * - * @param includeStandardOptions whether or not the standard VM and java options for - * the test should be passed to the new VM instance. - * @return this task object - */ - public JavaTask includeStandardOptions(boolean includeStandardOptions) { - this.includeStandardOptions = includeStandardOptions; - return this; - } - - /** - * {@inheritDoc} - * @return the name "java" - */ - @Override - public String name() { - return "java"; - } - - /** - * Calls the Java launcher with the arguments as currently configured. - * @return a Result object indicating the outcome of the task - * and the content of any output written to stdout or stderr. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - List args = new ArrayList<>(); - args.add(getJDKTool("java").toString()); - if (includeStandardOptions) { - args.addAll(split(System.getProperty("test.vm.opts"), " +")); - args.addAll(split(System.getProperty("test.java.opts"), " +")); - } - if (classpath != null) { - args.add("-classpath"); - args.add(classpath); - } - if (vmOptions != null) - args.addAll(vmOptions); - if (className != null) - args.add(className); - if (classArgs != null) - args.addAll(classArgs); - ProcessBuilder pb = getProcessBuilder(); - pb.command(args); - try { - return runProcess(ToolBox.this, this, pb.start()); - } catch (IOException | InterruptedException e) { - throw new Error(e); - } - } - } - - /** - * A task to configure and run a general command. - */ - public class ExecTask extends AbstractTask { - private final String command; - private List args; - - /** - * Create a task to execute a given command, to be run using {@code EXEC} mode. - * @param command the command to be executed - */ - public ExecTask(String command) { - super(Mode.EXEC); - this.command = command; - } - - /** - * Create a task to execute a given command, to be run using {@code EXEC} mode. - * @param command the command to be executed - */ - public ExecTask(Path command) { - super(Mode.EXEC); - this.command = command.toString(); - } - - /** - * Sets the arguments for the command to be executed - * @param args the arguments - * @return this task object - */ - public ExecTask args(String... args) { - this.args = Arrays.asList(args); - return this; - } - - /** - * {@inheritDoc} - * @return the name "exec" - */ - @Override - public String name() { - return "exec"; - } - - /** - * Calls the command with the arguments as currently configured. - * @return a Result object indicating the outcome of the task - * and the content of any output written to stdout or stderr. - * @throws TaskError if the outcome of the task is not as expected. - */ - @Override - public Result run() { - List cmdArgs = new ArrayList<>(); - cmdArgs.add(command); - if (args != null) - cmdArgs.addAll(args); - ProcessBuilder pb = getProcessBuilder(); - pb.command(cmdArgs); - try { - return runProcess(ToolBox.this, this, pb.start()); - } catch (IOException | InterruptedException e) { - throw new Error(e); - } - } - } - - /** - * An in-memory Java source file. - * It is able to extract the file name from simple source text using - * regular expressions. - */ - public static class JavaSource extends SimpleJavaFileObject { - private final String source; - - /** - * Creates a in-memory file object for Java source code. - * @param className the name of the class - * @param source the source text - */ - public JavaSource(String className, String source) { - super(URI.create(className), JavaFileObject.Kind.SOURCE); - this.source = source; - } - - /** - * Creates a in-memory file object for Java source code. - * The name of the class will be inferred from the source code. - * @param source the source text - */ - public JavaSource(String source) { - super(URI.create(getJavaFileNameFromSource(source)), - JavaFileObject.Kind.SOURCE); - this.source = source; - } - - /** - * Writes the source code to a file in the current directory. - * @throws IOException if there is a problem writing the file - */ - public void write() throws IOException { - write(currDir); - } - - /** - * Writes the source code to a file in a specified directory. - * @param dir the directory - * @throws IOException if there is a problem writing the file - */ - public void write(Path dir) throws IOException { - Path file = dir.resolve(getJavaFileNameFromSource(source)); - Files.createDirectories(file.getParent()); - try (BufferedWriter out = Files.newBufferedWriter(file)) { - out.write(source.replace("\n", lineSeparator)); - } - } - - @Override - public CharSequence getCharContent(boolean ignoreEncodingErrors) { - return source; - } - - private static Pattern modulePattern = - Pattern.compile("module\\s+((?:\\w+\\.)*)"); - private static Pattern packagePattern = - Pattern.compile("package\\s+(((?:\\w+\\.)*)(?:\\w+))"); - private static Pattern classPattern = - Pattern.compile("(?:public\\s+)?(?:class|enum|interface)\\s+(\\w+)"); - - /** - * Extracts the Java file name from the class declaration. - * This method is intended for simple files and uses regular expressions, - * so comments matching the pattern can make the method fail. - */ - static String getJavaFileNameFromSource(String source) { - String packageName = null; - - Matcher matcher = modulePattern.matcher(source); - if (matcher.find()) - return "module-info.java"; - - matcher = packagePattern.matcher(source); - if (matcher.find()) - packageName = matcher.group(1).replace(".", "/"); - - matcher = classPattern.matcher(source); - if (matcher.find()) { - String className = matcher.group(1) + ".java"; - return (packageName == null) ? className : packageName + "/" + className; - } else if (packageName != null) { - return packageName + "/package-info.java"; - } else { - throw new Error("Could not extract the java class " + - "name from the provided source"); - } - } - } - - /** - * Extracts the Java file name from the class declaration. - * This method is intended for simple files and uses regular expressions, - * so comments matching the pattern can make the method fail. - * @deprecated This is a legacy method for compatibility with ToolBox v1. - * Use {@link JavaSource#getName JavaSource.getName} instead. - * @param source the source text - * @return the Java file name inferred from the source - */ - @Deprecated - public static String getJavaFileNameFromSource(String source) { - return JavaSource.getJavaFileNameFromSource(source); - } - - /** - * A memory file manager, for saving generated files in memory. - * The file manager delegates to a separate file manager for listing and - * reading input files. - */ - public static class MemoryFileManager extends ForwardingJavaFileManager { - private interface Content { - byte[] getBytes(); - String getString(); - } - - /** - * Maps binary class names to generated content. - */ - final Map> files; - - /** - * Construct a memory file manager which stores output files in memory, - * and delegates to a default file manager for input files. - */ - public MemoryFileManager() { - this(JavacTool.create().getStandardFileManager(null, null, null)); - } - - /** - * Construct a memory file manager which stores output files in memory, - * and delegates to a specified file manager for input files. - * @param fileManager the file manager to be used for input files - */ - public MemoryFileManager(JavaFileManager fileManager) { - super(fileManager); - files = new HashMap<>(); - } - - @Override - public JavaFileObject getJavaFileForOutput(Location location, - String name, - JavaFileObject.Kind kind, - FileObject sibling) - { - return new MemoryFileObject(location, name, kind); - } - - /** - * Returns the content written to a file in a given location, - * or null if no such file has been written. - * @param location the location - * @param name the name of the file - * @return the content as an array of bytes - */ - public byte[] getFileBytes(Location location, String name) { - Content content = getFile(location, name); - return (content == null) ? null : content.getBytes(); - } - - /** - * Returns the content written to a file in a given location, - * or null if no such file has been written. - * @param location the location - * @param name the name of the file - * @return the content as a string - */ - public String getFileString(Location location, String name) { - Content content = getFile(location, name); - return (content == null) ? null : content.getString(); - } - - private Content getFile(Location location, String name) { - Map filesForLocation = files.get(location); - return (filesForLocation == null) ? null : filesForLocation.get(name); - } - - private void save(Location location, String name, Content content) { - Map filesForLocation = files.get(location); - if (filesForLocation == null) - files.put(location, filesForLocation = new HashMap<>()); - filesForLocation.put(name, content); - } - - /** - * A writable file object stored in memory. - */ - private class MemoryFileObject extends SimpleJavaFileObject { - private final Location location; - private final String name; - - /** - * Constructs a memory file object. - * @param name binary name of the class to be stored in this file object - */ - MemoryFileObject(Location location, String name, JavaFileObject.Kind kind) { - super(URI.create("mfm:///" + name.replace('.','/') + kind.extension), - Kind.CLASS); - this.location = location; - this.name = name; - } - - @Override - public OutputStream openOutputStream() { - return new FilterOutputStream(new ByteArrayOutputStream()) { - @Override - public void close() throws IOException { - out.close(); - byte[] bytes = ((ByteArrayOutputStream) out).toByteArray(); - save(location, name, new Content() { - @Override - public byte[] getBytes() { - return bytes; - } - @Override - public String getString() { - return new String(bytes); - } - - }); - } - }; - } - - @Override - public Writer openWriter() { - return new FilterWriter(new StringWriter()) { - @Override - public void close() throws IOException { - out.close(); - String text = ((StringWriter) out).toString(); - save(location, name, new Content() { - @Override - public byte[] getBytes() { - return text.getBytes(); - } - @Override - public String getString() { - return text; - } - - }); - } - }; - } - } - - } - -} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/AbstractTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/AbstractTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,300 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Map; +import static toolbox.ToolBox.lineSeparator; + +/** + * A utility base class to simplify the implementation of tasks. + * Provides support for running the task in a process and for + * capturing output written by the task to stdout, stderr and + * other writers where applicable. + * @param the implementing subclass + */ +abstract class AbstractTask> implements Task { + protected final ToolBox toolBox; + protected final Mode mode; + private final Map redirects = new EnumMap<>(OutputKind.class); + private final Map envVars = new HashMap<>(); + private Expect expect = Expect.SUCCESS; + int expectedExitCode = 0; + + /** + * Create a task that will execute in the specified mode. + * @param mode the mode + */ + protected AbstractTask(ToolBox tb, Mode mode) { + toolBox = tb; + this.mode = mode; + } + + /** + * Sets the expected outcome of the task and calls {@code run()}. + * @param expect the expected outcome + * @return the result of calling {@code run()} + */ + public Result run(Expect expect) { + expect(expect, Integer.MIN_VALUE); + return run(); + } + + /** + * Sets the expected outcome of the task and calls {@code run()}. + * @param expect the expected outcome + * @param exitCode the expected exit code if the expected outcome + * is {@code FAIL} + * @return the result of calling {@code run()} + */ + public Result run(Expect expect, int exitCode) { + expect(expect, exitCode); + return run(); + } + + /** + * Sets the expected outcome and expected exit code of the task. + * The exit code will not be checked if the outcome is + * {@code Expect.SUCCESS} or if the exit code is set to + * {@code Integer.MIN_VALUE}. + * @param expect the expected outcome + * @param exitCode the expected exit code + */ + protected void expect(Expect expect, int exitCode) { + this.expect = expect; + this.expectedExitCode = exitCode; + } + + /** + * Checks the exit code contained in a {@code Result} against the + * expected outcome and exit value + * @param result the result object + * @return the result object + * @throws TaskError if the exit code stored in the result object + * does not match the expected outcome and exit code. + */ + protected Result checkExit(Result result) throws TaskError { + switch (expect) { + case SUCCESS: + if (result.exitCode != 0) { + result.writeAll(); + throw new TaskError("Task " + name() + " failed: rc=" + result.exitCode); + } + break; + + case FAIL: + if (result.exitCode == 0) { + result.writeAll(); + throw new TaskError("Task " + name() + " succeeded unexpectedly"); + } + + if (expectedExitCode != Integer.MIN_VALUE + && result.exitCode != expectedExitCode) { + result.writeAll(); + throw new TaskError("Task " + name() + "failed with unexpected exit code " + + result.exitCode + ", expected " + expectedExitCode); + } + break; + } + return result; + } + + /** + * Sets an environment variable to be used by this task. + * @param name the name of the environment variable + * @param value the value for the environment variable + * @return this task object + * @throws IllegalStateException if the task mode is not {@code EXEC} + */ + public T envVar(String name, String value) { + if (mode != Mode.EXEC) + throw new IllegalStateException(); + envVars.put(name, value); + return (T) this; + } + + /** + * Redirects output from an output stream to a file. + * @param outputKind the name of the stream to be redirected. + * @param path the file + * @return this task object + * @throws IllegalStateException if the task mode is not {@code EXEC} + */ + public T redirect(OutputKind outputKind, String path) { + if (mode != Mode.EXEC) + throw new IllegalStateException(); + redirects.put(outputKind, path); + return (T) this; + } + + /** + * Returns a {@code ProcessBuilder} initialized with any + * redirects and environment variables that have been set. + * @return a {@code ProcessBuilder} + */ + protected ProcessBuilder getProcessBuilder() { + if (mode != Mode.EXEC) + throw new IllegalStateException(); + ProcessBuilder pb = new ProcessBuilder(); + if (redirects.get(OutputKind.STDOUT) != null) + pb.redirectOutput(new File(redirects.get(OutputKind.STDOUT))); + if (redirects.get(OutputKind.STDERR) != null) + pb.redirectError(new File(redirects.get(OutputKind.STDERR))); + pb.environment().putAll(envVars); + return pb; + } + + /** + * Collects the output from a process and saves it in a {@code Result}. + * @param tb the {@code ToolBox} containing the task {@code t} + * @param t the task initiating the process + * @param p the process + * @return a Result object containing the output from the process and its + * exit value. + * @throws InterruptedException if the thread is interrupted + */ + protected Result runProcess(ToolBox tb, Task t, Process p) throws InterruptedException { + if (mode != Mode.EXEC) + throw new IllegalStateException(); + ProcessOutput sysOut = new ProcessOutput(p.getInputStream()).start(); + ProcessOutput sysErr = new ProcessOutput(p.getErrorStream()).start(); + sysOut.waitUntilDone(); + sysErr.waitUntilDone(); + int rc = p.waitFor(); + Map outputMap = new EnumMap<>(OutputKind.class); + outputMap.put(OutputKind.STDOUT, sysOut.getOutput()); + outputMap.put(OutputKind.STDERR, sysErr.getOutput()); + return checkExit(new Result(toolBox, t, rc, outputMap)); + } + + /** + * Thread-friendly class to read the output from a process until the stream + * is exhausted. + */ + static class ProcessOutput implements Runnable { + ProcessOutput(InputStream from) { + in = new BufferedReader(new InputStreamReader(from)); + out = new StringBuilder(); + } + + ProcessOutput start() { + new Thread(this).start(); + return this; + } + + @Override + public void run() { + try { + String line; + while ((line = in.readLine()) != null) { + out.append(line).append(lineSeparator); + } + } catch (IOException e) { + } + synchronized (this) { + done = true; + notifyAll(); + } + } + + synchronized void waitUntilDone() throws InterruptedException { + boolean interrupted = false; + + // poll interrupted flag, while waiting for copy to complete + while (!(interrupted = Thread.interrupted()) && !done) + wait(1000); + + if (interrupted) + throw new InterruptedException(); + } + + String getOutput() { + return out.toString(); + } + + private final BufferedReader in; + private final StringBuilder out; + private boolean done; + } + + /** + * Utility class to simplify the handling of temporarily setting a + * new stream for System.out or System.err. + */ + static class StreamOutput { + // Functional interface to set a stream. + // Expected use: System::setOut, System::setErr + interface Initializer { + void set(PrintStream s); + } + + private final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + private final PrintStream ps = new PrintStream(baos); + private final PrintStream prev; + private final Initializer init; + + StreamOutput(PrintStream s, Initializer init) { + prev = s; + init.set(ps); + this.init = init; + } + + /** + * Closes the stream and returns the contents that were written to it. + * @return the contents that were written to it. + */ + String close() { + init.set(prev); + ps.close(); + return baos.toString(); + } + } + + /** + * Utility class to simplify the handling of creating an in-memory PrintWriter. + */ + static class WriterOutput { + private final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + + /** + * Closes the stream and returns the contents that were written to it. + * @return the contents that were written to it. + */ + String close() { + pw.close(); + return sw.toString(); + } + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/ExecTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/ExecTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * A task to configure and run a general command. + */ +public class ExecTask extends AbstractTask { + private final String command; + private List args; + + /** + * Create a task to execute a given command, to be run using {@code EXEC} mode. + * @param toolBox the {@code ToolBox} to use + * @param command the command to be executed + */ + public ExecTask(ToolBox toolBox, String command) { + super(toolBox, Task.Mode.EXEC); + this.command = command; + } + + /** + * Create a task to execute a given command, to be run using {@code EXEC} mode. + * @param toolBox the {@code ToolBox} to use + * @param command the command to be executed + */ + public ExecTask(ToolBox toolBox, Path command) { + super(toolBox, Task.Mode.EXEC); + this.command = command.toString(); + } + + /** + * Sets the arguments for the command to be executed + * @param args the arguments + * @return this task object + */ + public ExecTask args(String... args) { + this.args = Arrays.asList(args); + return this; + } + + /** + * {@inheritDoc} + * @return the name "exec" + */ + @Override + public String name() { + return "exec"; + } + + /** + * Calls the command with the arguments as currently configured. + * @return a Result object indicating the outcome of the task + * and the content of any output written to stdout or stderr. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + List cmdArgs = new ArrayList<>(); + cmdArgs.add(command); + if (args != null) + cmdArgs.addAll(args); + ProcessBuilder pb = getProcessBuilder(); + pb.command(cmdArgs); + try { + return runProcess(toolBox, this, pb.start()); + } catch (IOException | InterruptedException e) { + throw new Error(e); + } + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/JarTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/JarTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,423 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOError; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URI; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.Set; +import java.util.jar.Attributes; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.jar.Manifest; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.tools.FileObject; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import static toolbox.ToolBox.currDir; + +/** + * A task to configure and run the jar file utility. + */ +public class JarTask extends AbstractTask { + private Path jar; + private Manifest manifest; + private String classpath; + private String mainClass; + private Path baseDir; + private List paths; + private Set fileObjects; + + /** + * Creates a task to write jar files, using API mode. + * @param toolBox the {@code ToolBox} to use + */ + public JarTask(ToolBox toolBox) { + super(toolBox, Task.Mode.API); + paths = Collections.emptyList(); + fileObjects = new LinkedHashSet<>(); + } + + /** + * Creates a JarTask for use with a given jar file. + * @param toolBox the {@code ToolBox} to use + * @param path the file + */ + public JarTask(ToolBox toolBox, String path) { + this(toolBox); + jar = Paths.get(path); + } + + /** + * Creates a JarTask for use with a given jar file. + * @param toolBox the {@code ToolBox} to use + * @param path the file + */ + public JarTask(ToolBox toolBox, Path path) { + this(toolBox); + jar = path; + } + + /** + * Sets a manifest for the jar file. + * @param manifest the manifest + * @return this task object + */ + public JarTask manifest(Manifest manifest) { + this.manifest = manifest; + return this; + } + + /** + * Sets a manifest for the jar file. + * @param manifest a string containing the contents of the manifest + * @return this task object + * @throws IOException if there is a problem creating the manifest + */ + public JarTask manifest(String manifest) throws IOException { + this.manifest = new Manifest(new ByteArrayInputStream(manifest.getBytes())); + return this; + } + + /** + * Sets the classpath to be written to the {@code Class-Path} + * entry in the manifest. + * @param classpath the classpath + * @return this task object + */ + public JarTask classpath(String classpath) { + this.classpath = classpath; + return this; + } + + /** + * Sets the class to be written to the {@code Main-Class} + * entry in the manifest.. + * @param mainClass the name of the main class + * @return this task object + */ + public JarTask mainClass(String mainClass) { + this.mainClass = mainClass; + return this; + } + + /** + * Sets the base directory for files to be written into the jar file. + * @param baseDir the base directory + * @return this task object + */ + public JarTask baseDir(String baseDir) { + this.baseDir = Paths.get(baseDir); + return this; + } + + /** + * Sets the base directory for files to be written into the jar file. + * @param baseDir the base directory + * @return this task object + */ + public JarTask baseDir(Path baseDir) { + this.baseDir = baseDir; + return this; + } + + /** + * Sets the files to be written into the jar file. + * @param files the files + * @return this task object + */ + public JarTask files(String... files) { + this.paths = Stream.of(files) + .map(file -> Paths.get(file)) + .collect(Collectors.toList()); + return this; + } + + /** + * Adds a set of file objects to be written into the jar file, by copying them + * from a Location in a JavaFileManager. + * The file objects to be written are specified by a series of paths; + * each path can be in one of the following forms: + *
    + *
  • The name of a class. For example, java.lang.Object. + * In this case, the corresponding .class file will be written to the jar file. + *
  • the name of a package followed by {@code .*}. For example, {@code java.lang.*}. + * In this case, all the class files in the specified package will be written to + * the jar file. + *
  • the name of a package followed by {@code .**}. For example, {@code java.lang.**}. + * In this case, all the class files in the specified package, and any subpackages + * will be written to the jar file. + *
+ * + * @param fm the file manager in which to find the file objects + * @param l the location in which to find the file objects + * @param paths the paths specifying the file objects to be copied + * @return this task object + * @throws IOException if errors occur while determining the set of file objects + */ + public JarTask files(JavaFileManager fm, JavaFileManager.Location l, String... paths) + throws IOException { + for (String p : paths) { + if (p.endsWith(".**")) + addPackage(fm, l, p.substring(0, p.length() - 3), true); + else if (p.endsWith(".*")) + addPackage(fm, l, p.substring(0, p.length() - 2), false); + else + addFile(fm, l, p); + } + return this; + } + + private void addPackage(JavaFileManager fm, JavaFileManager.Location l, String pkg, boolean recurse) + throws IOException { + for (JavaFileObject fo : fm.list(l, pkg, EnumSet.allOf(JavaFileObject.Kind.class), recurse)) { + fileObjects.add(fo); + } + } + + private void addFile(JavaFileManager fm, JavaFileManager.Location l, String path) throws IOException { + JavaFileObject fo = fm.getJavaFileForInput(l, path, JavaFileObject.Kind.CLASS); + fileObjects.add(fo); + } + + /** + * Provides limited jar command-like functionality. + * The supported commands are: + *
    + *
  • jar cf jarfile -C dir files... + *
  • jar cfm jarfile manifestfile -C dir files... + *
+ * Any values specified by other configuration methods will be ignored. + * @param args arguments in the style of those for the jar command + * @return a Result object containing the results of running the task + */ + public Task.Result run(String... args) { + if (args.length < 2) + throw new IllegalArgumentException(); + + ListIterator iter = Arrays.asList(args).listIterator(); + String first = iter.next(); + switch (first) { + case "cf": + jar = Paths.get(iter.next()); + break; + case "cfm": + jar = Paths.get(iter.next()); + try (InputStream in = Files.newInputStream(Paths.get(iter.next()))) { + manifest = new Manifest(in); + } catch (IOException e) { + throw new IOError(e); + } + break; + } + + if (iter.hasNext()) { + if (iter.next().equals("-C")) + baseDir = Paths.get(iter.next()); + else + iter.previous(); + } + + paths = new ArrayList<>(); + while (iter.hasNext()) + paths.add(Paths.get(iter.next())); + + return run(); + } + + /** + * {@inheritDoc} + * @return the name "jar" + */ + @Override + public String name() { + return "jar"; + } + + /** + * Creates a jar file with the arguments as currently configured. + * @return a Result object indicating the outcome of the compilation + * and the content of any output written to stdout, stderr, or the + * main stream by the compiler. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + Manifest m = (manifest == null) ? new Manifest() : manifest; + Attributes mainAttrs = m.getMainAttributes(); + if (mainClass != null) + mainAttrs.put(Attributes.Name.MAIN_CLASS, mainClass); + if (classpath != null) + mainAttrs.put(Attributes.Name.CLASS_PATH, classpath); + + AbstractTask.StreamOutput sysOut = new AbstractTask.StreamOutput(System.out, System::setOut); + AbstractTask.StreamOutput sysErr = new AbstractTask.StreamOutput(System.err, System::setErr); + + Map outputMap = new HashMap<>(); + + try (OutputStream os = Files.newOutputStream(jar); + JarOutputStream jos = openJar(os, m)) { + writeFiles(jos); + writeFileObjects(jos); + } catch (IOException e) { + error("Exception while opening " + jar, e); + } finally { + outputMap.put(Task.OutputKind.STDOUT, sysOut.close()); + outputMap.put(Task.OutputKind.STDERR, sysErr.close()); + } + return checkExit(new Task.Result(toolBox, this, (errors == 0) ? 0 : 1, outputMap)); + } + + private JarOutputStream openJar(OutputStream os, Manifest m) throws IOException { + if (m == null || m.getMainAttributes().isEmpty() && m.getEntries().isEmpty()) { + return new JarOutputStream(os); + } else { + if (m.getMainAttributes().get(Attributes.Name.MANIFEST_VERSION) == null) + m.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); + return new JarOutputStream(os, m); + } + } + + private void writeFiles(JarOutputStream jos) throws IOException { + Path base = (baseDir == null) ? currDir : baseDir; + for (Path path : paths) { + Files.walkFileTree(base.resolve(path), new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + try { + String p = base.relativize(file) + .normalize() + .toString() + .replace(File.separatorChar, '/'); + JarEntry e = new JarEntry(p); + jos.putNextEntry(e); + try { + jos.write(Files.readAllBytes(file)); + } finally { + jos.closeEntry(); + } + return FileVisitResult.CONTINUE; + } catch (IOException e) { + error("Exception while adding " + file + " to jar file", e); + return FileVisitResult.TERMINATE; + } + } + }); + } + } + + private void writeFileObjects(JarOutputStream jos) throws IOException { + for (FileObject fo : fileObjects) { + String p = guessPath(fo); + JarEntry e = new JarEntry(p); + jos.putNextEntry(e); + try { + byte[] buf = new byte[1024]; + try (BufferedInputStream in = new BufferedInputStream(fo.openInputStream())) { + int n; + while ((n = in.read(buf)) > 0) + jos.write(buf, 0, n); + } catch (IOException ex) { + error("Exception while adding " + fo.getName() + " to jar file", ex); + } + } finally { + jos.closeEntry(); + } + } + } + + /* + * A jar: URL is of the form jar:URL!/ where URL is a URL for the .jar file itself. + * In Symbol files (i.e. ct.sym) the underlying entry is prefixed META-INF/sym/. + */ + private final Pattern jarEntry = Pattern.compile(".*!/(?:META-INF/sym/[^/]+/)?(.*)"); + + /* + * A jrt: URL is of the form jrt:/modules/// + */ + private final Pattern jrtEntry = Pattern.compile("/modules/([^/]+)/(.*)"); + + /* + * A file: URL is of the form file:/path/to/{modules,patches}/// + */ + private final Pattern fileEntry = Pattern.compile(".*/(?:modules|patches)/([^/]+)/(.*)"); + + private String guessPath(FileObject fo) { + URI u = fo.toUri(); + switch (u.getScheme()) { + case "jar": { + Matcher m = jarEntry.matcher(u.getSchemeSpecificPart()); + if (m.matches()) { + return m.group(1); + } + break; + } + case "jrt": { + Matcher m = jrtEntry.matcher(u.getSchemeSpecificPart()); + if (m.matches()) { + return m.group(2); + } + break; + } + case "file": { + Matcher m = fileEntry.matcher(u.getSchemeSpecificPart()); + if (m.matches()) { + return m.group(2); + } + break; + } + } + throw new IllegalArgumentException(fo.getName() + "--" + fo.toUri()); + } + + private void error(String message, Throwable t) { + toolBox.out.println("Error: " + message + ": " + t); + errors++; + } + + private int errors; +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/JavaTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/JavaTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * A task to configure and run the Java launcher. + */ +public class JavaTask extends AbstractTask { + boolean includeStandardOptions = true; + private String classpath; + private List vmOptions; + private String className; + private List classArgs; + + /** + * Create a task to run the Java launcher, using {@code EXEC} mode. + * @param toolBox the {@code ToolBox} to use + */ + public JavaTask(ToolBox toolBox) { + super(toolBox, Task.Mode.EXEC); + } + + /** + * Sets the classpath. + * @param classpath the classpath + * @return this task object + */ + public JavaTask classpath(String classpath) { + this.classpath = classpath; + return this; + } + + /** + * Sets the VM options. + * @param vmOptions the options + * @return this task object + */ + public JavaTask vmOptions(String... vmOptions) { + this.vmOptions = Arrays.asList(vmOptions); + return this; + } + + /** + * Sets the name of the class to be executed. + * @param className the name of the class + * @return this task object + */ + public JavaTask className(String className) { + this.className = className; + return this; + } + + /** + * Sets the arguments for the class to be executed. + * @param classArgs the arguments + * @return this task object + */ + public JavaTask classArgs(String... classArgs) { + this.classArgs = Arrays.asList(classArgs); + return this; + } + + /** + * Sets whether or not the standard VM and java options for the test should be passed + * to the new VM instance. If this method is not called, the default behavior is that + * the options will be passed to the new VM instance. + * + * @param includeStandardOptions whether or not the standard VM and java options for + * the test should be passed to the new VM instance. + * @return this task object + */ + public JavaTask includeStandardOptions(boolean includeStandardOptions) { + this.includeStandardOptions = includeStandardOptions; + return this; + } + + /** + * {@inheritDoc} + * @return the name "java" + */ + @Override + public String name() { + return "java"; + } + + /** + * Calls the Java launcher with the arguments as currently configured. + * @return a Result object indicating the outcome of the task + * and the content of any output written to stdout or stderr. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + List args = new ArrayList<>(); + args.add(toolBox.getJDKTool("java").toString()); + if (includeStandardOptions) { + args.addAll(toolBox.split(System.getProperty("test.vm.opts"), " +")); + args.addAll(toolBox.split(System.getProperty("test.java.opts"), " +")); + } + if (classpath != null) { + args.add("-classpath"); + args.add(classpath); + } + if (vmOptions != null) + args.addAll(vmOptions); + if (className != null) + args.add(className); + if (classArgs != null) + args.addAll(classArgs); + ProcessBuilder pb = getProcessBuilder(); + pb.command(args); + try { + return runProcess(toolBox, this, pb.start()); + } catch (IOException | InterruptedException e) { + throw new Error(e); + } + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/JavacTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/JavacTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,376 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.tools.JavaCompiler; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.StandardLocation; + +import com.sun.tools.javac.api.JavacTaskImpl; +import com.sun.tools.javac.api.JavacTool; + +/** + * A task to configure and run the Java compiler, javac. + */ +public class JavacTask extends AbstractTask { + private boolean includeStandardOptions; + private List classpath; + private List sourcepath; + private Path outdir; + private List options; + private List classes; + private List files; + private List fileObjects; + private JavaFileManager fileManager; + + private JavaCompiler compiler; + private StandardJavaFileManager internalFileManager; + + /** + * Creates a task to execute {@code javac} using API mode. + * @param toolBox the {@code ToolBox} to use + */ + public JavacTask(ToolBox toolBox) { + super(toolBox, Task.Mode.API); + } + + /** + * Creates a task to execute {@code javac} in a specified mode. + * @param toolBox the {@code ToolBox} to use + * @param mode the mode to be used + */ + public JavacTask(ToolBox toolBox, Task.Mode mode) { + super(toolBox, mode); + } + + /** + * Sets the classpath. + * @param classpath the classpath + * @return this task object + */ + public JavacTask classpath(String classpath) { + this.classpath = Stream.of(classpath.split(File.pathSeparator)) + .filter(s -> !s.isEmpty()) + .map(s -> Paths.get(s)) + .collect(Collectors.toList()); + return this; + } + + /** + * Sets the classpath. + * @param classpath the classpath + * @return this task object + */ + public JavacTask classpath(Path... classpath) { + this.classpath = Arrays.asList(classpath); + return this; + } + + /** + * Sets the sourcepath. + * @param sourcepath the sourcepath + * @return this task object + */ + public JavacTask sourcepath(String sourcepath) { + this.sourcepath = Stream.of(sourcepath.split(File.pathSeparator)) + .filter(s -> !s.isEmpty()) + .map(s -> Paths.get(s)) + .collect(Collectors.toList()); + return this; + } + + /** + * Sets the sourcepath. + * @param sourcepath the sourcepath + * @return this task object + */ + public JavacTask sourcepath(Path... sourcepath) { + this.sourcepath = Arrays.asList(sourcepath); + return this; + } + + /** + * Sets the output directory. + * @param outdir the output directory + * @return this task object + */ + public JavacTask outdir(String outdir) { + this.outdir = Paths.get(outdir); + return this; + } + + /** + * Sets the output directory. + * @param outdir the output directory + * @return this task object + */ + public JavacTask outdir(Path outdir) { + this.outdir = outdir; + return this; + } + + /** + * Sets the options. + * @param options the options + * @return this task object + */ + public JavacTask options(String... options) { + this.options = Arrays.asList(options); + return this; + } + + /** + * Sets the classes to be analyzed. + * @param classes the classes + * @return this task object + */ + public JavacTask classes(String... classes) { + this.classes = Arrays.asList(classes); + return this; + } + + /** + * Sets the files to be compiled or analyzed. + * @param files the files + * @return this task object + */ + public JavacTask files(String... files) { + this.files = Arrays.asList(files); + return this; + } + + /** + * Sets the files to be compiled or analyzed. + * @param files the files + * @return this task object + */ + public JavacTask files(Path... files) { + this.files = Stream.of(files) + .map(Path::toString) + .collect(Collectors.toList()); + return this; + } + + /** + * Sets the sources to be compiled or analyzed. + * Each source string is converted into an in-memory object that + * can be passed directly to the compiler. + * @param sources the sources + * @return this task object + */ + public JavacTask sources(String... sources) { + fileObjects = Stream.of(sources) + .map(s -> new ToolBox.JavaSource(s)) + .collect(Collectors.toList()); + return this; + } + + /** + * Sets the file manager to be used by this task. + * @param fileManager the file manager + * @return this task object + */ + public JavacTask fileManager(JavaFileManager fileManager) { + this.fileManager = fileManager; + return this; + } + + /** + * {@inheritDoc} + * @return the name "javac" + */ + @Override + public String name() { + return "javac"; + } + + /** + * Calls the compiler with the arguments as currently configured. + * @return a Result object indicating the outcome of the compilation + * and the content of any output written to stdout, stderr, or the + * main stream by the compiler. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + if (mode == Task.Mode.EXEC) + return runExec(); + + AbstractTask.WriterOutput direct = new AbstractTask.WriterOutput(); + // The following are to catch output to System.out and System.err, + // in case these are used instead of the primary (main) stream + AbstractTask.StreamOutput sysOut = new AbstractTask.StreamOutput(System.out, System::setOut); + AbstractTask.StreamOutput sysErr = new AbstractTask.StreamOutput(System.err, System::setErr); + int rc; + Map outputMap = new HashMap<>(); + try { + switch (mode == null ? Task.Mode.API : mode) { + case API: + rc = runAPI(direct.pw); + break; + case CMDLINE: + rc = runCommand(direct.pw); + break; + default: + throw new IllegalStateException(); + } + } catch (IOException e) { + toolBox.out.println("Exception occurred: " + e); + rc = 99; + } finally { + outputMap.put(Task.OutputKind.STDOUT, sysOut.close()); + outputMap.put(Task.OutputKind.STDERR, sysErr.close()); + outputMap.put(Task.OutputKind.DIRECT, direct.close()); + } + return checkExit(new Task.Result(toolBox, this, rc, outputMap)); + } + + private int runAPI(PrintWriter pw) throws IOException { + try { +// if (compiler == null) { + // TODO: allow this to be set externally +// compiler = ToolProvider.getSystemJavaCompiler(); + compiler = JavacTool.create(); +// } + + if (fileManager == null) + fileManager = internalFileManager = compiler.getStandardFileManager(null, null, null); + if (outdir != null) + setLocationFromPaths(StandardLocation.CLASS_OUTPUT, Collections.singletonList(outdir)); + if (classpath != null) + setLocationFromPaths(StandardLocation.CLASS_PATH, classpath); + if (sourcepath != null) + setLocationFromPaths(StandardLocation.SOURCE_PATH, sourcepath); + List allOpts = new ArrayList<>(); + if (options != null) + allOpts.addAll(options); + + Iterable allFiles = joinFiles(files, fileObjects); + JavaCompiler.CompilationTask task = compiler.getTask(pw, + fileManager, + null, // diagnostic listener; should optionally collect diags + allOpts, + classes, + allFiles); + return ((JavacTaskImpl) task).doCall().exitCode; + } finally { + if (internalFileManager != null) + internalFileManager.close(); + } + } + + private void setLocationFromPaths(StandardLocation location, List files) throws IOException { + if (!(fileManager instanceof StandardJavaFileManager)) + throw new IllegalStateException("not a StandardJavaFileManager"); + ((StandardJavaFileManager) fileManager).setLocationFromPaths(location, files); + } + + private int runCommand(PrintWriter pw) { + List args = getAllArgs(); + String[] argsArray = args.toArray(new String[args.size()]); + return com.sun.tools.javac.Main.compile(argsArray, pw); + } + + private Task.Result runExec() { + List args = new ArrayList<>(); + Path javac = toolBox.getJDKTool("javac"); + args.add(javac.toString()); + if (includeStandardOptions) { + args.addAll(toolBox.split(System.getProperty("test.tool.vm.opts"), " +")); + args.addAll(toolBox.split(System.getProperty("test.compiler.opts"), " +")); + } + args.addAll(getAllArgs()); + + String[] argsArray = args.toArray(new String[args.size()]); + ProcessBuilder pb = getProcessBuilder(); + pb.command(argsArray); + try { + return runProcess(toolBox, this, pb.start()); + } catch (IOException | InterruptedException e) { + throw new Error(e); + } + } + + private List getAllArgs() { + List args = new ArrayList<>(); + if (options != null) + args.addAll(options); + if (outdir != null) { + args.add("-d"); + args.add(outdir.toString()); + } + if (classpath != null) { + args.add("-classpath"); + args.add(toSearchPath(classpath)); + } + if (sourcepath != null) { + args.add("-sourcepath"); + args.add(toSearchPath(sourcepath)); + } + if (classes != null) + args.addAll(classes); + if (files != null) + args.addAll(files); + + return args; + } + + private String toSearchPath(List files) { + return files.stream() + .map(Path::toString) + .collect(Collectors.joining(File.pathSeparator)); + } + + private Iterable joinFiles( + List files, List fileObjects) { + if (files == null) + return fileObjects; + if (internalFileManager == null) + internalFileManager = compiler.getStandardFileManager(null, null, null); + Iterable filesAsFileObjects = + internalFileManager.getJavaFileObjectsFromStrings(files); + if (fileObjects == null) + return filesAsFileObjects; + List combinedList = new ArrayList<>(); + for (JavaFileObject o : filesAsFileObjects) + combinedList.add(o); + combinedList.addAll(fileObjects); + return combinedList; + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/JavahTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/JavahTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * A task to configure and run the native header tool, javah. + */ +public class JavahTask extends AbstractTask { + private String classpath; + private List options; + private List classes; + + /** + * Create a task to execute {@code javah} using {@code CMDLINE} mode. + * @param toolBox the {@code ToolBox} to use + */ + public JavahTask(ToolBox toolBox) { + super(toolBox, Task.Mode.CMDLINE); + } + + /** + * Sets the classpath. + * @param classpath the classpath + * @return this task object + */ + public JavahTask classpath(String classpath) { + this.classpath = classpath; + return this; + } + + /** + * Sets the options. + * @param options the options + * @return this task object + */ + public JavahTask options(String... options) { + this.options = Arrays.asList(options); + return this; + } + + /** + * Sets the classes to be analyzed. + * @param classes the classes + * @return this task object + */ + public JavahTask classes(String... classes) { + this.classes = Arrays.asList(classes); + return this; + } + + /** + * {@inheritDoc} + * @return the name "javah" + */ + @Override + public String name() { + return "javah"; + } + + /** + * Calls the javah tool with the arguments as currently configured. + * @return a Result object indicating the outcome of the task + * and the content of any output written to stdout, stderr, or the + * main stream provided to the task. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + List args = new ArrayList<>(); + if (options != null) + args.addAll(options); + if (classpath != null) { + args.add("-classpath"); + args.add(classpath); + } + if (classes != null) + args.addAll(classes); + + AbstractTask.WriterOutput direct = new AbstractTask.WriterOutput(); + // These are to catch output to System.out and System.err, + // in case these are used instead of the primary streams + AbstractTask.StreamOutput sysOut = new AbstractTask.StreamOutput(System.out, System::setOut); + AbstractTask.StreamOutput sysErr = new AbstractTask.StreamOutput(System.err, System::setErr); + int rc; + Map outputMap = new HashMap<>(); + try { + rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), direct.pw); + } finally { + outputMap.put(Task.OutputKind.STDOUT, sysOut.close()); + outputMap.put(Task.OutputKind.STDERR, sysErr.close()); + outputMap.put(Task.OutputKind.DIRECT, direct.close()); + } + return checkExit(new Task.Result(toolBox, this, rc, outputMap)); + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/JavapTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/JavapTask.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * A task to configure and run the disassembler tool, javap. + */ +public class JavapTask extends AbstractTask { + private String classpath; + private List options; + private List classes; + + /** + * Create a task to execute {@code javap} using {@code CMDLINE} mode. + * @param toolBox the {@code ToolBox} to use + */ + public JavapTask(ToolBox toolBox) { + super(toolBox, Task.Mode.CMDLINE); + } + + /** + * Sets the classpath. + * @param classpath the classpath + * @return this task object + */ + public JavapTask classpath(String classpath) { + this.classpath = classpath; + return this; + } + + /** + * Sets the options. + * @param options the options + * @return this task object + */ + public JavapTask options(String... options) { + this.options = Arrays.asList(options); + return this; + } + + /** + * Sets the classes to be analyzed. + * @param classes the classes + * @return this task object + */ + public JavapTask classes(String... classes) { + this.classes = Arrays.asList(classes); + return this; + } + + /** + * {@inheritDoc} + * @return the name "javap" + */ + @Override + public String name() { + return "javap"; + } + + /** + * Calls the javap tool with the arguments as currently configured. + * @return a Result object indicating the outcome of the task + * and the content of any output written to stdout, stderr, or the + * main stream. + * @throws TaskError if the outcome of the task is not as expected. + */ + @Override + public Task.Result run() { + List args = new ArrayList<>(); + if (options != null) + args.addAll(options); + if (classpath != null) { + args.add("-classpath"); + args.add(classpath); + } + if (classes != null) + args.addAll(classes); + + AbstractTask.WriterOutput direct = new AbstractTask.WriterOutput(); + // These are to catch output to System.out and System.err, + // in case these are used instead of the primary streams + AbstractTask.StreamOutput sysOut = new AbstractTask.StreamOutput(System.out, System::setOut); + AbstractTask.StreamOutput sysErr = new AbstractTask.StreamOutput(System.err, System::setErr); + + int rc; + Map outputMap = new HashMap<>(); + try { + rc = com.sun.tools.javap.Main.run(args.toArray(new String[args.size()]), direct.pw); + } finally { + outputMap.put(Task.OutputKind.STDOUT, sysOut.close()); + outputMap.put(Task.OutputKind.STDERR, sysErr.close()); + outputMap.put(Task.OutputKind.DIRECT, direct.close()); + } + return checkExit(new Task.Result(toolBox, this, rc, outputMap)); + } +} diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/Task.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/Task.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import static toolbox.ToolBox.lineSeparator; + +/** + * The supertype for tasks. + * Complex operations are modeled by building and running a "Task" object. + * Tasks are typically configured in a fluent series of calls. + */ +public interface Task { + /** + * Returns the name of the task. + * @return the name of the task + */ + String name(); + + /** + * Executes the task as currently configured. + * @return a Result object containing the results of running the task + * @throws TaskError if the outcome of the task was not as expected + */ + Result run() throws TaskError; + + /** + * Exception thrown by {@code Task.run} when the outcome is not as + * expected. + */ + public static class TaskError extends Error { + /** + * Creates a TaskError object with the given message. + * @param message the message + */ + public TaskError(String message) { + super(message); + } + } + + /** + * An enum to indicate the mode a task should use it is when executed. + */ + public enum Mode { + /** + * The task should use the interface used by the command + * line launcher for the task. + * For example, for javac: com.sun.tools.javac.Main.compile + */ + CMDLINE, + /** + * The task should use a publicly defined API for the task. + * For example, for javac: javax.tools.JavaCompiler + */ + API, + /** + * The task should use the standard launcher for the task. + * For example, $JAVA_HOME/bin/javac + */ + EXEC + } + + /** + * An enum to indicate the expected success or failure of executing a task. + */ + public enum Expect { + /** It is expected that the task will complete successfully. */ + SUCCESS, + /** It is expected that the task will not complete successfully. */ + FAIL + } + + /** + * An enum to identify the streams that may be written by a {@code Task}. + */ + public enum OutputKind { + /** Identifies output written to {@code System.out} or {@code stdout}. */ + STDOUT, + /** Identifies output written to {@code System.err} or {@code stderr}. */ + STDERR, + /** Identifies output written to a stream provided directly to the task. */ + DIRECT + }; + + /** + * The results from running a {@link Task}. + * The results contain the exit code returned when the tool was invoked, + * and a map containing the output written to any streams during the + * execution of the tool. + * All tools support "stdout" and "stderr". + * Tools that take an explicit PrintWriter save output written to that + * stream as "main". + */ + public static class Result { + final ToolBox toolBox; + final Task task; + final int exitCode; + final Map outputMap; + + Result(ToolBox toolBox, Task task, int exitCode, Map outputMap) { + this.toolBox = toolBox; + this.task = task; + this.exitCode = exitCode; + this.outputMap = outputMap; + } + + /** + * Returns the content of a specified stream. + * @param outputKind the kind of the selected stream + * @return the content that was written to that stream when the tool + * was executed. + */ + public String getOutput(OutputKind outputKind) { + return outputMap.get(outputKind); + } + + /** + * Returns the content of named streams as a list of lines. + * @param outputKinds the kinds of the selected streams + * @return the content that was written to the given streams when the tool + * was executed. + */ + public List getOutputLines(OutputKind... outputKinds) { + List result = new ArrayList<>(); + for (OutputKind outputKind : outputKinds) { + result.addAll(Arrays.asList(outputMap.get(outputKind).split(lineSeparator))); + } + return result; + } + + /** + * Writes the content of the specified stream to the log. + * @param kind the kind of the selected stream + * @return this Result object + */ + public Result write(OutputKind kind) { + PrintStream out = toolBox.out; + String text = getOutput(kind); + if (text == null || text.isEmpty()) + out.println("[" + task.name() + ":" + kind + "]: empty"); + else { + out.println("[" + task.name() + ":" + kind + "]:"); + out.print(text); + } + return this; + } + + /** + * Writes the content of all streams with any content to the log. + * @return this Result object + */ + public Result writeAll() { + PrintStream out = toolBox.out; + outputMap.forEach((name, text) -> { + if (!text.isEmpty()) { + out.println("[" + name + "]:"); + out.print(text); + } + }); + return this; + } + } +} + diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/lib/toolbox/ToolBox.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/lib/toolbox/ToolBox.java Thu Mar 31 15:20:50 2016 -0700 @@ -0,0 +1,694 @@ +/* + * Copyright (c) 2013, 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package toolbox; + +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.FilterOutputStream; +import java.io.FilterWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.StringWriter; +import java.io.Writer; +import java.net.URI; +import java.nio.charset.Charset; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.StandardCopyOption; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import javax.tools.FileObject; +import javax.tools.ForwardingJavaFileManager; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import javax.tools.JavaFileObject.Kind; +import javax.tools.JavaFileManager.Location; +import javax.tools.SimpleJavaFileObject; +import javax.tools.ToolProvider; + +/** + * Utility methods and classes for writing jtreg tests for + * javac, javah, javap, and sjavac. (For javadoc support, + * see JavadocTester.) + * + *

There is support for common file operations similar to + * shell commands like cat, cp, diff, mv, rm, grep. + * + *

There is also support for invoking various tools, like + * javac, javah, javap, jar, java and other JDK tools. + * + *

File separators: for convenience, many operations accept strings + * to represent filenames. On all platforms on which JDK is supported, + * "/" is a legal filename component separator. In particular, even + * on Windows, where the official file separator is "\", "/" is a legal + * alternative. It is therefore recommended that any client code using + * strings to specify filenames should use "/". + * + * @author Vicente Romero (original) + * @author Jonathan Gibbons (revised) + */ +public class ToolBox { + /** The platform line separator. */ + public static final String lineSeparator = System.getProperty("line.separator"); + /** The platform OS name. */ + public static final String osName = System.getProperty("os.name"); + + /** The location of the class files for this test, or null if not set. */ + public static final String testClasses = System.getProperty("test.classes"); + /** The location of the source files for this test, or null if not set. */ + public static final String testSrc = System.getProperty("test.src"); + /** The location of the test JDK for this test, or null if not set. */ + public static final String testJDK = System.getProperty("test.jdk"); + + /** The current directory. */ + public static final Path currDir = Paths.get("."); + + /** The stream used for logging output. */ + public PrintStream out = System.err; + + /** + * Checks if the host OS is some version of Windows. + * @return true if the host OS is some version of Windows + */ + public boolean isWindows() { + return osName.toLowerCase(Locale.ENGLISH).startsWith("windows"); + } + + /** + * Splits a string around matches of the given regular expression. + * If the string is empty, an empty list will be returned. + * @param text the string to be split + * @param sep the delimiting regular expression + * @return the strings between the separators + */ + public List split(String text, String sep) { + if (text.isEmpty()) + return Collections.emptyList(); + return Arrays.asList(text.split(sep)); + } + + /** + * Checks if two lists of strings are equal. + * @param l1 the first list of strings to be compared + * @param l2 the second list of strings to be compared + * @throws Error if the lists are not equal + */ + public void checkEqual(List l1, List l2) throws Error { + if (!Objects.equals(l1, l2)) { + // l1 and l2 cannot both be null + if (l1 == null) + throw new Error("comparison failed: l1 is null"); + if (l2 == null) + throw new Error("comparison failed: l2 is null"); + // report first difference + for (int i = 0; i < Math.min(l1.size(), l2.size()); i++) { + String s1 = l1.get(i); + String s2 = l1.get(i); + if (!Objects.equals(s1, s2)) { + throw new Error("comparison failed, index " + i + + ", (" + s1 + ":" + s2 + ")"); + } + } + throw new Error("comparison failed: l1.size=" + l1.size() + ", l2.size=" + l2.size()); + } + } + + /** + * Filters a list of strings according to the given regular expression. + * @param regex the regular expression + * @param lines the strings to be filtered + * @return the strings matching the regular expression + */ + public List grep(String regex, List lines) { + return grep(Pattern.compile(regex), lines); + } + + /** + * Filters a list of strings according to the given regular expression. + * @param pattern the regular expression + * @param lines the strings to be filtered + * @return the strings matching the regular expression + */ + public List grep(Pattern pattern, List lines) { + return lines.stream() + .filter(s -> pattern.matcher(s).find()) + .collect(Collectors.toList()); + } + + /** + * Copies a file. + * If the given destination exists and is a directory, the copy is created + * in that directory. Otherwise, the copy will be placed at the destination, + * possibly overwriting any existing file. + *

Similar to the shell "cp" command: {@code cp from to}. + * @param from the file to be copied + * @param to where to copy the file + * @throws IOException if any error occurred while copying the file + */ + public void copyFile(String from, String to) throws IOException { + copyFile(Paths.get(from), Paths.get(to)); + } + + /** + * Copies a file. + * If the given destination exists and is a directory, the copy is created + * in that directory. Otherwise, the copy will be placed at the destination, + * possibly overwriting any existing file. + *

Similar to the shell "cp" command: {@code cp from to}. + * @param from the file to be copied + * @param to where to copy the file + * @throws IOException if an error occurred while copying the file + */ + public void copyFile(Path from, Path to) throws IOException { + if (Files.isDirectory(to)) { + to = to.resolve(from.getFileName()); + } else { + Files.createDirectories(to.getParent()); + } + Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING); + } + + /** + * Creates one of more directories. + * For each of the series of paths, a directory will be created, + * including any necessary parent directories. + *

Similar to the shell command: {@code mkdir -p paths}. + * @param paths the directories to be created + * @throws IOException if an error occurred while creating the directories + */ + public void createDirectories(String... paths) throws IOException { + if (paths.length == 0) + throw new IllegalArgumentException("no directories specified"); + for (String p : paths) + Files.createDirectories(Paths.get(p)); + } + + /** + * Creates one or more directories. + * For each of the series of paths, a directory will be created, + * including any necessary parent directories. + *

Similar to the shell command: {@code mkdir -p paths}. + * @param paths the directories to be created + * @throws IOException if an error occurred while creating the directories + */ + public void createDirectories(Path... paths) throws IOException { + if (paths.length == 0) + throw new IllegalArgumentException("no directories specified"); + for (Path p : paths) + Files.createDirectories(p); + } + + /** + * Deletes one or more files. + * Any directories to be deleted must be empty. + *

Similar to the shell command: {@code rm files}. + * @param files the files to be deleted + * @throws IOException if an error occurred while deleting the files + */ + public void deleteFiles(String... files) throws IOException { + if (files.length == 0) + throw new IllegalArgumentException("no files specified"); + for (String file : files) + Files.delete(Paths.get(file)); + } + + /** + * Deletes all content of a directory (but not the directory itself). + * @param root the directory to be cleaned + * @throws IOException if an error occurs while cleaning the directory + */ + public void cleanDirectory(Path root) throws IOException { + if (!Files.isDirectory(root)) { + throw new IOException(root + " is not a directory"); + } + Files.walkFileTree(root, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes a) throws IOException { + Files.delete(file); + return FileVisitResult.CONTINUE; + } + + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException e) throws IOException { + if (e != null) { + throw e; + } + if (!dir.equals(root)) { + Files.delete(dir); + } + return FileVisitResult.CONTINUE; + } + }); + } + + /** + * Moves a file. + * If the given destination exists and is a directory, the file will be moved + * to that directory. Otherwise, the file will be moved to the destination, + * possibly overwriting any existing file. + *

Similar to the shell "mv" command: {@code mv from to}. + * @param from the file to be moved + * @param to where to move the file + * @throws IOException if an error occurred while moving the file + */ + public void moveFile(String from, String to) throws IOException { + moveFile(Paths.get(from), Paths.get(to)); + } + + /** + * Moves a file. + * If the given destination exists and is a directory, the file will be moved + * to that directory. Otherwise, the file will be moved to the destination, + * possibly overwriting any existing file. + *

Similar to the shell "mv" command: {@code mv from to}. + * @param from the file to be moved + * @param to where to move the file + * @throws IOException if an error occurred while moving the file + */ + public void moveFile(Path from, Path to) throws IOException { + if (Files.isDirectory(to)) { + to = to.resolve(from.getFileName()); + } else { + Files.createDirectories(to.getParent()); + } + Files.move(from, to, StandardCopyOption.REPLACE_EXISTING); + } + + /** + * Reads the lines of a file. + * The file is read using the default character encoding. + * @param path the file to be read + * @return the lines of the file. + * @throws IOException if an error occurred while reading the file + */ + public List readAllLines(String path) throws IOException { + return readAllLines(path, null); + } + + /** + * Reads the lines of a file. + * The file is read using the default character encoding. + * @param path the file to be read + * @return the lines of the file. + * @throws IOException if an error occurred while reading the file + */ + public List readAllLines(Path path) throws IOException { + return readAllLines(path, null); + } + + /** + * Reads the lines of a file using the given encoding. + * @param path the file to be read + * @param encoding the encoding to be used to read the file + * @return the lines of the file. + * @throws IOException if an error occurred while reading the file + */ + public List readAllLines(String path, String encoding) throws IOException { + return readAllLines(Paths.get(path), encoding); + } + + /** + * Reads the lines of a file using the given encoding. + * @param path the file to be read + * @param encoding the encoding to be used to read the file + * @return the lines of the file. + * @throws IOException if an error occurred while reading the file + */ + public List readAllLines(Path path, String encoding) throws IOException { + return Files.readAllLines(path, getCharset(encoding)); + } + + private Charset getCharset(String encoding) { + return (encoding == null) ? Charset.defaultCharset() : Charset.forName(encoding); + } + + /** + * Writes a file containing the given content. + * Any necessary directories for the file will be created. + * @param path where to write the file + * @param content the content for the file + * @throws IOException if an error occurred while writing the file + */ + public void writeFile(String path, String content) throws IOException { + writeFile(Paths.get(path), content); + } + + /** + * Writes a file containing the given content. + * Any necessary directories for the file will be created. + * @param path where to write the file + * @param content the content for the file + * @throws IOException if an error occurred while writing the file + */ + public void writeFile(Path path, String content) throws IOException { + Path dir = path.getParent(); + if (dir != null) + Files.createDirectories(dir); + try (BufferedWriter w = Files.newBufferedWriter(path)) { + w.write(content); + } + } + + /** + * Writes one or more files containing Java source code. + * For each file to be written, the filename will be inferred from the + * given base directory, the package declaration (if present) and from the + * the name of the first class, interface or enum declared in the file. + *

For example, if the base directory is /my/dir/ and the content + * contains "package p; class C { }", the file will be written to + * /my/dir/p/C.java. + *

Note: the content is analyzed using regular expressions; + * errors can occur if any contents have initial comments that might trip + * up the analysis. + * @param dir the base directory + * @param contents the contents of the files to be written + * @throws IOException if an error occurred while writing any of the files. + */ + public void writeJavaFiles(Path dir, String... contents) throws IOException { + if (contents.length == 0) + throw new IllegalArgumentException("no content specified for any files"); + for (String c : contents) { + new JavaSource(c).write(dir); + } + } + + /** + * Returns the path for the binary of a JDK tool within {@link testJDK}. + * @param tool the name of the tool + * @return the path of the tool + */ + public Path getJDKTool(String tool) { + return Paths.get(testJDK, "bin", tool); + } + + /** + * Returns a string representing the contents of an {@code Iterable} as a list. + * @param the type parameter of the {@code Iterable} + * @param items the iterable + * @return the string + */ + String toString(Iterable items) { + return StreamSupport.stream(items.spliterator(), false) + .map(Objects::toString) + .collect(Collectors.joining(",", "[", "]")); + } + + + /** + * An in-memory Java source file. + * It is able to extract the file name from simple source text using + * regular expressions. + */ + public static class JavaSource extends SimpleJavaFileObject { + private final String source; + + /** + * Creates a in-memory file object for Java source code. + * @param className the name of the class + * @param source the source text + */ + public JavaSource(String className, String source) { + super(URI.create(className), JavaFileObject.Kind.SOURCE); + this.source = source; + } + + /** + * Creates a in-memory file object for Java source code. + * The name of the class will be inferred from the source code. + * @param source the source text + */ + public JavaSource(String source) { + super(URI.create(getJavaFileNameFromSource(source)), + JavaFileObject.Kind.SOURCE); + this.source = source; + } + + /** + * Writes the source code to a file in the current directory. + * @throws IOException if there is a problem writing the file + */ + public void write() throws IOException { + write(currDir); + } + + /** + * Writes the source code to a file in a specified directory. + * @param dir the directory + * @throws IOException if there is a problem writing the file + */ + public void write(Path dir) throws IOException { + Path file = dir.resolve(getJavaFileNameFromSource(source)); + Files.createDirectories(file.getParent()); + try (BufferedWriter out = Files.newBufferedWriter(file)) { + out.write(source.replace("\n", lineSeparator)); + } + } + + @Override + public CharSequence getCharContent(boolean ignoreEncodingErrors) { + return source; + } + + private static Pattern modulePattern = + Pattern.compile("module\\s+((?:\\w+\\.)*)"); + private static Pattern packagePattern = + Pattern.compile("package\\s+(((?:\\w+\\.)*)(?:\\w+))"); + private static Pattern classPattern = + Pattern.compile("(?:public\\s+)?(?:class|enum|interface)\\s+(\\w+)"); + + /** + * Extracts the Java file name from the class declaration. + * This method is intended for simple files and uses regular expressions, + * so comments matching the pattern can make the method fail. + */ + static String getJavaFileNameFromSource(String source) { + String packageName = null; + + Matcher matcher = modulePattern.matcher(source); + if (matcher.find()) + return "module-info.java"; + + matcher = packagePattern.matcher(source); + if (matcher.find()) + packageName = matcher.group(1).replace(".", "/"); + + matcher = classPattern.matcher(source); + if (matcher.find()) { + String className = matcher.group(1) + ".java"; + return (packageName == null) ? className : packageName + "/" + className; + } else if (packageName != null) { + return packageName + "/package-info.java"; + } else { + throw new Error("Could not extract the java class " + + "name from the provided source"); + } + } + } + + /** + * Extracts the Java file name from the class declaration. + * This method is intended for simple files and uses regular expressions, + * so comments matching the pattern can make the method fail. + * @deprecated This is a legacy method for compatibility with ToolBox v1. + * Use {@link JavaSource#getName JavaSource.getName} instead. + * @param source the source text + * @return the Java file name inferred from the source + */ + @Deprecated + public static String getJavaFileNameFromSource(String source) { + return JavaSource.getJavaFileNameFromSource(source); + } + + /** + * A memory file manager, for saving generated files in memory. + * The file manager delegates to a separate file manager for listing and + * reading input files. + */ + public static class MemoryFileManager extends ForwardingJavaFileManager { + private interface Content { + byte[] getBytes(); + String getString(); + } + + /** + * Maps binary class names to generated content. + */ + private final Map> files; + + /** + * Construct a memory file manager which stores output files in memory, + * and delegates to a default file manager for input files. + */ + public MemoryFileManager() { + this(ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)); + } + + /** + * Construct a memory file manager which stores output files in memory, + * and delegates to a specified file manager for input files. + * @param fileManager the file manager to be used for input files + */ + public MemoryFileManager(JavaFileManager fileManager) { + super(fileManager); + files = new HashMap<>(); + } + + @Override + public JavaFileObject getJavaFileForOutput(Location location, + String name, + JavaFileObject.Kind kind, + FileObject sibling) + { + return new MemoryFileObject(location, name, kind); + } + + /** + * Returns the set of names of files that have been written to a given + * location. + * @param location the location + * @return the set of file names + */ + public Set getFileNames(Location location) { + Map filesForLocation = files.get(location); + return (filesForLocation == null) + ? Collections.emptySet() : filesForLocation.keySet(); + } + + /** + * Returns the content written to a file in a given location, + * or null if no such file has been written. + * @param location the location + * @param name the name of the file + * @return the content as an array of bytes + */ + public byte[] getFileBytes(Location location, String name) { + Content content = getFile(location, name); + return (content == null) ? null : content.getBytes(); + } + + /** + * Returns the content written to a file in a given location, + * or null if no such file has been written. + * @param location the location + * @param name the name of the file + * @return the content as a string + */ + public String getFileString(Location location, String name) { + Content content = getFile(location, name); + return (content == null) ? null : content.getString(); + } + + private Content getFile(Location location, String name) { + Map filesForLocation = files.get(location); + return (filesForLocation == null) ? null : filesForLocation.get(name); + } + + private void save(Location location, String name, Content content) { + Map filesForLocation = files.get(location); + if (filesForLocation == null) + files.put(location, filesForLocation = new HashMap<>()); + filesForLocation.put(name, content); + } + + /** + * A writable file object stored in memory. + */ + private class MemoryFileObject extends SimpleJavaFileObject { + private final Location location; + private final String name; + + /** + * Constructs a memory file object. + * @param name binary name of the class to be stored in this file object + */ + MemoryFileObject(Location location, String name, JavaFileObject.Kind kind) { + super(URI.create("mfm:///" + name.replace('.','/') + kind.extension), + Kind.CLASS); + this.location = location; + this.name = name; + } + + @Override + public OutputStream openOutputStream() { + return new FilterOutputStream(new ByteArrayOutputStream()) { + @Override + public void close() throws IOException { + out.close(); + byte[] bytes = ((ByteArrayOutputStream) out).toByteArray(); + save(location, name, new Content() { + @Override + public byte[] getBytes() { + return bytes; + } + @Override + public String getString() { + return new String(bytes); + } + + }); + } + }; + } + + @Override + public Writer openWriter() { + return new FilterWriter(new StringWriter()) { + @Override + public void close() throws IOException { + out.close(); + String text = ((StringWriter) out).toString(); + save(location, name, new Content() { + @Override + public byte[] getBytes() { + return text.getBytes(); + } + @Override + public String getString() { + return text; + } + + }); + } + }; + } + } + } +} + diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/ApiExtraction.java --- a/langtools/test/tools/sjavac/ApiExtraction.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/ApiExtraction.java Thu Mar 31 15:20:50 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -27,11 +27,10 @@ * @summary Make sure extraction of non-private APIs work as expected. * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper ApiExtraction */ import static java.util.Arrays.asList; diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/ClasspathDependencies.java --- a/langtools/test/tools/sjavac/ClasspathDependencies.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/ClasspathDependencies.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,10 @@ * @summary Make sure changes of public API on classpath triggers recompilation * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper ClasspathDependencies */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/CompileCircularSources.java --- a/langtools/test/tools/sjavac/CompileCircularSources.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/CompileCircularSources.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper CompileCircularSources */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/CompileExcludingDependency.java --- a/langtools/test/tools/sjavac/CompileExcludingDependency.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/CompileExcludingDependency.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper CompileExcludingDependency */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/CompileWithAtFile.java --- a/langtools/test/tools/sjavac/CompileWithAtFile.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/CompileWithAtFile.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper CompileWithAtFile */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/CompileWithInvisibleSources.java --- a/langtools/test/tools/sjavac/CompileWithInvisibleSources.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/CompileWithInvisibleSources.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper CompileWithInvisibleSources */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/CompileWithOverrideSources.java --- a/langtools/test/tools/sjavac/CompileWithOverrideSources.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/CompileWithOverrideSources.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper CompileWithOverrideSources */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/HiddenFiles.java --- a/langtools/test/tools/sjavac/HiddenFiles.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/HiddenFiles.java Thu Mar 31 15:20:50 2016 -0700 @@ -32,7 +32,7 @@ * @modules jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap * @library /tools/lib - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper HiddenFiles */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompInheritance.java --- a/langtools/test/tools/sjavac/IncCompInheritance.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompInheritance.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary Analysis of public API does not take super classes into account * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompInheritance */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileChangeNative.java --- a/langtools/test/tools/sjavac/IncCompileChangeNative.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileChangeNative.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileChangeNative */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileDropClasses.java --- a/langtools/test/tools/sjavac/IncCompileDropClasses.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileDropClasses.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileDropClasses */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java --- a/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java Thu Mar 31 15:20:50 2016 -0700 @@ -25,21 +25,21 @@ * @test * @summary Verify that "alfa.omega.A a" does create a proper dependency * @bug 8054689 - * @ignore Requires dependency code to deal with in-method dependencies. * @author Fredrik O * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac - * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @ignore Requires dependency code to deal with in-method dependencies. + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileFullyQualifiedRef */ import java.util.Map; +import toolbox.ToolBox; + public class IncCompileFullyQualifiedRef extends SJavacTester { public static void main(String... args) throws Exception { IncCompileFullyQualifiedRef fr = new IncCompileFullyQualifiedRef(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileNoChanges.java --- a/langtools/test/tools/sjavac/IncCompileNoChanges.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileNoChanges.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileNoChanges */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileUpdateNative.java --- a/langtools/test/tools/sjavac/IncCompileUpdateNative.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileUpdateNative.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileUpdateNative */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncCompileWithChanges.java --- a/langtools/test/tools/sjavac/IncCompileWithChanges.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncCompileWithChanges.java Thu Mar 31 15:20:50 2016 -0700 @@ -24,23 +24,24 @@ /* * @test * @summary Verify incremental changes in gensrc are handled as expected - * @ignore Requires dependency code to deal with in-method dependencies. * @bug 8054689 * @author Fredrik O * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @ignore Requires dependency code to deal with in-method dependencies. + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncCompileWithChanges */ import java.util.*; import java.nio.file.*; +import toolbox.ToolBox; + public class IncCompileWithChanges extends SJavacTester { public static void main(String... args) throws Exception { IncCompileWithChanges wc = new IncCompileWithChanges(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/IncludeExcludePatterns.java --- a/langtools/test/tools/sjavac/IncludeExcludePatterns.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/IncludeExcludePatterns.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,7 +29,7 @@ * @modules jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap * @library /tools/lib - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper IncludeExcludePatterns */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/NoState.java --- a/langtools/test/tools/sjavac/NoState.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/NoState.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,11 +27,10 @@ * @bug 8135131 * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper NoState */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/OverlappingSrcDst.java --- a/langtools/test/tools/sjavac/OverlappingSrcDst.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/OverlappingSrcDst.java Thu Mar 31 15:20:50 2016 -0700 @@ -30,11 +30,10 @@ * @bug 8061320 * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper OverlappingSrcDst */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/PackagePathMismatch.java --- a/langtools/test/tools/sjavac/PackagePathMismatch.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/PackagePathMismatch.java Thu Mar 31 15:20:50 2016 -0700 @@ -27,10 +27,9 @@ * @summary This test makes sure file paths matches package declarations * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper PackagePathMismatch */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/ParallelCompilations.java --- a/langtools/test/tools/sjavac/ParallelCompilations.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/ParallelCompilations.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,11 +28,10 @@ * @author sogoel * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper ParallelCompilations */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/PermittedArtifact.java --- a/langtools/test/tools/sjavac/PermittedArtifact.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/PermittedArtifact.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper PermittedArtifact */ diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/SJavacTester.java --- a/langtools/test/tools/sjavac/SJavacTester.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/SJavacTester.java Thu Mar 31 15:20:50 2016 -0700 @@ -28,6 +28,8 @@ import com.sun.tools.sjavac.Main; +import toolbox.ToolBox; + public class SJavacTester { final ToolBox tb = new ToolBox(); diff -r 28d33fb9097f -r e04318f39f92 langtools/test/tools/sjavac/StateDir.java --- a/langtools/test/tools/sjavac/StateDir.java Thu Mar 31 14:56:33 2016 -0700 +++ b/langtools/test/tools/sjavac/StateDir.java Thu Mar 31 15:20:50 2016 -0700 @@ -29,11 +29,10 @@ * @author sogoel (rewrite) * @library /tools/lib * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.main * jdk.compiler/com.sun.tools.sjavac * jdk.jdeps/com.sun.tools.javap - * @build Wrapper ToolBox + * @build Wrapper toolbox.ToolBox * @run main Wrapper StateDir */