Bug 480973: [UnitTest] NPE in test execution when test file is not found
we did not correctly report errors when test files are not available.
NPE was just hiding this issue.
Change-Id: Ibc2954afb1263a05f0f2decd1ed58d66f09725f8
diff --git a/plugins/org.eclipse.ease.modules.unittest.ui/src/org/eclipse/ease/modules/unittest/ui/views/SuiteRuntimeInformation.java b/plugins/org.eclipse.ease.modules.unittest.ui/src/org/eclipse/ease/modules/unittest/ui/views/SuiteRuntimeInformation.java
index 77ef927..1d6b50d 100644
--- a/plugins/org.eclipse.ease.modules.unittest.ui/src/org/eclipse/ease/modules/unittest/ui/views/SuiteRuntimeInformation.java
+++ b/plugins/org.eclipse.ease.modules.unittest.ui/src/org/eclipse/ease/modules/unittest/ui/views/SuiteRuntimeInformation.java
@@ -161,7 +161,10 @@
if (file instanceof File)
return ((File) file).getAbsolutePath();
- return file.toString();
+ if (file != null)
+ return file.toString();
+
+ return "<undefind>";
}
private synchronized void addTiming(final String fileIdentifier, final long timing) {
diff --git a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestFile.java b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestFile.java
index 835c341..e498b23 100644
--- a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestFile.java
+++ b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestFile.java
@@ -40,6 +40,14 @@
@Override
protected IStatus run(final IProgressMonitor monitor) {
+ Object testFile = ResourceTools.resolveFile(fFileLocation, getTestSuite().getModel().getFile(), true);
+ if (testFile == null) {
+ // no test file available
+ setStatus(TestStatus.FAILURE);
+ getTestSuite().addTestResult(TestStatus.FAILURE, "Test file \"" + fFileLocation + "\" not found");
+ return Status.CANCEL_STATUS;
+ }
+
// clear old tests
reset();
setStatus(TestStatus.RUNNING);
@@ -86,8 +94,7 @@
}
// execute test code
- final ScriptResult testFileResult = getScriptEngine().executeSync(
- ResourceTools.resolveFile(fFileLocation, getTestSuite().getModel().getFile(), true));
+ final ScriptResult testFileResult = getScriptEngine().executeSync(testFile);
if (testFileResult.hasException()) {
// this is probably an exception due to calling exit()
if (!(testFileResult.getException() instanceof ExitException)) {