From b67beed549e8eca196af03ab2db4f0e5d36ec921 Mon Sep 17 00:00:00 2001 From: Oliver Trosien Date: Fri, 31 May 2013 09:13:27 +0200 Subject: [PATCH 1/2] Fixing filename validation performance regression in launch configuration when working on big projects --- .../epic/debug/ui/ProjectAndFileBlock.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/org.epic.debug/src/org/epic/debug/ui/ProjectAndFileBlock.java b/org.epic.debug/src/org/epic/debug/ui/ProjectAndFileBlock.java index fad64c2b..76a17648 100644 --- a/org.epic.debug/src/org/epic/debug/ui/ProjectAndFileBlock.java +++ b/org.epic.debug/src/org/epic/debug/ui/ProjectAndFileBlock.java @@ -134,14 +134,13 @@ public boolean isValid(ILaunchConfiguration config) { setErrorMessage("Startup File is not specified"); return false; } - String[] files = getPerlFiles(); - for (int i = 0; i < files.length; i++) { - if (files[i].equals(name)) { - return true; - } + + if (! existsFile(name)) { + setErrorMessage("File does not exist or match to the project"); + return false; } - setErrorMessage("File does not exist or match to the project"); - return false; + + return true; } private void createScriptFileEditor(Composite parent) { @@ -191,6 +190,18 @@ private String[] getPerlFiles() { } return ((PerlProjectVisitor) visitor).getList(); } + + private boolean existsFile(String filename) { + String projectName = getSelectedProject(); + + if (projectName == null || projectName.length() == 0) { + return false; + } + + IWorkspaceRoot workspaceRoot = PerlDebugPlugin.getWorkspace().getRoot(); + IProject project = workspaceRoot.getProject(projectName); + return project.getFile(filename).exists(); + } protected void newProjectSelected() { From 8063f432ba2da67e70af161da66b7ee1210140fa Mon Sep 17 00:00:00 2001 From: Oliver Trosien Date: Fri, 31 May 2013 11:32:23 +0200 Subject: [PATCH 2/2] Windows unit test compatibilty issues e.g. I'm getting a different exception message: "Die Pipe wird gerade geschlossen" --- .../src/org/epic/core/model/TestSourceFile.java | 4 ++-- .../src/org/epic/perleditor/editors/TestPerlPartitioner.java | 5 +++-- .../org/epic/perleditor/editors/util/PerlValidatorStub.java | 2 +- org.epic.perleditor-test/test.properties | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/org.epic.perleditor-test/src/org/epic/core/model/TestSourceFile.java b/org.epic.perleditor-test/src/org/epic/core/model/TestSourceFile.java index 07ef159b..5c99b413 100644 --- a/org.epic.perleditor-test/src/org/epic/core/model/TestSourceFile.java +++ b/org.epic.perleditor-test/src/org/epic/core/model/TestSourceFile.java @@ -54,10 +54,10 @@ private void _testFile(String inFile, String outFile) throws IOException buf.append(sub.getName()); buf.append(':'); buf.append(sub.getBlockLevel()); - buf.append('\n'); + buf.append(String.format("%n")); } buf.append('}'); - buf.append('\n'); + buf.append(String.format("%n")); } /* diff --git a/org.epic.perleditor-test/src/org/epic/perleditor/editors/TestPerlPartitioner.java b/org.epic.perleditor-test/src/org/epic/perleditor/editors/TestPerlPartitioner.java index e90a12ef..7e337580 100644 --- a/org.epic.perleditor-test/src/org/epic/perleditor/editors/TestPerlPartitioner.java +++ b/org.epic.perleditor-test/src/org/epic/perleditor/editors/TestPerlPartitioner.java @@ -6,9 +6,10 @@ public class TestPerlPartitioner extends BaseTestCase { + // this test expects unix newlines public void testSyntax() throws Exception { - Document doc = new Document(readFile("workspace/EPICTest/syntax.pl")); + Document doc = new Document(readFile("workspace/EPICTest/syntax.pl").replace("\r","")); PerlPartitioner partitioner = new PerlPartitioner(new Log(), doc); ITypedRegion[] partitioning = @@ -30,7 +31,7 @@ public void testSyntax() throws Exception buf.append('\n'); } - String expected = readFile("test.in/TestPerlPartitioner-expected.txt"); + String expected = readFile("test.in/TestPerlPartitioner-expected.txt").replace("\r",""); assertEquals(expected, buf.toString()); //System.err.println(buf); } diff --git a/org.epic.perleditor-test/src/org/epic/perleditor/editors/util/PerlValidatorStub.java b/org.epic.perleditor-test/src/org/epic/perleditor/editors/util/PerlValidatorStub.java index eae45e80..9918d7ac 100644 --- a/org.epic.perleditor-test/src/org/epic/perleditor/editors/util/PerlValidatorStub.java +++ b/org.epic.perleditor-test/src/org/epic/perleditor/editors/util/PerlValidatorStub.java @@ -32,7 +32,7 @@ protected void brokenPipe(IOException e) throws IOException { if (e.getMessage().indexOf("Broken pipe") == 0 || - e.getMessage().indexOf("Die Pipe wurde beendet") == 0) + e.getMessage().indexOf("Die Pipe ") == 0) { PerlValidatorStub.gotBrokenPipe = true; } diff --git a/org.epic.perleditor-test/test.properties b/org.epic.perleditor-test/test.properties index 58507c65..14b19d33 100644 --- a/org.epic.perleditor-test/test.properties +++ b/org.epic.perleditor-test/test.properties @@ -2,7 +2,7 @@ # See README.txt. # Path to the Perl interpreter -org.epic.perleditor-test.perl = /usr/bin/perl +org.epic.perleditor-test.perl = perl # TestPerlMultiLexer is very machine-specific, disable it to avoid false alarms org.epic.perleditor-test.TestPerlMultiLexer.enabled = false \ No newline at end of file