mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-21 21:52:10 +02:00
Fix CDescriptorOldTests.testDescriptorCreation instability
This old test had a race condition. The failing test was trying to verify that CDTPROJECT_ADDED was received, but if there was a delay in the startup then another event would come in later. So for this test use the first received event, for the remaining tests use the last received event. Part of #117
This commit is contained in:
parent
128de5d6cd
commit
d345323f49
1 changed files with 39 additions and 36 deletions
|
@ -16,6 +16,9 @@
|
||||||
|
|
||||||
package org.eclipse.cdt.core.cdescriptor.tests;
|
package org.eclipse.cdt.core.cdescriptor.tests;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.CDescriptorEvent;
|
import org.eclipse.cdt.core.CDescriptorEvent;
|
||||||
import org.eclipse.cdt.core.CProjectNature;
|
import org.eclipse.cdt.core.CProjectNature;
|
||||||
|
@ -55,7 +58,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
static String projectId = CTestPlugin.PLUGIN_ID + ".TestProject";
|
static String projectId = CTestPlugin.PLUGIN_ID + ".TestProject";
|
||||||
static IProject fProject;
|
static IProject fProject;
|
||||||
static CDescriptorListener listener = new CDescriptorListener();
|
static CDescriptorListener listener = new CDescriptorListener();
|
||||||
static CDescriptorEvent fLastEvent;
|
static final List<CDescriptorEvent> fEvents = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for CDescriptorTest.
|
* Constructor for CDescriptorTest.
|
||||||
|
@ -113,7 +116,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void descriptorChanged(CDescriptorEvent event) {
|
public void descriptorChanged(CDescriptorEvent event) {
|
||||||
fLastEvent = event;
|
fEvents.add(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,11 +158,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
}, null);
|
}, null);
|
||||||
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertFalse(fEvents.isEmpty());
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(0).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_ADDED);
|
Assert.assertEquals(fEvents.get(0).getType(), CDescriptorEvent.CDTPROJECT_ADDED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), 0);
|
Assert.assertEquals(fEvents.get(0).getFlags(), 0);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
|
|
||||||
Assert.assertEquals(fProject, desc.getProject());
|
Assert.assertEquals(fProject, desc.getProject());
|
||||||
Assert.assertEquals("*", desc.getPlatform());
|
Assert.assertEquals("*", desc.getPlatform());
|
||||||
|
@ -185,7 +188,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
Element data = desc.getProjectData("testElement0");
|
Element data = desc.getProjectData("testElement0");
|
||||||
data.appendChild(data.getOwnerDocument().createElement("test"));
|
data.appendChild(data.getOwnerDocument().createElement("test"));
|
||||||
desc.saveProjectData();
|
desc.saveProjectData();
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=185930
|
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=185930
|
||||||
|
@ -254,7 +257,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
lastLength += threads.length; // Update last lengths to what we expect
|
lastLength += threads.length; // Update last lengths to what we expect
|
||||||
assertEquals("Iteration count: " + i, lastLength, lengthAfter);
|
assertEquals("Iteration count: " + i, lastLength, lengthAfter);
|
||||||
|
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,7 +301,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
desc.saveProjectData();
|
desc.saveProjectData();
|
||||||
t.join();
|
t.join();
|
||||||
|
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,11 +321,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
||||||
ICExtensionReference extRef = desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
|
ICExtensionReference extRef = desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertNotNull(fEvents);
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
|
|
||||||
Assert.assertEquals("org.eclipse.cdt.testextension", extRef.getExtension());
|
Assert.assertEquals("org.eclipse.cdt.testextension", extRef.getExtension());
|
||||||
Assert.assertEquals("org.eclipse.cdt.testextensionID", extRef.getID());
|
Assert.assertEquals("org.eclipse.cdt.testextensionID", extRef.getID());
|
||||||
|
@ -341,11 +344,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
|
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
|
||||||
extRef[0].setExtensionData("testKey", "testValue");
|
extRef[0].setExtensionData("testKey", "testValue");
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertNotNull(fEvents);
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), 0);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getFlags(), 0);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
|
|
||||||
Assert.assertEquals("testValue", extRef[0].getExtensionData("testKey"));
|
Assert.assertEquals("testValue", extRef[0].getExtensionData("testKey"));
|
||||||
extRef[0].setExtensionData("testKey", null);
|
extRef[0].setExtensionData("testKey", null);
|
||||||
|
@ -357,11 +360,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
|
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
|
||||||
desc.remove(extRef[0]);
|
desc.remove(extRef[0]);
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertNotNull(fEvents);
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,11 +374,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
data.appendChild(data.getOwnerDocument().createElement("test"));
|
data.appendChild(data.getOwnerDocument().createElement("test"));
|
||||||
desc.saveProjectData();
|
desc.saveProjectData();
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertNotNull(fEvents);
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), 0);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getFlags(), 0);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testProjectDataDelete() throws Exception {
|
public void testProjectDataDelete() throws Exception {
|
||||||
|
@ -386,11 +389,11 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
data.removeChild(data.getFirstChild());
|
data.removeChild(data.getFirstChild());
|
||||||
desc.saveProjectData();
|
desc.saveProjectData();
|
||||||
|
|
||||||
Assert.assertNotNull(fLastEvent);
|
Assert.assertNotNull(fEvents);
|
||||||
Assert.assertEquals(fLastEvent.getDescriptor(), desc);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getDescriptor(), desc);
|
||||||
Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
|
||||||
Assert.assertEquals(fLastEvent.getFlags(), 0);
|
Assert.assertEquals(fEvents.get(fEvents.size() - 1).getFlags(), 0);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testProjectStorageDelete() throws Exception {
|
public void testProjectStorageDelete() throws Exception {
|
||||||
|
@ -410,7 +413,7 @@ public class CDescriptorOldTests extends TestCase {
|
||||||
desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
|
||||||
data = desc.getProjectData("testElement");
|
data = desc.getProjectData("testElement");
|
||||||
assertTrue(data.getChildNodes().getLength() == 0);
|
assertTrue(data.getChildNodes().getLength() == 0);
|
||||||
fLastEvent = null;
|
fEvents.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue