Skip to content

Commit

Permalink
Perform proper cleanup after working set wizard tests eclipse-platfor…
Browse files Browse the repository at this point in the history
…m#275

The tests for working set wizards change the workspace's working sets
without resetting them afterwards. Instead, they cleanup working sets
during test setup. In addition, workspace resources are cleaned up
selectively after test execution instead of cleaning up the workspace
resources into total.

This change addresses this a follows:
- Cleans up working set changes after test execution
- Improves resource cleanup by deleting all workspace resources
- Refactors test implementations by improving encapsulation in test
classes to avoid unwanted/undetected side effects that may be related to
random failures of UIEditWorkingSetWizardAuto.testEditPage
  • Loading branch information
HeikoKlare committed Jul 21, 2023
1 parent e869f85 commit 02a9980
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 121 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,66 +41,64 @@
* wizard page texts.
*/
@RunWith(JUnit4.class)
public class UIEditWorkingSetWizardAuto extends UIWorkingSetWizardsAuto {
IWorkingSetPage fDefaultEditPage;
public class UIEditWorkingSetWizardAuto extends UIWorkingSetWizardsAuto<WorkingSetEditWizard> {

public UIEditWorkingSetWizardAuto() {
super(UIEditWorkingSetWizardAuto.class.getSimpleName());
}

@Override
protected void doSetUp() throws Exception {
WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
.getWorkingSetRegistry();
fDefaultEditPage = registry.getDefaultWorkingSetPage();
fWizard = new WorkingSetEditWizard(fDefaultEditPage);
super.doSetUp();
protected WorkingSetEditWizard createWizardToTest() {
return new WorkingSetEditWizard(getDefaultEditPage());
}

private IWorkingSetPage getDefaultEditPage() {
WorkingSetRegistry registry = WorkbenchPlugin.getDefault().getWorkingSetRegistry();
return registry.getDefaultWorkingSetPage();
}

@Test
public void testEditPage() throws Throwable {
IWizardPage page = fWizardDialog.getCurrentPage();
IWizardPage page = getWizardDialog().getCurrentPage();
assertTrue(page instanceof IWorkingSetPage);

/*
* Verify that correct working set edit page is displayed
*/
assertSame(page.getClass(), fDefaultEditPage.getClass());
assertSame(page.getClass(), getDefaultEditPage().getClass());
/*
* Test initial page state
*/
assertFalse(page.canFlipToNextPage());
assertFalse(fWizard.canFinish());
assertFalse(getWizard().canFinish());
assertNull(page.getErrorMessage());
/*
* Test page state with preset page input
*/
IWorkingSetManager workingSetManager = fWorkbench
.getWorkingSetManager();
IWorkingSet workingSet = workingSetManager.createWorkingSet(
WORKING_SET_NAME_1, new IAdaptable[] { p1, f2 });
((WorkingSetEditWizard) fWizard).setSelection(workingSet);
IWorkingSetManager workingSetManager = fWorkbench.getWorkingSetManager();
IWorkingSet workingSet = workingSetManager.createWorkingSet(WORKING_SET_NAME_1,
new IAdaptable[] { getProject1(), getFileInProject2() });
getWizard().setSelection(workingSet);

List<Widget> widgets = getWidgets((Composite) page.getControl(), Text.class);
Text text = (Text) widgets.get(0);
assertEquals(WORKING_SET_NAME_1, text.getText());
assertFalse(page.canFlipToNextPage());
assertTrue(fWizard.canFinish());
assertTrue(getWizard().canFinish());
assertNull(page.getErrorMessage());
widgets = getWidgets((Composite) page.getControl(), Tree.class);
Tree tree = (Tree) widgets.get(0);
IWorkspace workspace = ResourcesPlugin.getWorkspace();
assertEquals(workspace.getRoot().getProjects().length, tree
.getItemCount());
assertEquals(workspace.getRoot().getProjects().length, tree.getItemCount());
setTextWidgetText(WORKING_SET_NAME_2, page);
assertTrue(fWizard.canFinish());
assertTrue(getWizard().canFinish());

/*
* Test page state with partial page input
*/
setTextWidgetText("", page);
assertFalse(page.canFlipToNextPage());
assertFalse(fWizard.canFinish());
assertFalse(getWizard().canFinish());
assertNotNull(page.getErrorMessage());

/*
Expand All @@ -109,17 +107,16 @@ public void testEditPage() throws Throwable {
setTextWidgetText(WORKING_SET_NAME_2, page);
checkTreeItems();
assertFalse(page.canFlipToNextPage());
assertTrue(fWizard.canFinish());
assertTrue(getWizard().canFinish());
assertNull(page.getErrorMessage());

fWizard.performFinish();
workingSet = ((WorkingSetEditWizard) fWizard).getSelection();
getWizard().performFinish();
workingSet = getWizard().getSelection();
IAdaptable[] workingSetItems = workingSet.getElements();
assertEquals(WORKING_SET_NAME_2, workingSet.getName());
assertTrue(ArrayUtil.contains(workingSetItems, p1));
assertTrue(ArrayUtil.contains(workingSetItems, p2));
assertTrue(ArrayUtil.contains(workingSetItems, getProject1()));
assertTrue(ArrayUtil.contains(workingSetItems, getProject2()));

DialogCheck.assertDialogTexts(fWizardDialog);
DialogCheck.assertDialogTexts(getWizardDialog());
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
import org.eclipse.ui.dialogs.IWorkingSetPage;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.dialogs.WorkingSetNewWizard;
Expand All @@ -43,21 +44,20 @@
* and wizard page texts.
*/
@RunWith(JUnit4.class)
public class UINewWorkingSetWizardAuto extends UIWorkingSetWizardsAuto {
public class UINewWorkingSetWizardAuto extends UIWorkingSetWizardsAuto<IWorkingSetNewWizard> {

public UINewWorkingSetWizardAuto() {
super(UINewWorkingSetWizardAuto.class.getSimpleName());
}

@Override
protected void doSetUp() throws Exception {
fWizard = getWorkbench().getWorkingSetManager().createWorkingSetNewWizard(null);
super.doSetUp();
protected IWorkingSetNewWizard createWizardToTest() {
return getWorkbench().getWorkingSetManager().createWorkingSetNewWizard(null);
}

@Test
public void testTypePage() throws Throwable {
IWizardPage page = fWizardDialog.getCurrentPage();
IWizardPage page = getWizardDialog().getCurrentPage();
WorkingSetDescriptor[] descriptors = getEditableWorkingSetDescriptors();

// the first page must be the type selection page iff there is more than one working set type
Expand All @@ -76,27 +76,27 @@ public void testTypePage() throws Throwable {
*/
assertEquals(descriptors.length, table.getItemCount());
assertFalse(typePage.canFlipToNextPage());
assertFalse(fWizard.canFinish());
assertFalse(getWizard().canFinish());
/*
* Test page state with page complete input
*/
table.setSelection(descriptors.length - 1);
table.notifyListeners(SWT.Selection, new Event());
assertTrue(typePage.canFlipToNextPage());
assertFalse(fWizard.canFinish());
assertFalse(getWizard().canFinish());

/*
* Check page texts
*/
DialogCheck.assertDialogTexts(fWizardDialog);
DialogCheck.assertDialogTexts(getWizardDialog());
}
}

@Test
public void testEditPage() throws Throwable {
WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
.getWorkingSetRegistry();
IWizardPage page = fWizardDialog.getCurrentPage();
IWizardPage page = getWizardDialog().getCurrentPage();
IWizardPage defaultEditPage = registry.getDefaultWorkingSetPage();
String defaultEditPageClassName = defaultEditPage.getClass().getName();
WorkingSetDescriptor[] descriptors = getEditableWorkingSetDescriptors();
Expand Down Expand Up @@ -131,9 +131,9 @@ public void testEditPage() throws Throwable {
}
}
assertTrue(found);
fWizardDialog.showPage(fWizard.getNextPage(page));
getWizardDialog().showPage(getWizard().getNextPage(page));
}
page = fWizardDialog.getCurrentPage();
page = getWizardDialog().getCurrentPage();
assertTrue(page instanceof IWorkingSetPage);

/*
Expand All @@ -144,7 +144,7 @@ public void testEditPage() throws Throwable {
* Test initial page state
*/
assertFalse(page.canFlipToNextPage());
assertFalse(fWizard.canFinish());
assertFalse(getWizard().canFinish());
assertNull(page.getErrorMessage());
assertNull(page.getMessage());

Expand All @@ -153,7 +153,7 @@ public void testEditPage() throws Throwable {
*/
setTextWidgetText(WORKING_SET_NAME_1, page);
assertFalse(page.canFlipToNextPage());
assertTrue(fWizard.canFinish()); // allow for empty sets
assertTrue(getWizard().canFinish()); // allow for empty sets
assertNull(page.getErrorMessage());
assertNotNull(page.getMessage());

Expand All @@ -162,25 +162,25 @@ public void testEditPage() throws Throwable {
*/
checkTreeItems();
assertFalse(page.canFlipToNextPage());
assertTrue(fWizard.canFinish());
assertTrue(getWizard().canFinish());
assertNull(page.getErrorMessage());
assertNull(page.getMessage());

fWizard.performFinish();
IWorkingSet workingSet = ((WorkingSetNewWizard) fWizard).getSelection();
getWizard().performFinish();
IWorkingSet workingSet = ((WorkingSetNewWizard) getWizard()).getSelection();
IAdaptable[] workingSetItems = workingSet.getElements();
assertEquals(WORKING_SET_NAME_1, workingSet.getName());

List<Widget> widgets = getWidgets((Composite) page.getControl(), Tree.class);
Tree tree = (Tree) widgets.get(0);
assertEquals(workingSetItems.length, tree.getItemCount());
assertTrue(ArrayUtil.contains(workingSetItems, p1));
assertTrue(ArrayUtil.contains(workingSetItems, p2));
assertTrue(ArrayUtil.contains(workingSetItems, getProject1()));
assertTrue(ArrayUtil.contains(workingSetItems, getProject2()));

/*
* Check page texts
*/
DialogCheck.assertDialogTexts(fWizardDialog);
DialogCheck.assertDialogTexts(getWizardDialog());
}
}

Loading

0 comments on commit 02a9980

Please sign in to comment.