You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ne...@apache.org on 2019/07/03 09:47:50 UTC
[netbeans] branch master updated: [NETBEANS-2753] Fixed NPE on Java
Stacktrace processing. Added some unit tests for Gradle Output processors.
This is an automated email from the ASF dual-hosted git repository.
neilcsmith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 29109ed [NETBEANS-2753] Fixed NPE on Java Stacktrace processing. Added some unit tests for Gradle Output processors.
new d39ec0d Merge pull request #1340 from lkishalmi/NETBEANS-2753
29109ed is described below
commit 29109edc539886c294c2f91edf1a145687e9d45c
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun Jun 30 12:09:45 2019 -0700
[NETBEANS-2753] Fixed NPE on Java Stacktrace processing. Added some unit tests for Gradle Output processors.
---
groovy/gradle.java/nbproject/project.xml | 19 ++
.../java/output/JavaCompilerProcessorFactory.java | 14 +-
.../output/JavaCompilerProcessorFactoryTest.java | 67 +++++++
.../modules/gradle/api/output/OutputListeners.java | 26 +--
.../gradle/output/GradleProcessorFactory.java | 85 ++++----
.../gradle/api/output/OutputDisplayerMock.java | 65 +++++++
.../gradle/output/GradleProcessorFactoryTest.java | 215 +++++++++++++++++++++
7 files changed, 431 insertions(+), 60 deletions(-)
diff --git a/groovy/gradle.java/nbproject/project.xml b/groovy/gradle.java/nbproject/project.xml
index 0e7a911..b2c293f 100644
--- a/groovy/gradle.java/nbproject/project.xml
+++ b/groovy/gradle.java/nbproject/project.xml
@@ -305,6 +305,25 @@
</run-dependency>
</dependency>
</module-dependencies>
+ <test-dependencies>
+ <test-type>
+ <name>unit</name>
+ <test-dependency>
+ <code-name-base>org.netbeans.libs.junit4</code-name-base>
+ <compile-dependency/>
+ </test-dependency>
+ <test-dependency>
+ <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
+ <recursive/>
+ <compile-dependency/>
+ </test-dependency>
+ <test-dependency>
+ <code-name-base>org.netbeans.modules.gradle</code-name-base>
+ <compile-dependency/>
+ <test/>
+ </test-dependency>
+ </test-type>
+ </test-dependencies>
<public-packages>
<package>org.netbeans.modules.gradle.java.api</package>
<package>org.netbeans.modules.gradle.java.api.output</package>
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactory.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactory.java
index c7837ed..0b9d647 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactory.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactory.java
@@ -48,20 +48,26 @@ import org.netbeans.modules.gradle.java.api.ProjectSourcesClassPathProvider;
* @author Laszlo Kishalmi
*/
@ProjectServiceProvider(service = OutputProcessorFactory.class, projectType = NbGradleProject.GRADLE_PLUGIN_TYPE + "/java-base")
-public class JavaCompilerProcessorFactory implements OutputProcessorFactory {
+public final class JavaCompilerProcessorFactory implements OutputProcessorFactory {
@Override
public Set<? extends OutputProcessor> createOutputProcessors(RunConfig cfg) {
return new HashSet<>(Arrays.asList(new StackTraceProcessor(cfg)));
}
- private static class StackTraceProcessor implements OutputProcessor {
+ static class StackTraceProcessor implements OutputProcessor {
private static final Pattern STACKTRACE_PATTERN = Pattern.compile("(.*)at ((\\w[\\w\\.]*)/)?(\\w[\\w\\.\\$<>]*)\\((\\w+)\\.java\\:([0-9]+)\\)(.*)");
private static final IOColors.OutputType OUT_TYPE = IOColors.OutputType.ERROR;
private final Project project;
private final ClassPath classPath;
+ // Used in unittest only
+ StackTraceProcessor() {
+ project = null;
+ classPath = null;
+ }
+
private StackTraceProcessor(RunConfig cfg) {
project = cfg.getProject();
ProjectSourcesClassPathProvider cpProvider = project.getLookup().lookup(ProjectSourcesClassPathProvider.class);
@@ -78,7 +84,7 @@ public class JavaCompilerProcessorFactory implements OutputProcessorFactory {
Matcher m = STACKTRACE_PATTERN.matcher(line);
if (m.matches()) {
String prefix = m.group(1);
- String modulePrefix = m.group(2);
+ String modulePrefix = m.group(2) != null ? m.group(2) : ""; //NOI18N
//String module = m.group(3);
String method = m.group(4);
String fileName = m.group(5);
@@ -86,7 +92,7 @@ public class JavaCompilerProcessorFactory implements OutputProcessorFactory {
String postfix = m.group(7);
int ppos = method.indexOf(fileName);
- if ((ppos >= 0) && (project != null)) {
+ if (ppos >= 0) {
String pack = method.substring(0, ppos).replace('.', '/');
String javaName = pack + fileName + ".java"; //NOI18N
diff --git a/groovy/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactoryTest.java b/groovy/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactoryTest.java
new file mode 100644
index 0000000..df2e3ce
--- /dev/null
+++ b/groovy/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/output/JavaCompilerProcessorFactoryTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.gradle.java.output;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.netbeans.modules.gradle.api.output.OutputDisplayerMock;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public class JavaCompilerProcessorFactoryTest {
+
+ private final String JAVA_8_STACKTRACE_1 = " at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)";
+ private final String JAVA_9_STACKTRACE_1 = " at jdk.zipfs/jdk.nio.zipfs.JarFileSystem.getVersionMap(JarFileSystem.java:137)";
+ private final String JAVA_COMPILE_ERROR_1 = "/home/netbeans/NetBeansProjects/gradleproject3/common/src/main/java/gradleproject3/common/NewClass1.java:1: error: class, interface, or enum expected";
+
+ @Test
+ public void testStackTraceProcessor1() {
+ JavaCompilerProcessorFactory.StackTraceProcessor stp = new JavaCompilerProcessorFactory.StackTraceProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(stp.processLine(od, JAVA_8_STACKTRACE_1));
+ assertEquals(JAVA_8_STACKTRACE_1, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(outputs[2].text, "");
+ assertEquals(outputs[3].text, "org.junit.jupiter.api.AssertionUtils.fail");
+ assertEquals(outputs[5].text, "AssertionUtils.java:55");
+ assertNotNull(outputs[5].action);
+ }
+
+ @Test
+ public void testStackTraceProcessor2() {
+ JavaCompilerProcessorFactory.StackTraceProcessor stp = new JavaCompilerProcessorFactory.StackTraceProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(stp.processLine(od, JAVA_9_STACKTRACE_1));
+ assertEquals(JAVA_9_STACKTRACE_1, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(outputs[2].text, "jdk.zipfs/");
+ assertEquals(outputs[3].text, "jdk.nio.zipfs.JarFileSystem.getVersionMap");
+ assertEquals(outputs[5].text, "JarFileSystem.java:137");
+ assertNotNull(outputs[5].action);
+ }
+
+ @Test
+ public void testStackTraceProcessor3() {
+ JavaCompilerProcessorFactory.StackTraceProcessor stp = new JavaCompilerProcessorFactory.StackTraceProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(stp.processLine(od, JAVA_COMPILE_ERROR_1));
+ }
+}
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/output/OutputListeners.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/output/OutputListeners.java
index fae8cef..44518f2 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/output/OutputListeners.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/output/OutputListeners.java
@@ -42,21 +42,23 @@ public final class OutputListeners {
@Override
public void run() {
- try {
- DataObject data = DataObject.find(file);
- if (data != null) {
- EditorCookie cookie = data.getLookup().lookup(EditorCookie.class);
- if (cookie != null) {
- try {
- cookie.getLineSet().getOriginal(line - 1).show(Line.ShowOpenType.REUSE, Line.ShowVisibilityType.FOCUS, col - 1);
- } catch (IndexOutOfBoundsException ex) {
- cookie.open();
+ if (file != null) {
+ try {
+ DataObject data = DataObject.find(file);
+ if (data != null) {
+ EditorCookie cookie = data.getLookup().lookup(EditorCookie.class);
+ if (cookie != null) {
+ try {
+ cookie.getLineSet().getOriginal(line - 1).show(Line.ShowOpenType.REUSE, Line.ShowVisibilityType.FOCUS, col - 1);
+ } catch (IndexOutOfBoundsException ex) {
+ cookie.open();
+ }
+
}
}
-
+ } catch (DataObjectNotFoundException ex) {
}
- } catch (DataObjectNotFoundException ex) {
}
}
@@ -73,7 +75,7 @@ public final class OutputListeners {
};
}
-
+
public static Runnable displayStatusText(final String text) {
return new Runnable() {
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java b/groovy/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
index 21a4c55..d7c9dbb 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
@@ -54,16 +54,16 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
private static final OutputProcessor JAVAC_PROCESSOR = new JavaCompilerProcessor();
private static final OutputProcessor GROOVYC_PROCESSOR = new GroovyCompilerProcessor();
-
+
@Override
public Set<? extends OutputProcessor> createOutputProcessors(RunConfig cfg) {
return new HashSet<>(Arrays.asList(URL_PROCESSOR, GRADLE_PROCESSOR, JAVAC_PROCESSOR, GROOVYC_PROCESSOR));
}
- private static final class URLOutputProcessor implements OutputProcessor {
+ static final class URLOutputProcessor implements OutputProcessor {
+
+ private static final Pattern URL_PATTERN = Pattern.compile("(((https?|ftp|file)://|file:/)[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])");
- private static final Pattern URL_PATTERN = Pattern.compile("((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])");
-
@Override
public boolean processLine(OutputDisplayer out, String line) {
Matcher m = URL_PATTERN.matcher(line);
@@ -84,10 +84,10 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
}
return last > 0;
}
-
+
}
- private static class GradleOutputProcessor implements OutputProcessor {
+ static class GradleOutputProcessor implements OutputProcessor {
private static final Pattern GRADLE_ERROR = Pattern.compile("(Build file|Script) '(.*)\\.gradle' line: ([0-9]+)");
@@ -100,21 +100,19 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
File gradleFile = FileUtil.normalizeFile(new File( buildFile + ".gradle"));
FileObject file = FileUtil.toFileObject(gradleFile);
- if (file != null) {
- int l = 1;
- try {
- l = Integer.parseInt(lineNum);
- } catch (NumberFormatException ex) {
- }
- out.print("Script '" + buildFile + ".gradle' line: " + lineNum, OutputListeners.openFileAt(file, l, 1));
- return true;
+ int l = 1;
+ try {
+ l = Integer.parseInt(lineNum);
+ } catch (NumberFormatException ex) {
}
+ out.print("Script '" + buildFile + ".gradle' line: " + lineNum, OutputListeners.openFileAt(file, l, 1));
+ return true;
}
return false;
- }
+ }
}
- private static class JavaCompilerProcessor implements OutputProcessor {
+ static class JavaCompilerProcessor implements OutputProcessor {
private static final Pattern JAVA_ERROR = Pattern.compile("(.*)\\.java\\:([0-9]+)\\: (error|warning)\\:(.*)");
@@ -129,25 +127,24 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
File javaFile = FileUtil.normalizeFile(new File(classBase + ".java"));
FileObject file = FileUtil.toFileObject(javaFile);
- if (file != null) {
- int l = 1;
- try {
- l = Integer.parseInt(lineNum);
- } catch (NumberFormatException ex) {
- }
- out.print(classBase + ".java:" + lineNum, OutputListeners.openFileAt(file, l, 1));
- out.print(": " + type + ":" + text);
- return true;
+ int l = 1;
+ try {
+ l = Integer.parseInt(lineNum);
+ } catch (NumberFormatException ex) {
}
+ out.print(classBase + ".java:" + lineNum, OutputListeners.openFileAt(file, l, 1));
+ out.print(": " + type + ":" + text);
+ return true;
}
return false;
}
}
- private static class GroovyCompilerProcessor implements OutputProcessor {
+ static class GroovyCompilerProcessor implements OutputProcessor {
- private static final Pattern GROOVY_ERROR = Pattern.compile("(.*)\\.groovy\\: ([0-9]+)\\: (.*)( at line: ([0-9]+) column: ([0-9]+). File: (.*) @ (.*))?");
+ private static final Pattern GROOVY_ERROR = Pattern.compile("(.*)\\.groovy\\: ([0-9]+)\\: (.+)");
+ private static final Pattern COLUMN_INFO = Pattern.compile(" @ line ([0-9]+), column ([0-9]+)\\.$");
@Override
public boolean processLine(OutputDisplayer out, String line) {
@@ -157,29 +154,29 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
String text = m.group(3);
String lineNum = m.group(2);
String colNum = "1";
- if (m.group(4) != null) {
- lineNum = m.group(5);
- colNum = m.group(6);
+
+ Matcher colm = COLUMN_INFO.matcher(text);
+ if (colm.find()) {
+ lineNum = colm.group(1);
+ colNum = colm.group(2);
}
- File javaFile = FileUtil.normalizeFile(new File(classBase + ".groovy"));
- FileObject file = FileUtil.toFileObject(javaFile);
- if (file != null) {
- int l = 1;
- int c = 1;
- try {
- l = Integer.parseInt(lineNum);
- c = Integer.parseInt(colNum);
- } catch (NumberFormatException ex) {
- }
- out.print(classBase + ".groovy:" + lineNum + ':' + colNum, OutputListeners.openFileAt(file, l, c));
- out.print(": " + text);
- return true;
+ File groovyFile = FileUtil.normalizeFile(new File(classBase + ".groovy"));
+ FileObject file = FileUtil.toFileObject(groovyFile);
+ int l = 1;
+ int c = 1;
+ try {
+ l = Integer.parseInt(lineNum);
+ c = Integer.parseInt(colNum);
+ } catch (NumberFormatException ex) {
}
+ out.print(classBase + ".groovy: " + lineNum, OutputListeners.openFileAt(file, l, c));
+ out.print(": " + text);
+ return true;
}
return false;
}
}
-
+
}
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/output/OutputDisplayerMock.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/output/OutputDisplayerMock.java
new file mode 100644
index 0000000..9515ce5
--- /dev/null
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/output/OutputDisplayerMock.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.gradle.api.output;
+
+import java.util.ArrayList;
+import org.openide.windows.IOColors;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public class OutputDisplayerMock extends OutputDisplayer {
+
+ private final ArrayList<OutputItem> items = new ArrayList<>();
+
+ @Override
+ protected void doPrint(CharSequence text, Runnable action, IOColors.OutputType type) {
+ items.add(new OutputItem(text.toString(), action, type));
+ }
+
+ public OutputItem[] getOutputs() {
+ return items.toArray(new OutputItem[items.size()]);
+ }
+
+ public String getOutput() {
+ StringBuilder sb = new StringBuilder();
+ for (OutputItem item : items) {
+ sb.append(item);
+ }
+ return sb.toString();
+ }
+
+ public class OutputItem {
+ public final String text;
+ public final Runnable action;
+ public final IOColors.OutputType type;
+
+ public OutputItem(String text, Runnable action, IOColors.OutputType type) {
+ this.text = text;
+ this.action = action;
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return text;
+ }
+ }
+}
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/output/GradleProcessorFactoryTest.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/output/GradleProcessorFactoryTest.java
new file mode 100644
index 0000000..50f3651
--- /dev/null
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/output/GradleProcessorFactoryTest.java
@@ -0,0 +1,215 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.gradle.output;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.netbeans.modules.gradle.api.output.OutputDisplayerMock;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public class GradleProcessorFactoryTest {
+
+ private static final String JAVA_8_STACKTRACE_1 = " at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)";
+
+ private static final String JAVA_COMPILE_ERROR_1 = "/home/netbeans/NetBeansProjects/gradleproject3/common/src/main/java/gradleproject3/common/NewClass1.java:1: error: class, interface, or enum expected";
+ private static final String JAVA_COMPILE_ERROR_2 = "D:\\Users\\netbeans\\NetBeansProjects\\gradleproject3\\common\\src\\main\\java\\gradleproject3\\common\\NewClass1.java:1: error: class, interface, or enum expected";
+
+ private static final String GRADLE_SCRIPT_ERROR_1= "Script '/home/netbeans/NetBeansProjects/gradleproject6/build.gradle' line: 6";
+
+ private static final String GROOVY_COMPILE_ERROR_1 = "/home/netbeans/NetBeansProjects/netbeans/groovy/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansExplodedWarPlugin.groovy: 33: unable to resolve class Prject";
+ private static final String GROOVY_COMPILE_ERROR_2 = "/home/netbeans/NetBeansProjects/netbeans/groovy/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansExplodedWarPlugin.groovy: 43: expecting anything but ''\\n''; got it anyway @ line 43, column 28.";
+
+ private static final String URL_PATTERN_1 = "https://netbeans.apache.org/";
+ private static final String URL_PATTERN_2 = "Hello https://netbeans.apache.org";
+ private static final String URL_PATTERN_3 = "https://netbeans.apache.org then look at ftp://netbeans.apache.org/";
+ private static final String URL_PATTERN_4 = "https://netbeans.apache.org then look at ftp://netbeans.apache.org/ and file:/home/netbeans ";
+ private static final String URL_PATTERN_5 = "https://netbeans.apache.org then look at ftp://netbeans.apache.org/ and file:///home/netbeans ";
+
+ @Test
+ public void testJavaCompilerProcessor1() {
+ GradleProcessorFactory.JavaCompilerProcessor jcp = new GradleProcessorFactory.JavaCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(jcp.processLine(od, JAVA_COMPILE_ERROR_1));
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals("/home/netbeans/NetBeansProjects/gradleproject3/common/src/main/java/gradleproject3/common/NewClass1.java:1", outputs[0].text);
+ assertEquals(": error: class, interface, or enum expected", outputs[1].text);
+ }
+
+ @Test
+ public void testJavaCompilerProcessor2() {
+ GradleProcessorFactory.JavaCompilerProcessor jcp = new GradleProcessorFactory.JavaCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(jcp.processLine(od, JAVA_COMPILE_ERROR_2));
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals("D:\\Users\\netbeans\\NetBeansProjects\\gradleproject3\\common\\src\\main\\java\\gradleproject3\\common\\NewClass1.java:1", outputs[0].text);
+ assertEquals(": error: class, interface, or enum expected", outputs[1].text);
+ }
+
+ @Test
+ public void testJavaCompilerProcessor3() {
+ GradleProcessorFactory.JavaCompilerProcessor jcp = new GradleProcessorFactory.JavaCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(jcp.processLine(od, GROOVY_COMPILE_ERROR_1));
+ }
+
+ @Test
+ public void testJavaCompilerProcessor4() {
+ GradleProcessorFactory.JavaCompilerProcessor jcp = new GradleProcessorFactory.JavaCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(jcp.processLine(od, JAVA_8_STACKTRACE_1));
+ }
+
+ @Test
+ public void testGroovyCompilerProcessor1() {
+ GradleProcessorFactory.GroovyCompilerProcessor gcp = new GradleProcessorFactory.GroovyCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(gcp.processLine(od, GROOVY_COMPILE_ERROR_1));
+ assertEquals(GROOVY_COMPILE_ERROR_1, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals("/home/netbeans/NetBeansProjects/netbeans/groovy/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansExplodedWarPlugin.groovy: 33", outputs[0].text);
+ assertNotNull(outputs[0].action);
+ assertEquals(": unable to resolve class Prject", outputs[1].text);
+ }
+
+ @Test
+ public void testGroovyCompilerProcessor2() {
+ GradleProcessorFactory.GroovyCompilerProcessor gcp = new GradleProcessorFactory.GroovyCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(gcp.processLine(od, GROOVY_COMPILE_ERROR_2));
+ assertEquals(GROOVY_COMPILE_ERROR_2, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals("/home/netbeans/NetBeansProjects/netbeans/groovy/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansExplodedWarPlugin.groovy: 43", outputs[0].text);
+ assertNotNull(outputs[0].action);
+ assertEquals(": expecting anything but ''\\n''; got it anyway @ line 43, column 28.", outputs[1].text);
+ }
+
+ @Test
+ public void testGroovyCompilerProcessor3() {
+ GradleProcessorFactory.GroovyCompilerProcessor gcp = new GradleProcessorFactory.GroovyCompilerProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(gcp.processLine(od, JAVA_COMPILE_ERROR_1));
+ }
+
+ @Test
+ public void testURLOutputProcessor1() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(uop.processLine(od, JAVA_8_STACKTRACE_1));
+ }
+
+ @Test
+ public void testURLOutputProcessor2() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(uop.processLine(od, JAVA_COMPILE_ERROR_1));
+ }
+
+ @Test
+ public void testURLOutputProcessor3() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, URL_PATTERN_1));
+ assertEquals(URL_PATTERN_1, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(3, outputs.length);
+ assertNotNull(outputs[1].action);
+ }
+
+ @Test
+ public void testURLOutputProcessor4() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, URL_PATTERN_2));
+ assertEquals(URL_PATTERN_2, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertNotNull(outputs[1].action);
+ assertEquals(3, outputs.length);
+ }
+
+ @Test
+ public void testURLOutputProcessor5() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, URL_PATTERN_3));
+ assertEquals(URL_PATTERN_3, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(5, outputs.length);
+ assertEquals(" then look at ", outputs[2].text);
+ assertNotNull(outputs[1].action);
+ assertNotNull(outputs[3].action);
+ }
+
+ @Test
+ public void testURLOutputProcessor6() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, URL_PATTERN_4));
+ assertEquals(URL_PATTERN_4, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(7, outputs.length);
+ assertEquals(" then look at ", outputs[2].text);
+ assertNotNull(outputs[1].action);
+ assertNotNull(outputs[3].action);
+ assertNotNull(outputs[5].action);
+ assertEquals("file:/home/netbeans", outputs[5].text);
+ }
+
+ @Test
+ public void testURLOutputProcessor7() {
+ GradleProcessorFactory.URLOutputProcessor uop = new GradleProcessorFactory.URLOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, URL_PATTERN_5));
+ assertEquals(URL_PATTERN_5, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(7, outputs.length);
+ assertEquals(" then look at ", outputs[2].text);
+ assertNotNull(outputs[1].action);
+ assertNotNull(outputs[3].action);
+ assertNotNull(outputs[5].action);
+ assertEquals("file:///home/netbeans", outputs[5].text);
+ }
+
+ @Test
+ public void testGradleOutputProcessor1() {
+ GradleProcessorFactory.GradleOutputProcessor uop = new GradleProcessorFactory.GradleOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertTrue(uop.processLine(od, GRADLE_SCRIPT_ERROR_1));
+ assertEquals(GRADLE_SCRIPT_ERROR_1, od.getOutput());
+ OutputDisplayerMock.OutputItem[] outputs = od.getOutputs();
+ assertEquals(1, outputs.length);
+ assertEquals(GRADLE_SCRIPT_ERROR_1, outputs[0].text);
+ }
+
+ @Test
+ public void testGradleOutputProcessor2() {
+ GradleProcessorFactory.GradleOutputProcessor uop = new GradleProcessorFactory.GradleOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(uop.processLine(od, JAVA_COMPILE_ERROR_1));
+ }
+
+ @Test
+ public void testGradleOutputProcessor3() {
+ GradleProcessorFactory.GradleOutputProcessor uop = new GradleProcessorFactory.GradleOutputProcessor();
+ OutputDisplayerMock od = new OutputDisplayerMock();
+ assertFalse(uop.processLine(od, JAVA_8_STACKTRACE_1));
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists