From ffdbdb54861f352d196652271bc242eb0b818117 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Thu, 25 Aug 2022 14:50:30 +0200 Subject: [PATCH] 205: getLaunchElementFor with binary class file Task-Url: https://github.com/pitest/pitclipse/issues/205 --- .../pageobjects/PackageExplorer.java | 4 ++++ .../ui/behaviours/steps/PitclipseSteps.java | 2 +- .../ui/tests/AbstractPitclipseSWTBotTest.java | 4 ++++ .../ui/tests/PitclipseUiRunnerTest.java | 20 +++++++++++++++++++ .../.classpath | 1 + .../binarytests/README | 1 + 6 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/testprojects/org.pitest.pitclipse.testprojects.nonjava/binarytests/README diff --git a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/pageobjects/PackageExplorer.java b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/pageobjects/PackageExplorer.java index 2994ae84..c0d4d114 100644 --- a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/pageobjects/PackageExplorer.java +++ b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/pageobjects/PackageExplorer.java @@ -179,4 +179,8 @@ public void selectProjectFile(String projectName, String fileName) { SWTBotTreeItem project = getProject(projectName); project.select(fileName); } + + public void selectProjectElement(String... path) { + bot.tree().expandNode(path).select(); + } } diff --git a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/steps/PitclipseSteps.java b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/steps/PitclipseSteps.java index 7933b264..9e38869c 100644 --- a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/steps/PitclipseSteps.java +++ b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/behaviours/steps/PitclipseSteps.java @@ -170,7 +170,7 @@ public void runtimeOptionsMatch(Map configMap) { * Runs pit after the given runnable is run and waits for it to finish. * @param runnable which is executed prior to pit */ - private void runPitAndWaitForIt(Runnable runnable) { + public void runPitAndWaitForIt(Runnable runnable) { assertNoErrorsInWorkspace(); // reset Summary result PitSummary.INSTANCE.resetSummary(); diff --git a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/AbstractPitclipseSWTBotTest.java b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/AbstractPitclipseSWTBotTest.java index d2a5f131..742717c6 100644 --- a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/AbstractPitclipseSWTBotTest.java +++ b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/AbstractPitclipseSWTBotTest.java @@ -336,6 +336,10 @@ protected static void runProjectTest(final String projectName) throws CoreExcept new PitclipseSteps().runProjectTest(projectName); } + protected static void runFreeStyleTest(Runnable runnable) throws CoreException { + new PitclipseSteps().runPitAndWaitForIt(runnable); + } + /** * Asserts that the only active mutator was the given mutator. * @param mutators which should be the only active mutator diff --git a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/PitclipseUiRunnerTest.java b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/PitclipseUiRunnerTest.java index 7829a9ce..599a2960 100644 --- a/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/PitclipseUiRunnerTest.java +++ b/tests/org.pitest.pitclipse.ui.tests/src/org/pitest/pitclipse/ui/tests/PitclipseUiRunnerTest.java @@ -19,12 +19,17 @@ public class PitclipseUiRunnerTest extends AbstractPitclipseSWTBotTest { private static final String TEST_PROJECT = "org.pitest.pitclipse.testprojects.emptyclasses"; + private static final String NON_JAVA_PROJECT = "org.pitest.pitclipse.testprojects.nonjava"; + private static final String FOO_BAR_PACKAGE = "foo.bar"; private static final String FOO_CLASS = "Foo"; private static final String FOO_TEST_CLASS = "FooTest"; @BeforeClass public static void setupJavaProject() throws CoreException { + // NON_JAVA_PROJECT contains the folder "binarytests" + // used as an external library from FOO_PROJECT + importTestProject(NON_JAVA_PROJECT); importTestProject(TEST_PROJECT); openEditor(FOO_CLASS, FOO_BAR_PACKAGE, TEST_PROJECT); openEditor(FOO_TEST_CLASS, FOO_BAR_PACKAGE, TEST_PROJECT); @@ -175,4 +180,19 @@ public void runSingleFieldShowsDialogNoTestsFound() throws CoreException { PAGES.getRunMenu().runPit(); new NoTestsFoundDialog(bot).assertAppears(); } + + @Test + public void runBinaryTest() throws CoreException { + removeMethods(FOO_CLASS, FOO_BAR_PACKAGE, TEST_PROJECT); + removeMethods(FOO_TEST_CLASS, FOO_BAR_PACKAGE, TEST_PROJECT); + runFreeStyleTest(() -> + PAGES.getPackageExplorer().selectProjectElement(TEST_PROJECT, + "Referenced Libraries", + "binarytests - org.pitest.pitclipse.testprojects.nonjava", + "(default package)", + "EmptyBinaryTest.class") + ); + mutationsAre(Collections.emptyList()); + noCoverageReportGenerated(); + } } diff --git a/tests/testprojects/org.pitest.pitclipse.testprojects.emptyclasses/.classpath b/tests/testprojects/org.pitest.pitclipse.testprojects.emptyclasses/.classpath index 373dce40..0b9e1352 100644 --- a/tests/testprojects/org.pitest.pitclipse.testprojects.emptyclasses/.classpath +++ b/tests/testprojects/org.pitest.pitclipse.testprojects.emptyclasses/.classpath @@ -4,4 +4,5 @@ + diff --git a/tests/testprojects/org.pitest.pitclipse.testprojects.nonjava/binarytests/README b/tests/testprojects/org.pitest.pitclipse.testprojects.nonjava/binarytests/README new file mode 100644 index 00000000..35d172d8 --- /dev/null +++ b/tests/testprojects/org.pitest.pitclipse.testprojects.nonjava/binarytests/README @@ -0,0 +1 @@ +This contains an empty test file in binary shape \ No newline at end of file