test/langtools/tools/javac/annotations/8218152/MalformedAnnotationProcessorTests.java
author jlahoda
Tue, 30 Apr 2019 10:39:22 +0200
changeset 54650 d9208a660094
permissions -rw-r--r--
8218152: [javac] fails and exits with no error if a bad annotation processor provided Summary: Handle exceptions thrown while loading annotation processors. Reviewed-by: jlahoda Contributed-by: groeges@uk.ibm.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54650
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     1
/*
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     4
 *
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     7
 * published by the Free Software Foundation.
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     8
 *
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    13
 * accompanied this code).
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    14
 *
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    18
 *
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    21
 * questions.
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    22
 */
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    23
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    24
/*
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    25
 * @test
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    26
 * @bug 8218152
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    27
 * @summary A bad annotation processor class file should fail with an error
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    28
 * @author Steven Groeger
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    29
 *
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    30
 * @library /tools/lib /tools/javac/lib
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    31
 * @modules
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    32
 *      jdk.compiler/com.sun.tools.javac.api
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    33
 *      jdk.compiler/com.sun.tools.javac.main
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    34
 * @build toolbox.ToolBox toolbox.JavacTask JavacTestingAbstractProcessor
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    35
 * @run main MalformedAnnotationProcessorTests
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    36
 */
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    37
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    38
import java.io.RandomAccessFile;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    39
import java.nio.ByteBuffer;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    40
import java.nio.channels.FileChannel;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    41
import java.nio.file.Files;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    42
import java.nio.file.Path;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    43
import java.nio.file.Paths;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    44
import java.util.List;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    45
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    46
import javax.annotation.processing.Processor;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    47
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    48
import toolbox.JavacTask;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    49
import toolbox.Task;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    50
import toolbox.Task.Expect;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    51
import toolbox.TestRunner;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    52
import toolbox.ToolBox;
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    53
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    54
public class MalformedAnnotationProcessorTests extends TestRunner{
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    55
    public static void main(String... args) throws Exception {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    56
        new MalformedAnnotationProcessorTests().runTests(
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    57
                m -> new Object[] { Paths.get(m.getName()) }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    58
        );
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    59
    }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    60
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    61
    private ToolBox tb = new ToolBox();
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    62
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    63
    public MalformedAnnotationProcessorTests() {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    64
        super(System.err);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    65
    }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    66
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    67
    @Test
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    68
    public void testBadAnnotationProcessor(Path base) throws Exception {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    69
        Path apDir = base.resolve("annoprocessor");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    70
        tb.writeFile(apDir.resolve("META-INF").resolve("services")
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    71
                          .resolve(Processor.class.getCanonicalName()), "BadAnnoProcessor");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    72
        tb.writeFile(apDir.resolve("BadAnnoProcessor.class"), "badannoprocessor");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    73
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    74
        Path src = base.resolve("src");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    75
        Path classes = base.resolve("classes");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    76
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    77
        Files.createDirectories(classes);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    78
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    79
        tb.writeJavaFiles(src, "package test; public class Test {}");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    80
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    81
        List<String> actualErrors =
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    82
                new JavacTask(tb)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    83
                    .options("-XDrawDiagnostics",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    84
                             "-classpath", "",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    85
                             "-sourcepath", src.toString(),
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    86
                             "-processorpath", apDir.toString())
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    87
                    .outdir(classes)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    88
                    .files(tb.findJavaFiles(src))
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    89
                    .run(Expect.FAIL)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    90
                    .writeAll()
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    91
                    .getOutputLines(Task.OutputKind.DIRECT);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    92
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    93
        System.out.println(actualErrors.get(0));
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    94
        if (!actualErrors.get(0).contains("- compiler.err.proc.cant.load.class: " +
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    95
                                          "Incompatible magic value")) {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    96
            throw new AssertionError("Unexpected errors reported: " + actualErrors);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    97
        }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    98
    }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
    99
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   100
    @Test
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   101
    public void testMissingAnnotationProcessor(Path base) throws Exception {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   102
        Path apDir = base.resolve("annoprocessor");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   103
        tb.writeFile(apDir.resolve("META-INF").resolve("services").resolve(Processor.class.getCanonicalName()),
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   104
                     "MissingAnnoProcessor");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   105
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   106
        Path src = base.resolve("src");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   107
        Path classes = base.resolve("classes");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   108
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   109
        Files.createDirectories(classes);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   110
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   111
        tb.writeJavaFiles(src, "package test; public class Test {}");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   112
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   113
        List<String> actualErrors =
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   114
                new JavacTask(tb)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   115
                    .options("-XDrawDiagnostics",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   116
                             "-classpath", "",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   117
                             "-sourcepath", src.toString(),
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   118
                             "-processorpath", apDir.toString())
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   119
                    .outdir(classes)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   120
                    .files(tb.findJavaFiles(src))
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   121
                    .run(Expect.FAIL)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   122
                    .writeAll()
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   123
                    .getOutputLines(Task.OutputKind.DIRECT);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   124
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   125
        if (!actualErrors.get(0).contains("- compiler.err.proc.bad.config.file: " +
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   126
            "javax.annotation.processing.Processor: Provider MissingAnnoProcessor not found")) {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   127
            throw new AssertionError("Unexpected errors reported: " + actualErrors);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   128
        }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   129
    }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   130
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   131
    @Test
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   132
    public void testWrongClassFileVersion(Path base) throws Exception {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   133
        Path apDir = base.resolve("ap");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   134
        tb.writeFile(apDir.resolve("META-INF").resolve("services").resolve(Processor.class.getCanonicalName()),
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   135
                     "WrongClassFileVersion");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   136
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   137
        new JavacTask(tb)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   138
                .outdir(apDir)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   139
                .sources("class WrongClassFileVersion {}")
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   140
                .run()
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   141
                .writeAll();
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   142
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   143
        increaseMajor(apDir.resolve("WrongClassFileVersion.class"), 1);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   144
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   145
        Path src = base.resolve("src");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   146
        Path classes = base.resolve("classes");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   147
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   148
        Files.createDirectories(classes);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   149
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   150
        tb.writeJavaFiles(src, "package test; public class Test {}");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   151
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   152
        List<String> actualErrors =
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   153
                new JavacTask(tb)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   154
                    .options("-XDrawDiagnostics",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   155
                             "-classpath", "",
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   156
                             "-sourcepath", src.toString(),
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   157
                             "-processorpath", apDir.toString())
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   158
                    .outdir(classes)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   159
                    .files(tb.findJavaFiles(src))
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   160
                    .run(Expect.FAIL)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   161
                    .writeAll()
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   162
                    .getOutputLines(Task.OutputKind.DIRECT);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   163
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   164
        if (!actualErrors.get(0).contains("- compiler.err.proc.cant.load.class: " +
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   165
            "WrongClassFileVersion has been compiled by a more recent version")) {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   166
            throw new AssertionError("Unexpected errors reported: " + actualErrors);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   167
        }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   168
    }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   169
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   170
    // Increase class file cfile's major version by delta
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   171
    // (note: based on test/langtools/tools/javac/6330997/T6330997.java)
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   172
    static void increaseMajor(Path cfile, int delta) {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   173
        try (RandomAccessFile cls =
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   174
             new RandomAccessFile(cfile.toFile(), "rw");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   175
             FileChannel fc = cls.getChannel()) {
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   176
            ByteBuffer rbuf = ByteBuffer.allocate(2);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   177
            fc.read(rbuf, 6);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   178
            ByteBuffer wbuf = ByteBuffer.allocate(2);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   179
            wbuf.putShort(0, (short)(rbuf.getShort(0) + delta));
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   180
            fc.write(wbuf, 6);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   181
            fc.force(false);
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   182
        } catch (Exception e){
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   183
            throw new RuntimeException("Failed: unexpected exception");
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   184
         }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   185
     }
d9208a660094 8218152: [javac] fails and exits with no error if a bad annotation processor provided
jlahoda
parents:
diff changeset
   186
}