test/tools/javac/processing/options/testPrintProcessorInfo/TestWithXstdout.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 1466
b52a38d4536c
parent 0
959103a6100f
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 /*
    25  * @test
    26  * @bug 6987384
    27  * @summary -XprintProcessorRoundsInfo message printed with different timing than previous
    28  * @library /tools/javac/lib
    29  * @build JavacTestingAbstractProcessor Test TestWithXstdout
    30  * @run main TestWithXstdout
    31  */
    33 import java.io.*;
    34 import java.nio.charset.*;
    35 import java.nio.file.*;
    36 import java.util.*;
    38 public class TestWithXstdout {
    39     public static void main(String... args) throws Exception {
    40         File testSrc = new File(System.getProperty("test.src"));
    41         String testClasses = System.getProperty("test.classes", ".");
    42         String testClassPath = System.getProperty("test.class.path", testClasses);
    43         File stdout = new File("stdout.out");
    44         run_javac("-XDrawDiagnostics",
    45                 "-XprintProcessorInfo",
    46                 "-Werror",
    47                 "-proc:only",
    48                 "-processor",  "Test",
    49                 "-Xstdout", stdout.getPath(),
    50                 "-classpath", testClassPath,
    51                 new File(testSrc, "Test.java").getPath());
    52         boolean ok = compare(stdout, new File(testSrc, "Test.out"));
    53         if (!ok)
    54             throw new Exception("differences found");
    55     }
    57     static void run_javac(String... args) throws IOException, InterruptedException {
    58         File javaHome = new File(System.getProperty("java.home"));
    59         if (javaHome.getName().equals("jre"))
    60             javaHome = javaHome.getParentFile();
    61         File javac = new File(new File(javaHome, "bin"), "javac");
    63         List<String> opts = new ArrayList<>();
    64         opts.add(javac.getPath());
    66         String toolOpts = System.getProperty("test.tool.vm.opts");
    67         if (toolOpts != null && !"".equals(toolOpts.trim())) {
    68             opts.addAll(Arrays.asList(toolOpts.trim().split("[\\s]+")));
    69         }
    70         opts.addAll(Arrays.asList(args));
    71         System.out.println("exec: " + opts);
    72         ProcessBuilder pb = new ProcessBuilder(opts);
    73         pb.redirectErrorStream();
    74         Process p = pb.start();
    75         try (BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
    76             String line;
    77             while ((line = r.readLine()) != null)
    78                 System.out.println();
    79         }
    80         int rc = p.waitFor();
    81         if (rc != 0)
    82             System.out.println("javac exited, rc=" + rc);
    83     }
    85     static boolean compare(File a, File b) throws IOException {
    86         List<String> aLines = Files.readAllLines(a.toPath(), Charset.defaultCharset());
    87         List<String> bLines = Files.readAllLines(b.toPath(), Charset.defaultCharset());
    88         System.out.println(a + ": " + aLines.size() + " lines");
    89         System.out.println(b + ": " + bLines.size() + " lines");
    90         return aLines.equals(bLines);
    91     }
    92 }

mercurial