Skip to content

Commit ef2f2e9

Browse files
Uniformize monorepo structure to OrdinaryDiffEq.jl canonical style
Convert the BoundaryValueDiffEq.jl monorepo to the canonical OrdinaryDiffEq.jl structure: SafeTestsets/@safetestset group-dispatched tests, project-model sublibrary CI, no ReTestItems and no test/Project.toml. Tests (ReTestItems -> SafeTestsets): - Rewrite every @testitem/@testsetup test file (root test/misc, test/wrappers, and all 6 lib/* sublibs) into plain @safetestset-includable test files (@testsetup module bodies hoisted to file top level; @testitem -> @testset; per-file `using <Package>`). - Rewrite all 6 sublib test/runtests.jl to read BOUNDARYVALUEDIFFEQ_TEST_GROUP and @safetestset-include per group (Core/QA; FIRK uses EXPANDED/NESTED/QA). - Rewrite root test/runtests.jl as a _detect_sublibrary_group dispatcher (activate lib/<X>, develop its [sources], set the sub group env, Pkg.test it; otherwise run the root's own Misc/Wrappers/QA @safetestset groups). - Fold test/qa into the QA group: test/qa/runtests.jl -> test/qa/qa_tests.jl, delete test/qa/Project.toml. Project.toml: - Drop ReTestItems (and the now-unused Hwloc) from deps/extras/compat/targets across root + 6 sublibs; add SafeTestsets. Add JET to the root [extras]/ [targets].test (folded from the deleted test/qa/Project.toml). - Preserve the true [sources] path graph (leaf sublibs -> Core; root -> all 6). Workflows: - SublibraryCI.yml: sublibrary-project-tests.yml@v1 with group-env-name: BOUNDARYVALUEDIFFEQ_TEST_GROUP, check-bounds: auto. - DowngradeSublibraries.yml: sublibrary-downgrade.yml@v1 with group-env-name/group-env-value Core, sibling+stdlib skip list, auto-discovery. - CI.yml: new group-dispatched root CI (Misc/Wrappers/QA only — no sublib rows; sublibs are covered by SublibraryCI), replacing CI_BoundaryValueDiffEq.yml. - Downgrade.yml: downgrade.yml@v1 with group: Misc and sibling+stdlib skip list. - Delete QA.yml (folded into the root CI QA group). test_groups.toml: - Add lib/BoundaryValueDiffEqFIRK/test/test_groups.toml declaring its real EXPANDED/NESTED/QA groups (the default Core/QA discovery does not match FIRK). No [compat] floors lowered; no tests skipped/broken/loosened. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 97e8de7 commit ef2f2e9

62 files changed

Lines changed: 544 additions & 507 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/CI.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: CI
2+
on:
3+
pull_request:
4+
branches:
5+
- master
6+
push:
7+
branches:
8+
- master
9+
concurrency:
10+
# Skip intermediate builds: always.
11+
# Cancel intermediate builds: only if it is a pull request build.
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
14+
jobs:
15+
test:
16+
permissions:
17+
actions: write
18+
contents: read
19+
runs-on: ubuntu-latest
20+
timeout-minutes: 120
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
# Root BoundaryValueDiffEq's own test groups only. The lib/* sublibraries
25+
# are covered by SublibraryCI.yml (project model); do not double-test them
26+
# through the root matrix.
27+
group:
28+
- Misc
29+
- Wrappers
30+
- QA
31+
version:
32+
- 'lts'
33+
- '1.11'
34+
- '1'
35+
- 'pre'
36+
exclude:
37+
# QA (Aqua + JET) runs only on release Julia.
38+
- group: QA
39+
version: 'lts'
40+
- group: QA
41+
version: '1.11'
42+
- group: QA
43+
version: 'pre'
44+
steps:
45+
- uses: actions/checkout@v6
46+
- uses: julia-actions/setup-julia@v3
47+
with:
48+
version: ${{ matrix.version }}
49+
- uses: julia-actions/cache@v3
50+
- name: Develop local path deps (Julia < 1.11)
51+
shell: julia --color=yes --project=. {0}
52+
run: |
53+
using Pkg
54+
if VERSION < v"1.11.0-DEV.0"
55+
toml = Pkg.TOML.parsefile("Project.toml")
56+
if haskey(toml, "sources")
57+
specs = Pkg.PackageSpec[]
58+
for (dep, spec) in toml["sources"]
59+
if spec isa Dict && haskey(spec, "path") && isdir(spec["path"])
60+
@info "Developing" dep spec["path"]
61+
push!(specs, Pkg.PackageSpec(path=spec["path"]))
62+
end
63+
end
64+
# Batch the develop call so Pkg resolves all path deps together.
65+
isempty(specs) || Pkg.develop(specs)
66+
end
67+
end
68+
- uses: julia-actions/julia-buildpkg@v1
69+
- uses: julia-actions/julia-runtest@v1
70+
with:
71+
coverage: true
72+
check_bounds: auto
73+
env:
74+
GROUP: ${{ matrix.group }}
75+
- uses: julia-actions/julia-processcoverage@v1
76+
with:
77+
directories: src,ext
78+
- uses: codecov/codecov-action@v6
79+
with:
80+
token: ${{ secrets.CODECOV_TOKEN }}
81+
files: lcov.info
82+
fail_ci_if_error: false
83+
disable_safe_directory: true

.github/workflows/CI_BoundaryValueDiffEq.yml

Lines changed: 0 additions & 81 deletions
This file was deleted.

.github/workflows/Downgrade.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ jobs:
1818
uses: "SciML/.github/.github/workflows/downgrade.yml@v1"
1919
with:
2020
julia-version: "1.11"
21-
skip: "Pkg,TOML"
21+
group: "Misc"
22+
# Skip stdlibs and the in-repo path-sourced sibling sublibraries.
23+
skip: "Pkg,TOML,Statistics,LinearAlgebra,SparseArrays,InteractiveUtils,BoundaryValueDiffEqCore,BoundaryValueDiffEqMIRK,BoundaryValueDiffEqMIRKN,BoundaryValueDiffEqFIRK,BoundaryValueDiffEqShooting,BoundaryValueDiffEqAscher"
2224
secrets: "inherit"

.github/workflows/DowngradeSublibraries.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,9 @@ jobs:
2323
secrets: "inherit"
2424
with:
2525
julia-version: "1.11"
26-
skip: "Pkg,TOML"
26+
# Skip stdlibs and the in-repo path-sourced sibling sublibraries (their
27+
# compat bounds are irrelevant when developed locally). Every lib/*
28+
# sublibrary is auto-discovered and downgrade-tested.
29+
skip: "Pkg,TOML,Statistics,LinearAlgebra,SparseArrays,InteractiveUtils,BoundaryValueDiffEqCore,BoundaryValueDiffEqMIRK,BoundaryValueDiffEqMIRKN,BoundaryValueDiffEqFIRK,BoundaryValueDiffEqShooting,BoundaryValueDiffEqAscher"
30+
group-env-name: "BOUNDARYVALUEDIFFEQ_TEST_GROUP"
31+
group-env-value: "Core"

.github/workflows/QA.yml

Lines changed: 0 additions & 54 deletions
This file was deleted.

.github/workflows/SublibraryCI.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,7 @@ concurrency:
1919
jobs:
2020
sublibraries:
2121
uses: "SciML/.github/.github/workflows/sublibrary-project-tests.yml@v1"
22+
with:
23+
group-env-name: BOUNDARYVALUEDIFFEQ_TEST_GROUP
24+
check-bounds: auto
2225
secrets: "inherit"

Project.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ DiffEqDevTools = "2.48, 3"
4646
DifferentiationInterface = "0.7.13"
4747
FastClosures = "0.3.2"
4848
ForwardDiff = "0.10.38, 1"
49-
Hwloc = "3.3"
5049
InteractiveUtils = "<0.0.1, 1"
50+
JET = "0.9, 0.10, 0.11"
5151
LinearAlgebra = "1.10"
5252
LinearSolve = "3.12"
5353
NonlinearSolveBase = "2"
@@ -58,9 +58,9 @@ OrdinaryDiffEqTsit5 = "1.1, 2"
5858
OptimizationBase = "5"
5959
Pkg = "1.10.0"
6060
Random = "1.10"
61-
ReTestItems = "1.29"
6261
RecursiveArrayTools = "3.31.2, 4"
6362
Reexport = "1.2"
63+
SafeTestsets = "0.1.0"
6464
SciMLBase = "3"
6565
Sparspak = "0.3.11"
6666
StaticArrays = "1.9.8"
@@ -71,8 +71,8 @@ julia = "1.10"
7171
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
7272
DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
7373
DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
74-
Hwloc = "0e44f5e4-bd66-52a0-8798-143a42290a1d"
7574
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
75+
JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b"
7676
LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
7777
NonlinearSolveBase = "be0214bd-f91f-a760-ac4e-3421ce2b2da0"
7878
NonlinearSolveFirstOrder = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d"
@@ -82,11 +82,11 @@ OrdinaryDiffEqTsit5 = "b1df2697-797e-41e3-8120-5422d3b24e4a"
8282
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
8383
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
8484
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
85-
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
8685
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
86+
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
8787
Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac"
8888
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
8989
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
9090

9191
[targets]
92-
test = ["Aqua", "DiffEqDevTools", "DifferentiationInterface", "Hwloc", "InteractiveUtils", "LinearSolve", "NonlinearSolveFirstOrder", "ODEInterface", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqTsit5", "Pkg", "Random", "ReTestItems", "RecursiveArrayTools", "Sparspak", "StaticArrays", "Test", "OptimizationBase", "NonlinearSolveBase"]
92+
test = ["Aqua", "DiffEqDevTools", "DifferentiationInterface", "InteractiveUtils", "JET", "LinearSolve", "NonlinearSolveFirstOrder", "ODEInterface", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqTsit5", "Pkg", "Random", "RecursiveArrayTools", "SafeTestsets", "Sparspak", "StaticArrays", "Test", "OptimizationBase", "NonlinearSolveBase"]

lib/BoundaryValueDiffEqAscher/Project.toml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
1919
Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46"
2020

2121
[compat]
22+
SafeTestsets = "0.1.0"
2223
ADTypes = "1.14"
2324
AlmostBlockDiagonals = "0.1.10"
2425
Aqua = "0.8"
@@ -28,12 +29,10 @@ DiffEqDevTools = "2.44, 3"
2829
DifferentiationInterface = "0.7"
2930
FastClosures = "0.3.2"
3031
ForwardDiff = "0.10.38, 1"
31-
Hwloc = "3"
3232
InteractiveUtils = "<0.0.1, 1"
3333
LinearAlgebra = "1.10"
3434
PreallocationTools = "0.4, 1"
3535
Random = "1.10"
36-
ReTestItems = "1.23.1"
3736
RecursiveArrayTools = "3.27.0, 4"
3837
Reexport = "1.2"
3938
SciMLBase = "3"
@@ -46,15 +45,14 @@ julia = "1.10"
4645
BoundaryValueDiffEqCore = {path = "../BoundaryValueDiffEqCore"}
4746

4847
[extras]
48+
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
4949
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
5050
DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
51-
Hwloc = "0e44f5e4-bd66-52a0-8798-143a42290a1d"
5251
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
5352
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
54-
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
5553
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
5654
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
5755
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
5856

5957
[targets]
60-
test = ["Aqua", "DiffEqDevTools", "Hwloc", "InteractiveUtils", "Random", "ReTestItems", "RecursiveArrayTools", "StaticArrays", "Test"]
58+
test = ["Aqua", "DiffEqDevTools", "InteractiveUtils", "Random", "RecursiveArrayTools", "StaticArrays", "Test", "SafeTestsets"]

lib/BoundaryValueDiffEqAscher/test/ascher_basic_tests.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
using BoundaryValueDiffEqAscher
2+
using Test
3+
14
# Standard test BVDAE problem from the URI M. ASCHER and RAYMOND J. SPITERI paper
2-
@testitem "Test Ascher solver on example problem 1" begin
5+
@testset "Test Ascher solver on example problem 1" begin
36
using BoundaryValueDiffEqAscher, SciMLBase
47
function f1!(du, u, p, t)
58
e = 2.7
@@ -79,7 +82,7 @@ end
7982
### Another BVDAE problem ###
8083
# Comes from "Boundary value problems for differential-algebraic equations"
8184
# by Leonid V. Kalachev and Robert E. O'Malley
82-
@testitem "Test Ascher solver on example problem 2" begin
85+
@testset "Test Ascher solver on example problem 2" begin
8386
using BoundaryValueDiffEqAscher, SciMLBase
8487

8588
function f2!(du, u, p, t)
@@ -134,7 +137,7 @@ end
134137
end
135138
end
136139

137-
@testitem "Test Ascher solver on example problem 3" begin
140+
@testset "Test Ascher solver on example problem 3" begin
138141
using BoundaryValueDiffEqAscher, SciMLBase
139142
function f3!(du, u, p, t)
140143
du[1] = -u[3]

lib/BoundaryValueDiffEqAscher/test/qa_tests.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
@testitem "Quality Assurance" tags = [:qa] begin
1+
using BoundaryValueDiffEqAscher
2+
using Test
3+
4+
@testset "Quality Assurance" begin
25
using Aqua
36

47
Aqua.test_all(BoundaryValueDiffEqAscher)

0 commit comments

Comments
 (0)