Skip to content

Commit fdb2fa5

Browse files
EcljpseB0Tjukzi
authored andcommitted
abstract Widget tests: take screenshot before dispose
#1518
1 parent b8ec749 commit fdb2fa5

File tree

7 files changed

+39
-44
lines changed

7 files changed

+39
-44
lines changed

bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4937,7 +4937,6 @@ public static void error (int code, Throwable throwable, String detail) {
49374937
case ERROR_CANNOT_SET_TEXT:
49384938
case ERROR_ITEM_NOT_ADDED:
49394939
case ERROR_ITEM_NOT_REMOVED:
4940-
case ERROR_NO_HANDLES:
49414940
//FALL THROUGH
49424941

49434942
/* SWT Errors (fatal, may occur only on some platforms) */
@@ -4949,6 +4948,10 @@ public static void error (int code, Throwable throwable, String detail) {
49494948
error.throwable = throwable;
49504949
throw error;
49514950
}
4951+
case ERROR_NO_HANDLES:
4952+
SWTError error = new SWTError (code, message);
4953+
error.throwable = throwable;
4954+
throw error;
49524955
}
49534956

49544957
/* Unknown/Undefined Error */

tests/org.eclipse.swt.tests.win32/JUnit Tests/org/eclipse/swt/tests/win32/KeyboardLayoutTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,12 @@ public void setUp() {
255255

256256
@After
257257
public void tearDown() {
258-
shell.dispose();
259-
display.dispose();
258+
if (shell != null) {
259+
shell.dispose();
260+
}
261+
if (display != null) {
262+
display.dispose();
263+
}
260264
}
261265

262266
protected static void failOnApiError(String name) {

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_browser_Browser.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
import org.eclipse.swt.layout.FillLayout;
7777
import org.eclipse.swt.widgets.Display;
7878
import org.eclipse.swt.widgets.Shell;
79-
import org.junit.After;
8079
import org.junit.Before;
8180
import org.junit.FixMethodOrder;
8281
import org.junit.Rule;
@@ -174,9 +173,9 @@ public void setUp() {
174173
}
175174

176175
@Override
177-
@After
178-
public void tearDown() {
179-
super.tearDown();
176+
protected void afterDispose(Display display) {
177+
super.afterDispose(display);
178+
180179
Shell[] shells = Display.getDefault().getShells();
181180
int disposedShells = 0;
182181
for (Shell shell : shells) {

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,9 @@
7676
import org.eclipse.swt.widgets.Event;
7777
import org.eclipse.swt.widgets.ScrollBar;
7878
import org.eclipse.swt.widgets.Widget;
79-
import org.eclipse.test.Screenshots;
8079
import org.junit.Assume;
8180
import org.junit.Before;
82-
import org.junit.Rule;
8381
import org.junit.Test;
84-
import org.junit.rules.TestWatcher;
8582

8683
/**
8784
* Automated Test Suite for class org.eclipse.swt.custom.StyledText
@@ -103,9 +100,6 @@ public class Test_org_eclipse_swt_custom_StyledText extends Test_org_eclipse_swt
103100
private boolean listenerCalled;
104101
private boolean listener2Called;
105102

106-
@Rule
107-
public TestWatcher screenshotRule = Screenshots.onFailure();
108-
109103
@Override
110104
@Before
111105
public void setUp() {

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText_multiCaretsSelections.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@
3939
*/
4040
public class Test_org_eclipse_swt_custom_StyledText_multiCaretsSelections {
4141

42-
@Rule
43-
public TestWatcher screenshotRule = Screenshots.onFailure();
44-
4542
Shell shell;
4643
StyledText text;
4744
GC gc;
@@ -53,10 +50,12 @@ public void setUp() {
5350
gc = new GC(text);
5451
}
5552

53+
@Rule
54+
public TestWatcher screenshotRule = Screenshots.onFailure(() -> this.shell);
55+
5656
@After
5757
public void tearDown() {
5858
gc.dispose();
59-
shell.dispose();
6059
}
6160
@Test
6261
public void test_MultiSelectionEdit() {

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Tree.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,8 @@
3333
import org.eclipse.swt.widgets.Tree;
3434
import org.eclipse.swt.widgets.TreeColumn;
3535
import org.eclipse.swt.widgets.TreeItem;
36-
import org.eclipse.test.Screenshots;
3736
import org.junit.Before;
38-
import org.junit.Rule;
3937
import org.junit.Test;
40-
import org.junit.rules.TestName;
41-
import org.junit.rules.TestWatcher;
4238

4339
/**
4440
* Automated Test Suite for class org.eclipse.swt.widgets.Tree
@@ -47,8 +43,7 @@
4743
*/
4844
public class Test_org_eclipse_swt_widgets_Tree extends Test_org_eclipse_swt_widgets_Composite {
4945

50-
@Rule
51-
public TestName testName = new TestName();
46+
private Tree tree;
5247

5348
@Override
5449
@Before
@@ -750,9 +745,6 @@ public void test_showSelection() {
750745
tree.showSelection();
751746
}
752747

753-
/* custom */
754-
public Tree tree;
755-
756748
/**
757749
* Clean up the environment for a new test.
758750
*
@@ -916,9 +908,6 @@ public void test_disposeItemNotTriggerSelection() {
916908
assertFalse(selectionCalled[0]);
917909
}
918910

919-
@Rule
920-
public TestWatcher screenshotRule = Screenshots.onFailure();
921-
922911
@Test
923912
public void test_Virtual() {
924913
tree.dispose();

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Widget.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.eclipse.swt.widgets.Listener;
3232
import org.eclipse.swt.widgets.Shell;
3333
import org.eclipse.swt.widgets.Widget;
34+
import org.eclipse.test.Screenshots.ScreenshotOnFailure;
3435
import org.junit.After;
3536
import org.junit.Before;
3637
import org.junit.Rule;
@@ -42,7 +43,10 @@
4243
*
4344
* @see org.eclipse.swt.widgets.Widget
4445
*/
45-
public class Test_org_eclipse_swt_widgets_Widget{
46+
abstract class Test_org_eclipse_swt_widgets_Widget{
47+
protected Shell shell;
48+
private Widget widget;
49+
4650
// Use this variable to help validate callbacks
4751
boolean listenerCalled;
4852
/**
@@ -56,17 +60,27 @@ public void setUp() {
5660
shell = new Shell();
5761
}
5862

63+
@Rule
64+
public ScreenshotOnFailure screenshotRule = new ScreenshotOnFailure(()-> this.shell) {
65+
@Override
66+
public void dispose() {
67+
Display display = null;
68+
if (!disposedIntentionally) {
69+
assertFalse(shell.isDisposed());
70+
display = shell.getDisplay();
71+
}
72+
super.dispose();
73+
afterDispose(display);
74+
}
75+
};
76+
5977
@After
6078
public void tearDown() {
6179
if (widget != null) {
6280
assertEquals(disposedIntentionally, widget.isDisposed());
6381
}
64-
Display display = null;
65-
if (!disposedIntentionally) {
66-
assertFalse(shell.isDisposed());
67-
display = shell.getDisplay();
68-
}
69-
shell.dispose();
82+
}
83+
protected void afterDispose(Display display) {
7084
if (widget != null) {
7185
assertTrue(widget.isDisposed());
7286
if(SwtTestUtil.isLinux && display != null) {
@@ -83,10 +97,7 @@ public void tearDown() {
8397
assertNotExists(getWidgetTable(display), shell);
8498
}
8599
}
86-
@Test
87-
public void test_ConstructorLorg_eclipse_swt_widgets_WidgetI() {
88-
// abstract class
89-
}
100+
90101
@Test
91102
public void test_addDisposeListenerLorg_eclipse_swt_events_DisposeListener() {
92103
DisposeListener listener = e -> {
@@ -174,10 +185,6 @@ public void test_toString() {
174185
assertTrue(widget.toString().length() > 0);
175186
}
176187

177-
/* custom */
178-
public Shell shell;
179-
private Widget widget;
180-
181188
protected void setWidget(Widget w) {
182189
widget = w;
183190
}

0 commit comments

Comments
 (0)