Search in sources :

Example 1 with LinkInTrace

use of com.jetbrains.python.traceBackParsers.LinkInTrace in project intellij-community by JetBrains.

the class PyTestTracebackParserTest method testLinks.

@Test
public void testLinks() throws java.io.IOException {
    final String s = StreamUtil.readText(PyTestTracebackParserTest.class.getResource("linksDataTest.txt").openStream(), Charset.defaultCharset());
    final Set<String> requiredStrings = new HashSet<>();
    requiredStrings.add("file:///c:/windows/system32/file.txt - 42");
    requiredStrings.add("file:///c:/windows/system32/file_spam.txt - 42");
    requiredStrings.add("c:\\documents and settings\\foo.txt - 43");
    requiredStrings.add("file:///c:/windows/system32/file.txt - 42");
    requiredStrings.add("/file.py - 42");
    requiredStrings.add("c:\\folder55\\file.py - 12");
    requiredStrings.add("C:\\temp\\untitled55\\test_sample.py - 5");
    requiredStrings.add("C:\\temp\\untitled55\\test_sample.py - 6");
    requiredStrings.add("C:\\temp\\untitled55\\test_sample.py - 7");
    requiredStrings.add("C:\\temp\\untitled55\\test_sample.py - 89999");
    requiredStrings.add("C:\\temp\\untitled55\\test_sample.py - 99999");
    requiredStrings.add("../../../files/files.py - 100");
    requiredStrings.add("/Users/Mac Hipster/Applications/PyCharm 4.0 .app/helpers/lala.py - 12");
    requiredStrings.add("C:\\Users\\ilya.kazakevich\\virtenvs\\spammy\\lib\\site-packages\\django_cron\\models.py - 4");
    final String[] strings = StringUtil.splitByLines(s);
    for (final String line : strings) {
        final LinkInTrace trace = new PyTestTracebackParser().findLinkInTrace(line);
        if (trace != null) {
            final boolean removeResult = requiredStrings.remove(trace.getFileName() + " - " + trace.getLineNumber());
            Assert.assertTrue(String.format("Unexpected file found %s line %s", trace.getFileName(), trace.getLineNumber()), removeResult);
        }
    }
    Assert.assertThat("Some lines were not found", requiredStrings, Matchers.empty());
}
Also used : LinkInTrace(com.jetbrains.python.traceBackParsers.LinkInTrace) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 2 with LinkInTrace

use of com.jetbrains.python.traceBackParsers.LinkInTrace in project intellij-community by JetBrains.

the class PyTestTracebackParserTest method testLongLines.

/**
     * Ensures
     * Regexp worst cases are limited to prevent freezing on very long lines
     */
@Test(timeout = 5000)
public void testLongLines() throws Exception {
    Assert.assertNull("No link should be found in numbers list", new PyTestTracebackParser().findLinkInTrace(myStringJunk));
    Assert.assertNull("No link should be found in base64 list", new PyTestTracebackParser().findLinkInTrace(myBase64Junk));
    Assert.assertNull("No link should be found in junk", new PyTestTracebackParser().findLinkInTrace(myStringJunkWithSpaces));
    final LinkInTrace trace = new PyTestTracebackParser().findLinkInTrace(myStringJunkWithSpacesAndLine);
    Assert.assertNotNull("No link found in long line", trace);
}
Also used : LinkInTrace(com.jetbrains.python.traceBackParsers.LinkInTrace) Test(org.junit.Test)

Example 3 with LinkInTrace

use of com.jetbrains.python.traceBackParsers.LinkInTrace in project intellij-community by JetBrains.

the class PythonTracebackFilter method applyFilter.

@Override
@Nullable
public final Result applyFilter(@NotNull final String line, final int entireLength) {
    for (final TraceBackParser parser : TraceBackParser.PARSERS) {
        final LinkInTrace linkInTrace = parser.findLinkInTrace(line);
        if (linkInTrace == null) {
            continue;
        }
        final int lineNumber = linkInTrace.getLineNumber();
        final VirtualFile vFile = findFileByName(linkInTrace.getFileName());
        if (vFile != null) {
            final OpenFileHyperlinkInfo hyperlink = new OpenFileHyperlinkInfo(myProject, vFile, lineNumber - 1);
            final int textStartOffset = entireLength - line.length();
            final int startPos = linkInTrace.getStartPos();
            final int endPos = linkInTrace.getEndPos();
            return new Result(startPos + textStartOffset, endPos + textStartOffset, hyperlink);
        }
    }
    return null;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) OpenFileHyperlinkInfo(com.intellij.execution.filters.OpenFileHyperlinkInfo) TraceBackParser(com.jetbrains.python.traceBackParsers.TraceBackParser) LinkInTrace(com.jetbrains.python.traceBackParsers.LinkInTrace) Nullable(org.jetbrains.annotations.Nullable)

Example 4 with LinkInTrace

use of com.jetbrains.python.traceBackParsers.LinkInTrace in project intellij-community by JetBrains.

the class PyTestTracebackParserTest method testLineWithLink.

/**
   * Ensures we find link in stack trace
   */
@Test
public void testLineWithLink() throws Exception {
    final LinkInTrace linkInTrace = new PyTestTracebackParser().findLinkInTrace("foo/bar.py:42 file ");
    Assert.assertNotNull("Failed to parse line", linkInTrace);
    Assert.assertEquals("Bad file name", "foo/bar.py", linkInTrace.getFileName());
    Assert.assertEquals("Bad line number", 42, linkInTrace.getLineNumber());
    Assert.assertEquals("Bad start pos", 0, linkInTrace.getStartPos());
    Assert.assertEquals("Bad end pos", 13, linkInTrace.getEndPos());
}
Also used : LinkInTrace(com.jetbrains.python.traceBackParsers.LinkInTrace) Test(org.junit.Test)

Example 5 with LinkInTrace

use of com.jetbrains.python.traceBackParsers.LinkInTrace in project intellij-community by JetBrains.

the class PyTracebackParserTest method testLineWithLink.

/**
   * Ensures we find link in stack trace
   */
public void testLineWithLink() throws Exception {
    final LinkInTrace linkInTrace = new PyTracebackParser().findLinkInTrace("File \"foo/bar.py\", line 42 failed");
    Assert.assertNotNull("Failed to parse line", linkInTrace);
    Assert.assertEquals("Bad file name", "foo/bar.py", linkInTrace.getFileName());
    Assert.assertEquals("Bad line number", 42, linkInTrace.getLineNumber());
    Assert.assertEquals("Bad start pos", 6, linkInTrace.getStartPos());
    Assert.assertEquals("Bad end pos", 16, linkInTrace.getEndPos());
}
Also used : LinkInTrace(com.jetbrains.python.traceBackParsers.LinkInTrace)

Aggregations

LinkInTrace (com.jetbrains.python.traceBackParsers.LinkInTrace)5 Test (org.junit.Test)3 OpenFileHyperlinkInfo (com.intellij.execution.filters.OpenFileHyperlinkInfo)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 TraceBackParser (com.jetbrains.python.traceBackParsers.TraceBackParser)1 HashSet (java.util.HashSet)1 Nullable (org.jetbrains.annotations.Nullable)1