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 <laszlo.kisha...@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-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to