Migrate test infrastructure to Pkg workspaces - #262
Merged
Conversation
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
marked this pull request as ready for review
July 28, 2026 16:40
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
4 tasks
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>
Jutho
approved these changes
Jul 29, 2026
Jutho
reviewed
Jul 29, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
runtests.jlwere no-ops.find_testskeys tests by path relative totest/, but the fivedelete!calls used bare names ("algorithms"vs.common/algorithms), so none of them ever matched. Now path-qualified. Note thatcommon/exponentialandcommon/projectionsare deliberately not skipped: unlike the other files incommon/, they carryCUDA.functional()/AMDGPU.functional()blocks, so skipping them would lose GPU coverage.chainrulesis skipped as a group — its body was already guarded byif !is_buildkite, so this just saves spinning up a worker.test/exponential.jlnever ran on GitHub CI.TestGroups.ymlbuilds its matrix from the top-level directories undertest/and passes the directory name as astartswithfilter, so a root-level file belongs to no group. Moved totest/common/exponential.jl, will tackle this properly in feat:squareroot,logarithmandpower#261 with a matrixfunction test grouptest/utilities.jlwas dead — definedisapproxone, never included or called. Removed.