Skip to content

Add arch axis and group alias to root test-group matrix#113

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:arch-axis-test-groups
Jul 12, 2026
Merged

Add arch axis and group alias to root test-group matrix#113
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:arch-axis-test-groups

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Summary

Adds two new root-matrix-only per-group keys to test/test_groups.toml (consumed by grouped-tests.yml), so a package can declare a 32-bit (or any non-native arch) test lane through the matrix instead of bypassing it with a hand-added tests.yml job:

  • arch — string or list of Julia CPU architectures. The group runs once per arch; empty (the default) means the runner's native arch. Emitted as a per-cell arch field that grouped-tests.yml forwards to tests.yml's existing julia-arch input (empty string → tests.yml falls back to runner.arch).
  • group — the GROUP env value dispatched to the package's runtests.jl, defaulting to the section name. This lets a section named e.g. "Core 32-bit" dispatch the "Core" body — so its group folder / core file resolves under SciMLTesting folder-discovery mode — while carrying its own distinct arch/os axis and its own CI job name.

grouped-tests.yml now forwards julia-arch: ${{ matrix.arch }} and appends the arch to the job name when non-empty (e.g. Core (julia 1, ubuntu-latest, x86)).

Motivating example

[Core]
versions = ["1", "lts", "pre"]
os = ["ubuntu-latest", "macos-latest", "windows-latest"]

["Core 32-bit"]
group = "Core"
versions = ["1"]
os = ["ubuntu-latest"]
arch = "x86"

[QA]
versions = ["lts", "1"]

yields the 9 native Core cells + QA exactly as before, plus a single Core (julia 1, ubuntu-latest, x86) cell dispatching GROUP=Core.

Backward compatibility

Existing test_groups.toml files are unaffected: no arch/group keys means arch is "" (native) and the section name is the dispatched group — identical output to before this change.

Testing

  • Extended test/runtests.jl with three new testsets covering the arch axis (single value + list fan-out), the group alias (32-bit lane dispatching GROUP=Core), and the --root-matrix CLI emitting the arch field.
  • Full julia test/runtests.jl suite passes locally (exit 0).
  • Both changed .jl files are Runic-clean.

Follow-up

This is the enabling half of a two-PR change. The consumer PR (SciML/FindFirstFunctions.jl) adopts a "Core 32-bit" section to test 32-bit platforms, replacing a hand-added tests-32bit job.

Please ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

The root test-group matrix (test/test_groups.toml -> grouped-tests.yml)
could express a group's version and OS axes but not its CPU architecture,
so a package that wants a 32-bit lane had to bypass the matrix and hand-add
a `tests.yml` job to its CI, defeating the point of declaring the matrix
once in test_groups.toml.

Add two root-matrix-only per-group keys:

  * `arch` — string or list of Julia architectures; the group runs once per
    arch (empty = the runner's native arch). Emitted as a per-cell `arch`
    field that grouped-tests.yml forwards to tests.yml's `julia-arch` (empty
    falls back to runner.arch).
  * `group` — the GROUP env dispatched to the package's runtests.jl,
    defaulting to the section name. A section named e.g. "Core 32-bit" can
    dispatch the "Core" body (so its folder/core file resolves in
    SciMLTesting folder-discovery mode) while carrying its own arch/os axis
    and CI job name.

grouped-tests.yml forwards `julia-arch: matrix.arch` and appends the arch to
the job name when set. Existing test_groups.toml files are unaffected: no
`arch`/`group` keys means arch is "" (native) and the section name is the
dispatched group, exactly as before.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcQkauMQ4KSytnTpJpXUZu
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