test/tools/javac/processing/errors/TestReturnCode.java

Fri, 05 Aug 2011 15:57:59 -0700

author
jjg
date
Fri, 05 Aug 2011 15:57:59 -0700
changeset 1064
c0d5f93af048
parent 699
d2aaaec153e8
child 1466
b52a38d4536c
permissions
-rw-r--r--

7074189: some javac tests fail with latest jtreg 4.1 b03
Reviewed-by: darcy

     1 /*
     2  * Copyright (c) 2006, 2011, 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 6403468
    27  * @summary Test that an erroneous return code results from raising an error.
    28  * @author  Joseph D. Darcy
    29  * @library ../../lib
    30  * @build JavacTestingAbstractProcessor CompileFail
    31  * @compile TestReturnCode.java
    32  *
    33  * @compile                     -processor TestReturnCode -proc:only                                                                   Foo.java
    34  * @run main CompileFail ERROR  -processor TestReturnCode -proc:only                                                    -AErrorOnFirst Foo.java
    35  * @run main CompileFail ERROR  -processor TestReturnCode -proc:only                                      -AErrorOnLast                Foo.java
    36  * @run main CompileFail ERROR  -processor TestReturnCode -proc:only                                      -AErrorOnLast -AErrorOnFirst Foo.java
    37  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only                   -AExceptionOnFirst                              Foo.java
    38  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only                   -AExceptionOnFirst               -AErrorOnFirst Foo.java
    39  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only                   -AExceptionOnFirst -AErrorOnLast                Foo.java
    40  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only                   -AExceptionOnFirst -AErrorOnLast -AErrorOnFirst Foo.java
    41  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast                                                 Foo.java
    42  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast                                  -AErrorOnFirst Foo.java
    43  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast                    -AErrorOnLast                Foo.java
    44  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast                    -AErrorOnLast -AErrorOnFirst Foo.java
    45  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast -AExceptionOnFirst                              Foo.java
    46  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast -AExceptionOnFirst               -AErrorOnFirst Foo.java
    47  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast -AExceptionOnFirst -AErrorOnLast                Foo.java
    48  * @run main CompileFail SYSERR -processor TestReturnCode -proc:only -AExceptionOnLast -AExceptionOnFirst -AErrorOnLast -AErrorOnFirst Foo.java
    49  */
    51 import java.util.Set;
    52 import java.util.HashSet;
    53 import java.util.Arrays;
    54 import javax.annotation.processing.*;
    55 import javax.lang.model.SourceVersion;
    56 import javax.lang.model.element.*;
    57 import javax.lang.model.util.*;
    58 import static javax.tools.Diagnostic.Kind.*;
    61 /**
    62  * This processor raises errors or throws exceptions on different
    63  * rounds to allow the return code to be test.
    64  */
    65 @SupportedOptions({"ErrorOnFirst",
    66                    "ErrorOnLast",
    67                    "ExceptionOnFirst",
    68                    "ExceptionOnLast"})
    69 public class TestReturnCode extends JavacTestingAbstractProcessor {
    71     private boolean errorOnFirst;
    72     private boolean errorOnLast;
    73     private boolean exceptionOnFirst;
    74     private boolean exceptionOnLast;
    76     public boolean process(Set<? extends TypeElement> annotations,
    77                            RoundEnvironment roundEnv) {
    78         if (!roundEnv.processingOver()) {
    79             System.out.format("Variables: %b\t%b\t%b\t%b%n",
    80                               errorOnFirst,
    81                               errorOnLast,
    82                               exceptionOnFirst,
    83                               exceptionOnLast);
    84             if (errorOnFirst)
    85                 messager.printMessage(ERROR, "Error on first round.");
    86             if (exceptionOnFirst)
    87                 throw new RuntimeException("Exception on first round.");
    88         } else {
    89             if (errorOnLast)
    90                 messager.printMessage(ERROR, "Error on last round.");
    91             if (exceptionOnLast)
    92                 throw new RuntimeException("Exception on last round.");
    93         }
    94         return true;
    95     }
    97     @Override
    98     public void init(ProcessingEnvironment processingEnv) {
    99         super.init(processingEnv);
   100         Set<String> keySet = processingEnv.getOptions().keySet();
   101         errorOnFirst      = keySet.contains("ErrorOnFirst");
   102         errorOnLast     = keySet.contains("ErrorOnLast");
   103         exceptionOnFirst  = keySet.contains("ExceptionOnFirst");
   104         exceptionOnLast = keySet.contains("ExceptionOnLast");
   105     }
   106 }

mercurial