package org.checkerframework.eclipse.javac.tests;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.checkerframework.eclipse.javac.JavacError;
import org.checkerframework.eclipse.util.Util;
import org.junit.Test;
public class ErrorParserTest {
private static final String SIMPLE_TEST_INPUT =
new StringBuilder()
.append(
"/home/asumu/gsoc-workspace-4/checker testing/src/GetStarted.java:8: warning: incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append(" found : null")
.append(Util.NL)
.append(" required: @NonNull Integer")
.append(Util.NL)
.append(
"/home/asumu/gsoc-workspace-4/checker testing/src/GetStarted.java:16: warning: attempting to use a non-@Interned comparison operand")
.append(Util.NL)
.append(" else if (s1 == obj)")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append(" found: Object")
.append(Util.NL)
.append("2 warnings")
.toString();
private static final String SIMPLE_ERROR_1 =
new StringBuilder()
.append("incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.append(Util.NL)
.append(" found : null")
.append(Util.NL)
.append(" required: @NonNull Integer")
.toString();
private static final String SIMPLE_ERROR_2 =
new StringBuilder()
.append("attempting to use a non-@Interned comparison operand")
.append(Util.NL)
.append(" else if (s1 == obj)")
.append(Util.NL)
.append(" found: Object")
.toString();
private static final String OTHER_TEST_INPUT =
new StringBuilder()
.append(
"/homes/gws/wmdietl/research/eclipse-workspaces/2010-08-icse/SwingEval/AwtSwing/java/awt/Window.java:58: warning: Disposer is internal proprietary API and may be removed in a future release")
.append(Util.NL)
.append("import sun.java2d.Disposer;")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append(
"/homes/gws/wmdietl/research/eclipse-workspaces/2010-08-icse/SwingEval/AwtSwing/java/awt/Window.java:59: warning: Region is internal proprietary API and may be removed in a future release")
.append(Util.NL)
.append("import sun.java2d.pipe.Region;")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append("2 warnings")
.toString();
private static final String OTHER_ERROR_1 =
new StringBuilder()
.append(
"Disposer is internal proprietary API and may be removed in a future release")
.append(Util.NL)
.append("import sun.java2d.Disposer;")
.toString();
private static final String OTHER_ERROR_2 =
new StringBuilder()
.append(
"Region is internal proprietary API and may be removed in a future release")
.append(Util.NL)
.append("import sun.java2d.pipe.Region;")
.toString();
private static final String W_TEST_INPUT =
new StringBuilder()
.append(
"/foo/bar/Baz.java:35: warning: AttributesValues is internal proprietary API and may be removed in a future release")
.append(Util.NL)
.append(" private static void applyStyle(int style, AttributeValues values) {")
.append(Util.NL)
.append("/foo/bar/Baz.java:38: package sun.java2d.cmm does not exist")
.append(Util.NL)
.append("import sun.java2d.cmm.ColorTransform")
.append(Util.NL)
.append("/foo/bar/Baz.java:39: package sun.java2d.cmm does not exist")
.append(Util.NL)
.append("import sun.java2d.cmm.CMSManager")
.append(Util.NL)
.append("3 warnings")
.toString();
private static final String W_ERROR_2 =
new StringBuilder()
.append("package sun.java2d.cmm does not exist")
.append(Util.NL)
.append("import sun.java2d.cmm.ColorTransform")
.toString();
private static final String WINDOWS_INPUT =
new StringBuilder()
.append(
"C:/workspace/checker testing/src/GetStarted.java:8: warning: incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append(" found : null")
.append(Util.NL)
.append(" required: @NonNull Integer")
.append(Util.NL)
.append(
"C:/workspace/checker testing/src/GetStarted.java:16: warning: attempting to use a non-@Interned comparison operand")
.append(Util.NL)
.append(" else if (s1 == obj)")
.append(Util.NL)
.append(" ^")
.append(Util.NL)
.append(" found: Object")
.append(Util.NL)
.append("2 warnings")
.toString();
private static final String WINDOWS_ERROR_MSG_1 = SIMPLE_ERROR_1;
private static final String WINDOWS_ERROR_MSG_2 = SIMPLE_ERROR_2;
private static final String WARNING_TEST_INPUT =
new StringBuilder()
.append(
"/home/asumu/gsoc-workspace-4/checker testing/src/GetStarted.java:8: warning: incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.append(Util.NL)
.append("warning: foo bar (non-checker error)")
.toString();
private static final String WARNING_TEST_MSG_1 =
new StringBuilder()
.append("incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.toString();
private static final String NOTE_TEST_INPUT =
new StringBuilder()
.append(
"/home/asumu/gsoc-workspace-4/checker testing/src/GetStarted.java:8: warning: incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.append(Util.NL)
.append("Note: foo bar (non-checker error)")
.toString();
private static final String NOTE_TEST_MSG_1 =
new StringBuilder()
.append("incompatible types.")
.append(Util.NL)
.append(" @NonNull Integer bar = null;")
.toString();
@Test
public void emptyTest() {
List<JavacError> errors = JavacError.parse("");
assert (errors.isEmpty());
}
@Test
public void simpleParseTest() {
List<JavacError> errors = JavacError.parse(SIMPLE_TEST_INPUT);
assertEquals(2, errors.size());
assertEquals(8, errors.get(0).lineNumber);
assertEquals(SIMPLE_ERROR_1, errors.get(0).message);
assertEquals(16, errors.get(1).lineNumber);
assertEquals(SIMPLE_ERROR_2, errors.get(1).message);
}
@Test
public void otherParseTest() {
List<JavacError> errors = JavacError.parse(OTHER_TEST_INPUT);
assertEquals(2, errors.size());
assertEquals(OTHER_ERROR_1, errors.get(0).message);
assertEquals(58, errors.get(0).lineNumber);
assertEquals(OTHER_ERROR_2, errors.get(1).message);
assertEquals(59, errors.get(1).lineNumber);
}
@Test
public void wParseTest() {
List<JavacError> errors = JavacError.parse(W_TEST_INPUT);
assertEquals(3, errors.size());
assertEquals(W_ERROR_2, errors.get(1).message);
}
@Test
public void windowsParseTest() {
List<JavacError> errors = JavacError.parse(WINDOWS_INPUT);
assertEquals(2, errors.size());
assertEquals(8, errors.get(0).lineNumber);
assertEquals(WINDOWS_ERROR_MSG_1, errors.get(0).message);
assertEquals(16, errors.get(1).lineNumber);
assertEquals(WINDOWS_ERROR_MSG_2, errors.get(1).message);
}
@Test
public void warningParseTest() {
List<JavacError> errors = JavacError.parse(WARNING_TEST_INPUT);
assertEquals(1, errors.size());
assertEquals(WARNING_TEST_MSG_1, errors.get(0).message);
}
@Test
public void noteParseTest() {
List<JavacError> errors = JavacError.parse(NOTE_TEST_INPUT);
assertEquals(1, errors.size());
assertEquals(NOTE_TEST_MSG_1, errors.get(0).message);
}
}