diff --git a/.github/workflows/GPU.yml b/.github/workflows/GPU.yml deleted file mode 100644 index 027f1502..00000000 --- a/.github/workflows/GPU.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: "GPU Tests" - -on: - pull_request: - branches: - - master - paths-ignore: - - 'docs/**' - push: - branches: - - master - paths-ignore: - - 'docs/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch || github.ref != 'refs/tags/v*' }} - -jobs: - gpu-tests: - name: "GPU Tests" - runs-on: [self-hosted, Linux, X64, gpu] - timeout-minutes: 60 - steps: - - uses: actions/checkout@v6 - - uses: julia-actions/setup-julia@v3 - with: - version: "1" - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-runtest@v1 - env: - GROUP: "GPU" - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v6 - with: - files: lcov.info - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: false diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml index 554dc120..93eca998 100644 --- a/.github/workflows/Tests.yml +++ b/.github/workflows/Tests.yml @@ -18,20 +18,5 @@ concurrency: jobs: tests: - name: "Tests" - strategy: - fail-fast: false - matrix: - version: - - "1" - - "lts" - - "pre" - os: - - "ubuntu-latest" - - "macos-latest" - - "windows-latest" - uses: "SciML/.github/.github/workflows/tests.yml@v1" - with: - julia-version: "${{ matrix.version }}" - os: "${{ matrix.os }}" + uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1" secrets: "inherit" diff --git a/Project.toml b/Project.toml index 6016219a..0d115690 100644 --- a/Project.toml +++ b/Project.toml @@ -29,11 +29,11 @@ ForwardDiff = "0.10.13" GPUArraysCore = "0.1, 0.2" GenericSchur = "0.5.3" LinearAlgebra = "1.10" -Pkg = "1" PrecompileTools = "1" Printf = "1.10" Random = "1" -SafeTestsets = "0.1" +SafeTestsets = "0.1, 1" +SciMLTesting = "1" SparseArrays = "1.10" StaticArrays = "1.9.8" Test = "1" @@ -43,11 +43,11 @@ julia = "1.10" Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" DoubleFloats = "497a8b3b-efae-58df-a0af-a86822472b78" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Aqua", "DoubleFloats", "ForwardDiff", "Pkg", "Test", "SafeTestsets", "StaticArrays", "Random"] +test = ["Aqua", "DoubleFloats", "ForwardDiff", "Test", "SafeTestsets", "SciMLTesting", "StaticArrays", "Random"] diff --git a/test/gpu/Project.toml b/test/gpu/Project.toml index 18ce094b..9e862ac0 100644 --- a/test/gpu/Project.toml +++ b/test/gpu/Project.toml @@ -1,5 +1,11 @@ [deps] CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] CUDA = "3.12, 4, 5" +SafeTestsets = "0.1, 1" +SciMLTesting = "1" +Test = "1" diff --git a/test/jet/Project.toml b/test/jet/Project.toml deleted file mode 100644 index 0cf8f6e9..00000000 --- a/test/jet/Project.toml +++ /dev/null @@ -1,6 +0,0 @@ -[deps] -JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[compat] -JET = "0.9, 0.10, 0.11" diff --git a/test/qa.jl b/test/qa.jl deleted file mode 100644 index cfa2c442..00000000 --- a/test/qa.jl +++ /dev/null @@ -1,14 +0,0 @@ -using ExponentialUtilities, Aqua -@testset "Aqua" begin - Aqua.find_persistent_tasks_deps(ExponentialUtilities) - Aqua.test_ambiguities(ExponentialUtilities, recursive = false) - Aqua.test_deps_compat( - ExponentialUtilities, - ignore = [:libblastrampoline_jll] - ) - Aqua.test_piracies(ExponentialUtilities) - Aqua.test_project_extras(ExponentialUtilities) - Aqua.test_stale_deps(ExponentialUtilities) - Aqua.test_unbound_args(ExponentialUtilities) - Aqua.test_undefined_exports(ExponentialUtilities) -end diff --git a/test/qa/Project.toml b/test/qa/Project.toml new file mode 100644 index 00000000..1eb4dc29 --- /dev/null +++ b/test/qa/Project.toml @@ -0,0 +1,18 @@ +[deps] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +ExponentialUtilities = "d4d017d3-3776-5f7e-afef-a10c40355c18" +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[sources] +ExponentialUtilities = {path = "../.."} + +[compat] +Aqua = "0.8" +JET = "0.9, 0.10, 0.11" +SafeTestsets = "0.1, 1" +SciMLTesting = "1" +Test = "1" +julia = "1.10" diff --git a/test/jet/jet.jl b/test/qa/qa.jl similarity index 68% rename from test/jet/jet.jl rename to test/qa/qa.jl index fcc3a428..dcc58f5c 100644 --- a/test/jet/jet.jl +++ b/test/qa/qa.jl @@ -1,9 +1,20 @@ -using ExponentialUtilities, JET, Test +using ExponentialUtilities, Aqua, JET, Test + +@testset "Aqua" begin + Aqua.find_persistent_tasks_deps(ExponentialUtilities) + Aqua.test_ambiguities(ExponentialUtilities, recursive = false) + Aqua.test_deps_compat( + ExponentialUtilities, + ignore = [:libblastrampoline_jll] + ) + Aqua.test_piracies(ExponentialUtilities) + Aqua.test_project_extras(ExponentialUtilities) + Aqua.test_stale_deps(ExponentialUtilities) + Aqua.test_unbound_args(ExponentialUtilities) + Aqua.test_undefined_exports(ExponentialUtilities) +end @testset "JET static analysis" begin - # Test key entry points for type stability and correctness - # Using report_call to check for runtime errors - @testset "expv" begin rep = JET.report_call(expv, (Float64, Matrix{Float64}, Vector{Float64})) @test length(JET.get_reports(rep)) == 0 diff --git a/test/runtests.jl b/test/runtests.jl index 68fc7ea6..80ba0993 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,34 +1,3 @@ -using Pkg -using SafeTestsets, Test -const LONGER_TESTS = false +using SciMLTesting -const GROUP = get(ENV, "GROUP", "All") - -function activate_gpu_env() - Pkg.activate("gpu") - Pkg.develop(PackageSpec(path = dirname(@__DIR__))) - return Pkg.instantiate() -end - -function activate_jet_env() - Pkg.activate("jet") - Pkg.develop(PackageSpec(path = dirname(@__DIR__))) - return Pkg.instantiate() -end - -@time begin - if GROUP == "All" || GROUP == "Core" - @time @safetestset "Quality Assurance" include("qa.jl") - @time @safetestset "Basic Tests" include("basictests.jl") - end - - if GROUP == "GPU" - activate_gpu_env() - @time @safetestset "GPU Tests" include("gpu/gputests.jl") - end - - if GROUP == "JET" - activate_jet_env() - @time @safetestset "JET Tests" include("jet/jet.jl") - end -end +run_tests() diff --git a/test/test_groups.toml b/test/test_groups.toml new file mode 100644 index 00000000..9fbb711a --- /dev/null +++ b/test/test_groups.toml @@ -0,0 +1,21 @@ +# Test-group matrix for ExponentialUtilities (consumed by the reusable +# SciML/.github grouped-tests.yml@v1 workflow via +# scripts/compute_affected_sublibraries.jl --root-matrix). +# +# Core runs the functional suite (basictests.jl) on every Julia version and OS. +# QA runs the metadata/static-analysis checks (Aqua + JET) in the isolated +# test/qa environment. +# GPU runs the CUDA tests in the isolated test/gpu environment on a self-hosted +# GPU runner (matching the pre-conversion GPU.yml workflow). + +[Core] +versions = ["lts", "1", "pre"] +os = ["ubuntu-latest", "macos-latest", "windows-latest", "macOS-15-intel"] + +[QA] +versions = ["lts", "1"] + +[GPU] +versions = ["1"] +runner = ["self-hosted", "Linux", "X64", "gpu"] +timeout = 60