Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java')
-rw-r--r--codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java
index 2ca96c3b310..d16fc8c1a63 100644
--- a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java
+++ b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/test/CodanTestCase.java
@@ -18,10 +18,13 @@ import java.util.ArrayList;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
@@ -30,6 +33,7 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
/**
* TODO: add description
@@ -39,6 +43,8 @@ public class CodanTestCase extends BaseTestCase {
protected File tmpDir;
protected ICProject cproject;
protected File currentFile;
+ protected ICElement currentCElem;
+ protected IFile currentIFile;
/**
*
@@ -183,6 +189,18 @@ public class CodanTestCase extends BaseTestCase {
}
public File loadcode(String code, boolean cpp) {
+ String fileKey = "@file:"; //$NON-NLS-1$
+ int indf = code.indexOf(fileKey);
+ if (indf >= 0) {
+ int sep = code.indexOf('\n');
+ if (sep != -1) {
+ String line = code.substring(0, sep);
+ code = code.substring(sep + 1);
+ String fileName = line.substring(indf + fileKey.length())
+ .trim();
+ return loadcode(code, new File(tmpDir, fileName));
+ }
+ }
String ext = cpp ? ".cpp" : ".c"; //$NON-NLS-1$ //$NON-NLS-2$
File testFile = null;
try {
@@ -211,10 +229,16 @@ public class CodanTestCase extends BaseTestCase {
// hmm
fail(e.getMessage());
}
+ currentCElem = cproject
+ .findElement(new Path(currentFile.toString()));
+ currentIFile = (IFile) currentCElem.getResource();
return testFile;
} catch (IOException e) {
fail("Cannot save test: " + testFile + ": " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
return null;
+ } catch (CModelException e) {
+ fail("Cannot find file: " + testFile + ": " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
+ return null;
}
}

Back to the top