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