`test.robot.javafx.scene.TooltipTest` modifies the scene graph on a test worker
thread, which can corrupt the scene graph and leads to test failures such as:
TooltipTest > testCssStylesheetChangeTooltip() FAILED
java.lang.AssertionError
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/com.sun.javafx.css.StyleMap.getCascadingStyles(StyleMap.java:144)
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/javafx.scene.CssStyleHelper.resetToInitialValues(CssStyleHelper.java:490)
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/javafx.scene.CssStyleHelper.createStyleHelper(CssStyleHelper.java:193)
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/javafx.scene.Node.reapplyCss(Node.java:9996)
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/javafx.scene.Node.reapplyCSS(Node.java:9959)
at
[javafx.graphics@27-ea](mailto:javafx.graphics@27-ea)/javafx.scene.Scene$10.onChanged(Scene.java:1682)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/com.sun.javafx.collections.TrackableObservableList.lambda$new$0(TrackableObservableList.java:44)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:162)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
at
[javafx.base@27-ea](mailto:javafx.base@27-ea)/javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
or
TooltipTest > testCssStylesheetChangeTooltip() STANDARD_ERROR
Exception in thread "JavaFX Application Thread"
java.lang.NullPointerException: Cannot invoke "java.util.List.clear()" because
"this.selectors" is null
at
[javafx.graphics@27-internal](mailto:javafx.graphics@27-internal)/com.sun.javafx.css.StyleMap.getCascadingStyles(StyleMap.java:148)
at
[javafx.graphics@27-internal](mailto:javafx.graphics@27-internal)/javafx.scene.CssStyleHelper.resetToInitialValues(CssStyleHelper.java:490)
at
[javafx.graphics@27-internal](mailto:javafx.graphics@27-internal)/javafx.scene.CssStyleHelper.createStyleHelper(CssStyleHelper.java:193)
at
[javafx.graphics@27-internal](mailto:javafx.graphics@27-internal)/javafx.scene.Node.reapplyCss(Node.java:9996)
...
This test bug is solved by making sure that the scene graph is only accessed on
the FX application thread.
Run the test with:
./gradlew -PFULL_TEST=true -PUSE_ROBOT=true :systemTests:test --tests
test.robot.javafx.scene.TooltipTest.testCssStylesheetChangeTooltip
-------------
Commit messages:
- Access scene graph on FX application thread
Changes: https://git.openjdk.org/jfx/pull/2066/files
Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2066&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8377189
Stats: 115 lines in 1 file changed: 56 ins; 26 del; 33 mod
Patch: https://git.openjdk.org/jfx/pull/2066.diff
Fetch: git fetch https://git.openjdk.org/jfx.git pull/2066/head:pull/2066
PR: https://git.openjdk.org/jfx/pull/2066