Skip to content

Link native test suites as one binary. - #147

Merged
russwyte merged 1 commit into
mainfrom
build/native-tests-once
Oct 16, 2026
Merged

russwyte merged 1 commit into
mainfrom
build/native-tests-once

Conversation

@russwyte

Copy link
Copy Markdown
Contributor

Summary

test-native pays nine cold Scala Native links whenever a classpath change misses the link checksum. The heddle 0.12 pin run was 10m 32s (sbt 532s, nine links, none skipped). A docs-only pin can skip most of them when target/ is still in the JVM job's cache. One binary fixes the cold path. No second cache owner.

testNative is now nativeTests/testFull. That unpublished project compiles the native suites from the nine native platforms already in ascentMatrices (dom-types, core, dom-core, mount-engine, css, conduit, history, html, datastar). history/src/test/scalajs stays out. Per-module *Native/test still links that module alone. The alias name is unchanged, so ci.yml does not change.

The three object FacadeSpec suites in package ascent are renamed (DomTypesFacadeSpec, CoreFacadeSpec, CssFacadeSpec) so one compilation can hold all three. Suite labels are unchanged. The JS FacadeSpec is untouched.

Local nativeTests/testFull: one Total (22918 ms), 683 tests passed, 0 failed, sbt passed: total 63. That is the same 63 suites the nine jobs reported.

Test plan

  • sbt --server --batch "nativeTests/testFull" locally: one link, 63 suites, 683 leaves, 0 failed
  • test-native on this PR links once

testNative was nine cold closed-world links. A classpath change paid all of
them. One unpublished nativeTests binary runs the same 63 suites.

The three package-ascent FacadeSpec objects are renamed so that one
compilation can see all three.
@russwyte
russwyte merged commit 2f852b6 into main Oct 16, 2026
16 checks passed
@russwyte
russwyte deleted the build/native-tests-once branch October 16, 2026 13:26
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.

1 participant