| /******************************************************************************* |
| * Copyright (c) 2004, 2011 Jeff Pound and others. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * https://www.eclipse.org/legal/epl-2.0 |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Jeff Pound - initial API and implementation |
| * Tasktop Technologies - improvements |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.tasks.tests; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.mylyn.internal.tasks.ui.search.StackTraceDuplicateDetector; |
| |
| /** |
| * @author Jeff Pound |
| */ |
| public class StackTraceDuplicateDetectorTest extends TestCase { |
| |
| public void testStackTrace() throws Exception { |
| String stackTrace = "java.lang.NullPointerException\nat jeff.testing.stack.trace.functionality(jeff.java:481)"; |
| assertNotNull(StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testNoStackTrace() throws Exception { |
| String stackTrace = "this is not really a stacktrace"; |
| assertNull(StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceWithAppendedText() throws Exception { |
| String stackTrace = "java.lang.NullPointerException\nat jeff.testing.stack.trace.functionality(jeff.java:481)"; |
| String extraText = "\nExtra text that isnt' part of the stack trace java:"; |
| assertEquals(stackTrace + "\n", |
| StackTraceDuplicateDetector.getStackTraceFromDescription(extraText + "\n" + stackTrace + "\n")); |
| } |
| |
| public void testStackTraceMisaligned() throws Exception { |
| String stackTrace = "java.lang.IllegalStateException: zip file closed\n" |
| + " at java.util.zip.ZipFile.ensureOpen (ZipFile.java:518)\n" |
| + "at java.util.zip.ZipFile.getEntry (ZipFile.java:251)\n" |
| + " at java.util.jar.JarFile.getEntry(JarFile.java:200)\n" |
| + "at sun.net.www.protocol.jar.URLJarFile.getEntry\n" + " (URLJarFile.java:90)\n" |
| + "at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:112)\n" |
| + "at sun.net.www.protocol.jar.JarURLConnection.getInputStream\n" + "(JarURLConnection.java:124)\n" |
| + "at org.eclipse.jdt.internal.core.JavaElement\n.getURLContents(JavaElement.java:734)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceSUN() throws Exception { |
| // SUN, IBM (no space before brackets, one set of brackets) |
| String stackTrace = "java.lang.IllegalStateException: zip file closed\n" |
| + " at java.util.zip.ZipFile.ensureOpen(ZipFile.java:518)\n" |
| + " at java.util.zip.ZipFile.getEntry(ZipFile.java:251)\n" |
| + " at java.util.jar.JarFile.getEntry(JarFile.java:200)\n" |
| + " at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:90)\n" |
| + " at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:112)\n" |
| + " at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:124)\n" |
| + " at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:734)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceGCJ() throws Exception { |
| // gcj/gij (path and lib names in additional brackets) |
| String stackTrace = "java.lang.Error: Something bad happened\n" |
| + " at testcase.main(java.lang.String[]) (Unknown Source)\n" |
| + " at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)\n" |
| + " at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceNoLineNums() throws Exception { |
| // ikvm (no line numbers) |
| String stackTrace = "java.lang.Error: Something bad happened\n" + " at testcase.main (testcase.java)\n" |
| + " at java.lang.reflect.Method.Invoke (Method.java)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceJRockit() throws Exception { |
| // jrockit (slash delimiters) |
| String stackTrace = "java.lang.Error: Something bad happened\n" |
| + " at java/io/BufferedReader.readLine(BufferedReader.java:331)\n" |
| + " at java/io/BufferedReader.readLine(BufferedReader.java:362)\n" |
| + " at java/util/Properties.load(Properties.java:192)\n" |
| + " at java/util/logging/LogManager.readConfiguration(L:555)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| public void testStackTraceOther() throws Exception { |
| // jamvm, sablevm, kaffe, cacao (space before brackets, one set of brackets) |
| String stackTrace = "java.lang.Error: Something bad happened\n" + " at testcase.main (testcase.java:3)\n" |
| + " at java.lang.VirtualMachine.invokeMain (VirtualMachine.java)\n" |
| + " at java.lang.VirtualMachine.main (VirtualMachine.java:108)"; |
| assertEquals(stackTrace, StackTraceDuplicateDetector.getStackTraceFromDescription(stackTrace)); |
| } |
| |
| } |