`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

Reply via email to