Skip to content

Run all unit tests on CI - #1830

Merged
eed3si9n merged 4 commits into
sbt:developfrom
lrytz:ci-test-full
Sep 24, 2026
Merged

eed3si9n merged 4 commits into
sbt:developfrom
lrytz:ci-test-full

Conversation

@lrytz

@lrytz lrytz commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

In sbt 2, test only runs tests whose inputs changed since they last passed, and CI restores sbt's cache. The inputs are the test's classpath dependencies, so tests that load code by path never rerun: after deliberately breaking the compiler bridge and publishing it, test reported "No tests to run" for the bridge tests, while testFull failed. CI now uses testFull.

@lrytz

lrytz commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

CI failing on first commit shows that test caching is hiding an issue. The console test also hangs locally (compilerBridgeTest/Test/testOnly sbt.internal.inc.BasicBridgeSpec on current develop).

@eed3si9n eed3si9n left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@lrytz

lrytz commented Sep 24, 2026

Copy link
Copy Markdown
Contributor Author

Added a commit to set the extraTestDigests. With this dependency, test / testFull now also re-compile the bridge when it changes. I kept testFull for CI anyway.

@lrytz

This comment was marked as outdated.

Comment thread .github/workflows/ci.yml Outdated
lrytz and others added 4 commits September 24, 2026 19:07
In sbt 2, test only runs tests whose inputs changed since they last passed,
and CI restores sbt's cache. The inputs are the test's classpath
dependencies, so tests that load code by path never rerun: after
deliberately breaking the compiler bridge and publishing it, test reported
"No tests to run" for the bridge tests, while testFull failed. CI now uses
testFull.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The test passes :q as the REPL's initial command, but the console bridge
compiles initial commands as code, so the REPL waits for input and hangs
until CI times out. It didn't show before because sbt 2 skipped the test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The bridge tests load the compiler bridges by path and read the bridge
version from javaOptions, so sbt's incremental test didn't count either as
an input and kept skipping them after a change. Both are now part of the
tests' cache key. CI runs testFull anyway; this makes test reliable locally.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PRs listed the jobs by their matrix values, such as
"test (ubuntu-latest, 17, zulu, 1)", which doesn't say what a job does.
The distribution was also wrong: it wasn't used, and every job runs on
Temurin. The jobs are now named, e.g. "Test (Windows, JDK 17)".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@eed3si9n
eed3si9n merged commit fb8ecd7 into sbt:develop Sep 24, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants