jspecify/jspecify-reference-checker

Build race or other flakiness, at least on main-eisop

cpovirk opened this issue · 0 comments

I'd never seen this before, but I saw it today in one of the several builds that I performed. The compileTestJava step apparently failed to find org.checkerframework.framework.test.

My guess would be that the build didn't wait for that to be built: We depend on the CF test framework from our tests, and apparently jspecifySamplesTest automatically picks up the test deps... but maybe doesn't wait for them to become available?

testImplementation libs.checkerFramework.framework.test

shouldRunAfter test

Note that I did ctrl+C a build when I had the flag wrong. I would hope that that does not matter, especially since I ran clean afterward, but maybe I needed to also clean the checker-framework project or something?? Anyway, the compilation worked fine when I re-ran it.

$ git clone git@github.com:jspecify/jspecify-reference-checker.git

$ git clone git@github.com:jspecify/jspecify.git -b samples-google-prototype

$ cd jspecify-reference-checker

$ git co main-eisop

$ ./gradlew jspecifySamplesTest
git clone --depth 1 --single-branch https://github.com/jspecify/jdk.git ../jdk 
Cloning into '../jdk'...
Updating files: 100% (66472/66472)
Updating files: 100% (66472/66472), done.
git clone https://github.com/eisop/checker-framework.git ../checker-framework 
Cloning into '../checker-framework'...
> Task :processResources
> Task :checker-framework:setLocalRepo
> Task :checker-framework:installGitHooks
> Task :conformance-test-framework:compileJava
> Task :processTestResources NO-SOURCE
> Task :unzipConformanceTestSuite
> Task :conformance-test-framework:processResources NO-SOURCE
> Task :conformance-test-framework:classes
> Task :conformance-test-framework:jar
> Task :checker-framework:checker-qual:compileJava
> Task :checker-framework:javacutil:compileJava
> Task :checker-framework:dataflow:compileJava
^C

$ ./gradlew clean
> Task :clean
> Task :conformance-test-framework:clean

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.6/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

$ ./gradlew jspecifySamplesTest --include-build ../jspecify
> Task :processResources
> Task :checker-framework:setLocalRepo
> Task :processTestResources NO-SOURCE
> Task :checker-framework:installGitHooks UP-TO-DATE
> Task :conformance-test-framework:processResources NO-SOURCE
> Task :checker-framework:checker-qual:compileJava UP-TO-DATE
> Task :checker-framework:javacutil:compileJava UP-TO-DATE
> Task :checker-framework:dataflow:compileJava UP-TO-DATE
> Task :checker-framework:checker-util:compileJava
> Task :jspecify:compileJava
> Task :jspecify:processResources NO-SOURCE
> Task :jspecify:classes
> Task :conformance-test-framework:compileJava
> Task :conformance-test-framework:classes
> Task :conformance-test-framework:jar
> Task :jspecify:compileJava9Java
> Task :jspecify:processJava9Resources NO-SOURCE
> Task :jspecify:java9Classes
> Task :jspecify:jar
> Task :jspecify:conformance-tests:compileDepsJava
> Task :jspecify:conformance-tests:processDepsResources NO-SOURCE
> Task :jspecify:conformance-tests:depsClasses
> Task :jspecify:conformance-tests:depsJar
> Task :checker-framework:framework:compileJava
> Task :jspecify:conformance-tests:distZip
> Task :unzipConformanceTestSuite
> Task :checker-framework:checker:compileJava
> Task :compileJava
> Task :classes
> Task :checker-framework:framework-test:compileJava
> Task :checker-framework:framework-test:processResources NO-SOURCE
> Task :checker-framework:framework-test:classes
> Task :checker-framework:framework-test:jar
> Task :checker-framework:checker-qual:processResources NO-SOURCE
> Task :checker-framework:checker-qual:classes UP-TO-DATE
> Task :checker-framework:checker-qual:jar
> Task :checker-framework:checker-util:processResources NO-SOURCE
> Task :checker-framework:checker-util:classes
> Task :checker-framework:checker-util:jar
> Task :checker-framework:javacutil:processResources NO-SOURCE
> Task :checker-framework:javacutil:classes UP-TO-DATE
> Task :checker-framework:javacutil:jar
> Task :checker-framework:dataflow:processResources NO-SOURCE
> Task :checker-framework:dataflow:classes UP-TO-DATE
> Task :checker-framework:dataflow:jar
> Task :checker-framework:framework:cloneAnnotatedJdk

> Task :compileTestJava FAILED
/tmp/tmp.lTJt3OVSmR/jspecify-reference-checker/src/test/java/tests/ConformanceTest.java:35: error: package org.checkerframework.framework.test does not exist
import org.checkerframework.framework.test.TestConfiguration;
                                          ^
...