mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-21 21:52:10 +02:00
Fail test if there are any files left over in the workspace directory
Some tests sort of clean up after themselves, but still leave files around. Part of #117
This commit is contained in:
parent
46e9c97372
commit
858a194b68
4 changed files with 42 additions and 7 deletions
|
@ -32,7 +32,9 @@ import org.eclipse.cdt.core.model.ICProject;
|
|||
import org.eclipse.cdt.core.model.IPathEntry;
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.core.testplugin.CProjectHelper;
|
||||
import org.eclipse.cdt.core.testplugin.ResourceHelper;
|
||||
import org.eclipse.cdt.core.testplugin.TestScannerProvider;
|
||||
import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
|
||||
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
|
@ -147,7 +149,9 @@ public class Bug246129 extends IndexTestBase {
|
|||
fExternalIncludeFolder.delete();
|
||||
|
||||
fTmpDir.delete();
|
||||
|
||||
ResourceHelper.cleanUp(getName());
|
||||
CProjectHelper.delete(fProject);
|
||||
BaseTestCase5.assertWorkspaceIsEmpty();
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.eclipse.cdt.core.index.IIndexBinding;
|
|||
import org.eclipse.cdt.core.index.IndexFilter;
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
import org.eclipse.cdt.core.testplugin.CProjectHelper;
|
||||
import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
|
||||
import org.eclipse.cdt.internal.core.index.CIndex;
|
||||
import org.eclipse.cdt.internal.core.pdom.PDOM;
|
||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
|
||||
|
@ -68,14 +69,12 @@ public class IndexSearchTest extends IndexTestBase {
|
|||
@Override
|
||||
public void tearDown() throws Exception {
|
||||
fIndex.releaseReadLock();
|
||||
CProjectHelper.delete(fProject);
|
||||
|
||||
BaseTestCase5.assertWorkspaceIsEmpty();
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
public void deleteProject() {
|
||||
if (fProject != null) {
|
||||
CProjectHelper.delete(fProject);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkIsClass(IIndexBinding binding) {
|
||||
assertTrue(binding instanceof ICPPClassType);
|
||||
|
|
|
@ -41,7 +41,7 @@ public abstract class IndexTestBase extends BaseTestCase {
|
|||
workspace.run(new IWorkspaceRunnable() {
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
String name = "IndexTest_" + System.currentTimeMillis();
|
||||
String name = "IndexTest_" + getName() + "_" + System.currentTimeMillis();
|
||||
if (useCpp) {
|
||||
result[0] = CProjectHelper.createCCProject(name, null, IPDOMManager.ID_NO_INDEXER);
|
||||
} else {
|
||||
|
|
|
@ -24,7 +24,10 @@ import static org.junit.jupiter.api.Assertions.fail;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Deque;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
import org.eclipse.cdt.core.dom.ast.IValue;
|
||||
|
@ -39,12 +42,14 @@ import org.eclipse.cdt.internal.core.pdom.CModelListener;
|
|||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.MultiStatus;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
|
@ -140,6 +145,33 @@ public abstract class BaseTestCase5 {
|
|||
BaseTestCase5.removeLeftOverProjects();
|
||||
}
|
||||
|
||||
/**
|
||||
* assert that the virtual workspace is empty and that
|
||||
* there are no files left on disk in the workspace directory
|
||||
* this latter one is important because a new project can
|
||||
* be created with the same named and then those old files
|
||||
* will end up part of the project unexpectedly
|
||||
*/
|
||||
@AfterAll
|
||||
public static void assertWorkspaceIsEmpty() throws CoreException {
|
||||
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
|
||||
// use lists because error messages are nicer
|
||||
assertEquals(List.of(), Arrays.asList(root.members()));
|
||||
|
||||
File workspaceFile = root.getLocation().toFile();
|
||||
|
||||
// Special permission for an empty "tmp" directory so
|
||||
// that ResourceHelper.createTemporaryFolder() does not
|
||||
// need to be reworked
|
||||
File file = new File(workspaceFile, "tmp");
|
||||
List<String> permitted = new ArrayList<>(List.of(".metadata"));
|
||||
if (file.isDirectory()) {
|
||||
assertEquals(List.of(), Arrays.asList(file.list()));
|
||||
permitted.add("tmp");
|
||||
}
|
||||
assertEquals(List.of(), Arrays.asList(workspaceFile.list((dir, name) -> !permitted.contains(name))));
|
||||
}
|
||||
|
||||
protected void deleteOnTearDown(File file) {
|
||||
filesToDeleteOnTearDown.add(file);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue