Skip to content

Migrate test infrastructure to Pkg workspaces - #262

Merged
lkdvos merged 2 commits into
mainfrom
test-infrastructure
Jul 29, 2026
Merged

Migrate test infrastructure to Pkg workspaces#262
lkdvos merged 2 commits into
mainfrom
test-infrastructure

Conversation

@lkdvos

@lkdvos lkdvos commented Jul 28, 2026

Copy link
Copy Markdown
Member

Replaces the legacy [extras]/[targets] mechanism with the Julia 1.12 workspace feature, bringing MatrixAlgebraKit in line with TensorKit.jl, MPSKit.jl, PEPSKit.jl and the rest of the org.

Latent fixes

Three unrelated issues surfaced while moving things around:

  • The Buildkite skips in runtests.jl were no-ops. find_tests keys tests by path relative to test/, but the five delete! calls used bare names ("algorithms" vs. common/algorithms), so none of them ever matched. Now path-qualified. Note that common/exponential and common/projections are deliberately not skipped: unlike the other files in common/, they carry CUDA.functional() / AMDGPU.functional() blocks, so skipping them would lose GPU coverage. chainrules is skipped as a group — its body was already guarded by if !is_buildkite, so this just saves spinning up a worker.
  • test/exponential.jl never ran on GitHub CI. TestGroups.yml builds its matrix from the top-level directories under test/ and passes the directory name as a startswith filter, so a root-level file belongs to no group. Moved to test/common/exponential.jl, will tackle this properly in feat: squareroot, logarithm and power #261 with a matrixfunction test group
  • test/utilities.jl was dead — defined isapproxone, never included or called. Removed.

lkdvos and others added 2 commits July 28, 2026 11:24
Replace the legacy `[extras]`/`[targets]` mechanism with the Julia 1.12
workspace feature, matching TensorKit.jl and MPSKit.jl:

- Root `Project.toml` declares `[workspace] projects = ["test", "docs"]`
  and no longer carries test-only deps or compat bounds.
- New `test/Project.toml` (`MatrixAlgebraKitTests`) owns the test deps and
  resolves the parent through `[sources]`. `SafeTestsets` is dropped; it
  was listed but used nowhere.
- `docs/Project.toml` gains a name, `[sources]`, and a Documenter bound,
  so `docs/make.jl` no longer needs to `Pkg.develop` the parent.

All workspace members share a single root `Manifest.toml`, and
`julia --project=test test/runtests.jl` now works directly. Julia compat
stays at 1.10: older Pkg ignores `[workspace]`/`[sources]` and builds the
test environment from `test/Project.toml`, so `Pkg.test()` and CI are
unaffected. Verified green on both 1.12 and 1.10.

Also fixes three latent issues found along the way:

- The Buildkite skips in `runtests.jl` used bare names, but discovered
  test keys are path-relative, so all five were silently no-ops. They are
  now path-qualified. `common/exponential` and `common/projections` are
  deliberately not skipped -- unlike the others they carry GPU coverage.
- `test/exponential.jl` sat at the test root, and CI builds its matrix
  from top-level directories, so it never ran on GitHub. Moved to
  `test/common/`.
- Removed `test/utilities.jl`, which was never included or called.

Adds `test/README.md` documenting the suite layout, the shared TestSuite
module, and how to select tests with ParallelTestRunner, plus dependabot
entries for the new member projects.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lkdvos
lkdvos marked this pull request as ready for review July 28, 2026 16:40
@lkdvos
lkdvos requested review from Jutho and kshyatt July 28, 2026 16:40
@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

lkdvos added a commit that referenced this pull request Jul 28, 2026
The README added in #262 describes the layout this branch changes: the
matrix exponential has moved out of `common`, the `genericschur` and
`genericlinearalgebra` groups are gone now that each driver covers the
generic element types alongside the BLAS floats, and `matrixfunctions` is a
new group.

Also records why the `eig`-based algorithms have to name their driver
explicitly for those element types, and lists the spectrum-controlled
instantiators the matrix functions need.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
lkdvos added a commit that referenced this pull request Jul 28, 2026
The README added in #262 describes the layout this branch changes: the
matrix exponential has moved out of `common`, the `genericschur` and
`genericlinearalgebra` groups are gone now that each driver covers the
generic element types alongside the BLAS floats, and `matrixfunctions` is a
new group.

Also records why the `eig`-based algorithms have to name their driver
explicitly for those element types, and lists the spectrum-controlled
instantiators the matrix functions need.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lkdvos
lkdvos merged commit 1c18196 into main Jul 29, 2026
50 of 58 checks passed
@lkdvos
lkdvos deleted the test-infrastructure branch July 29, 2026 09:31
Comment thread test/README.md
lkdvos added a commit that referenced this pull request Jul 29, 2026
The README added in #262 describes the layout this branch changes: the
matrix exponential has moved out of `common`, the `genericschur` and
`genericlinearalgebra` groups are gone now that each driver covers the
generic element types alongside the BLAS floats, and `matrixfunctions` is a
new group.

Also records why the `eig`-based algorithms have to name their driver
explicitly for those element types, and lists the spectrum-controlled
instantiators the matrix functions need.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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