From 6e70fc45032cd32b3710adbb409937968731d4e2 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 08:17:44 +0100 Subject: [PATCH 01/10] chore: revamp testing CI with dedicated environments --- .github/workflows/Test.yml | 110 +++++++++++++----- .../test/Back/ChainRules/Project.toml | 10 ++ .../Back/ChainRules/{zygote.jl => test.jl} | 5 +- .../test/Back/DifferentiateWith/Project.toml | 14 +++ .../test/Back/DifferentiateWith/test.jl | 4 +- .../test/Back/Diffractor/test.jl | 23 ---- .../test/Back/Enzyme/Project.toml | 11 ++ .../test/Back/Enzyme/test.jl | 5 +- .../Back/FastDifferentiation/Project.toml | 10 ++ .../{fastdifferentiation.jl => test.jl} | 5 +- .../test/Back/FiniteDiff/Project.toml | 9 ++ .../test/Back/FiniteDiff/benchmark.jl | 3 - .../test/Back/FiniteDiff/test.jl | 7 +- .../test/Back/FiniteDifferences/Project.toml | 9 ++ .../test/Back/FiniteDifferences/test.jl | 5 +- .../test/Back/ForwardDiff/Project.toml | 11 ++ .../test/Back/ForwardDiff/benchmark.jl | 3 - .../test/Back/ForwardDiff/test.jl | 7 +- .../test/Back/GTPSA/Project.toml | 9 ++ .../test/Back/GTPSA/test.jl | 5 +- .../test/Back/Mooncake/Project.toml | 9 ++ .../test/Back/Mooncake/test.jl | 4 +- .../Back/PolyesterForwardDiff/Project.toml | 10 ++ .../test/Back/PolyesterForwardDiff/test.jl | 5 +- .../test/Back/ReverseDiff/Project.toml | 11 ++ .../test/Back/ReverseDiff/test.jl | 5 +- .../test/Back/SparsityDetector/Project.toml | 13 +++ .../test/Back/SparsityDetector/test.jl | 3 +- .../test/Back/Symbolics/Project.toml | 10 ++ .../Back/Symbolics/{symbolics.jl => test.jl} | 5 +- .../test/Back/Tracker/Project.toml | 8 ++ .../test/Back/Tracker/test.jl | 5 +- .../test/Back/Zygote/Project.toml | 13 +++ .../test/Back/Zygote/test.jl | 5 +- .../test/Back/run_backend.jl | 5 + .../test/Core/SimpleFiniteDiff/test.jl | 2 - .../test/Core/ZeroBackends/test.jl | 1 - DifferentiationInterface/test/runtests.jl | 52 +++------ DifferentiationInterface/test/testutils.jl | 14 +++ DifferentiationInterfaceTest/test/runtests.jl | 2 + DifferentiationInterfaceTest/test/standard.jl | 2 - DifferentiationInterfaceTest/test/weird.jl | 2 - .../test/zero_backends.jl | 2 - 43 files changed, 309 insertions(+), 144 deletions(-) create mode 100644 DifferentiationInterface/test/Back/ChainRules/Project.toml rename DifferentiationInterface/test/Back/ChainRules/{zygote.jl => test.jl} (89%) create mode 100644 DifferentiationInterface/test/Back/DifferentiateWith/Project.toml delete mode 100644 DifferentiationInterface/test/Back/Diffractor/test.jl create mode 100644 DifferentiationInterface/test/Back/Enzyme/Project.toml create mode 100644 DifferentiationInterface/test/Back/FastDifferentiation/Project.toml rename DifferentiationInterface/test/Back/FastDifferentiation/{fastdifferentiation.jl => test.jl} (94%) create mode 100644 DifferentiationInterface/test/Back/FiniteDiff/Project.toml create mode 100644 DifferentiationInterface/test/Back/FiniteDifferences/Project.toml create mode 100644 DifferentiationInterface/test/Back/ForwardDiff/Project.toml create mode 100644 DifferentiationInterface/test/Back/GTPSA/Project.toml create mode 100644 DifferentiationInterface/test/Back/Mooncake/Project.toml create mode 100644 DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml create mode 100644 DifferentiationInterface/test/Back/ReverseDiff/Project.toml create mode 100644 DifferentiationInterface/test/Back/SparsityDetector/Project.toml create mode 100644 DifferentiationInterface/test/Back/Symbolics/Project.toml rename DifferentiationInterface/test/Back/Symbolics/{symbolics.jl => test.jl} (94%) create mode 100644 DifferentiationInterface/test/Back/Tracker/Project.toml create mode 100644 DifferentiationInterface/test/Back/Zygote/Project.toml create mode 100644 DifferentiationInterface/test/Back/run_backend.jl diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 89223f597..32d27dd91 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -16,8 +16,8 @@ concurrency: cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} jobs: - test-DI: - name: ${{ matrix.version }} - DI (${{ matrix.group }}) + test-DI-Core: + name: ${{ matrix.version }} - DI Core (${{ matrix.group }}) runs-on: ubuntu-latest if: ${{ !contains(github.event.pull_request.labels.*.name, 'skipci') }} timeout-minutes: 120 @@ -32,25 +32,9 @@ jobs: - '1.11' - '1.12' group: - - Core/Internals - - Back/DifferentiateWith - - Core/SimpleFiniteDiff - - Back/SparsityDetector - - Core/ZeroBackends - - Back/ChainRules - # - Back/Diffractor - - Back/Enzyme - - Back/FastDifferentiation - - Back/FiniteDiff - - Back/FiniteDifferences - - Back/ForwardDiff - - Back/GTPSA - - Back/Mooncake - - Back/PolyesterForwardDiff - - Back/ReverseDiff - - Back/Symbolics - - Back/Tracker - - Back/Zygote + - Internals + - SimpleFiniteDiff + - ZeroBackends skip_lts: - ${{ github.event.pull_request.draft }} skip_pre: @@ -60,13 +44,8 @@ jobs: version: '1.10' - skip_pre: true version: '1.12' - - version: '1.11' - group: Back/ChainRules - - version: '1.12' - group: Back/Enzyme - - version: '1.12' - group: Back/DifferentiateWith env: + JULIA_DI_TEST_TYPE: 'Core' JULIA_DI_TEST_GROUP: ${{ matrix.group }} JULIA_DI_PR_DRAFT: ${{ github.event.pull_request.draft }} steps: @@ -104,6 +83,83 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false + test-DI-Backend: + name: ${{ matrix.version }} - DI Back (${{ matrix.group }}) + runs-on: ubuntu-latest + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skipci') }} + timeout-minutes: 120 + permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created + actions: write + contents: read + strategy: + fail-fast: false # TODO: toggle + matrix: + version: + - '1.10' + - '1.11' + - '1.12' + group: + - ChainRules + - DifferentiateWith + # - Diffractor + - Enzyme + - FastDifferentiation + - FiniteDiff + - FiniteDifferences + - ForwardDiff + - GTPSA + - Mooncake + - PolyesterForwardDiff + - ReverseDiff + - SparsityDetector + - Symbolics + - Tracker + - Zygote + skip_lts: + - ${{ github.event.pull_request.draft }} + skip_pre: + - ${{ github.event.pull_request.draft }} + exclude: + - skip_lts: true + version: '1.10' + - skip_pre: true + version: '1.12' + - version: '1.11' + group: ChainRules + - version: '1.12' + group: Enzyme + - version: '1.12' + group: DifferentiateWith + env: + JULIA_DI_TEST_TYPE: 'Back' + JULIA_DI_TEST_GROUP: ${{ matrix.group }} + JULIA_DI_PR_DRAFT: ${{ github.event.pull_request.draft }} + steps: + - uses: actions/checkout@v5 + - uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + arch: x64 + - uses: julia-actions/cache@v2 + - name: Install dependencies & run tests + run: julia --code-coverage=user --color=yes -e ' + using Pkg; + Pkg.Registry.update(); + group = ENV["JULIA_DI_TEST_GROUP"] + Pkg.activate("./DifferentiationInterface/test/Back/$group"); + Pkg.develop(; path="./DifferentiationInterface"); + Pkg.develop(; path="./DifferentiationInterfaceTest"); + include("./DifferentiationInterface/test/Back/run_backend.jl");' + - uses: julia-actions/julia-processcoverage@v1 + with: + directories: ./DifferentiationInterface/src,./DifferentiationInterface/ext,./DifferentiationInterface/test + - uses: codecov/codecov-action@v5 + with: + files: lcov.info + flags: DI + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + test-DIT: name: ${{ matrix.version }} - DIT (${{ matrix.group }}) runs-on: ubuntu-latest diff --git a/DifferentiationInterface/test/Back/ChainRules/Project.toml b/DifferentiationInterface/test/Back/ChainRules/Project.toml new file mode 100644 index 000000000..8cb909466 --- /dev/null +++ b/DifferentiationInterface/test/Back/ChainRules/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/ChainRules/zygote.jl b/DifferentiationInterface/test/Back/ChainRules/test.jl similarity index 89% rename from DifferentiationInterface/test/Back/ChainRules/zygote.jl rename to DifferentiationInterface/test/Back/ChainRules/test.jl index 9722220f4..7c740352c 100644 --- a/DifferentiationInterface/test/Back/ChainRules/zygote.jl +++ b/DifferentiationInterface/test/Back/ChainRules/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add(["ChainRulesCore", "Zygote"]) +Pkg.activate(@__DIR__) +include("../../testutils.jl") using ChainRulesCore using DifferentiationInterface, DifferentiationInterfaceTest @@ -9,8 +10,6 @@ using Zygote: ZygoteRuleConfig using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoChainRules(ZygoteRuleConfig())] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml b/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml new file mode 100644 index 000000000..8fc6a2707 --- /dev/null +++ b/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml @@ -0,0 +1,14 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ChainRulesTestUtils = "cdddcdb0-9152-4a09-a978-84456f9df70a" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl index 04d9f5b99..90515b5df 100644 --- a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl +++ b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl @@ -1,5 +1,5 @@ using Pkg -Pkg.add(["ChainRulesTestUtils", "FiniteDiff", "ForwardDiff", "Zygote", "Mooncake"]) +Pkg.activate(@__DIR__) using ChainRulesTestUtils: ChainRulesTestUtils using DifferentiationInterface, DifferentiationInterfaceTest @@ -11,8 +11,6 @@ using Mooncake: Mooncake using StableRNGs using Test -LOGGING = get(ENV, "CI", "false") == "false" - struct ADBreaker{F} f::F end diff --git a/DifferentiationInterface/test/Back/Diffractor/test.jl b/DifferentiationInterface/test/Back/Diffractor/test.jl deleted file mode 100644 index 57be809ea..000000000 --- a/DifferentiationInterface/test/Back/Diffractor/test.jl +++ /dev/null @@ -1,23 +0,0 @@ -using Pkg -Pkg.add("Diffractor") - -using DifferentiationInterface, DifferentiationInterfaceTest -using Diffractor: Diffractor -using Test - -using ExplicitImports -check_no_implicit_imports(DifferentiationInterface) - -LOGGING = get(ENV, "CI", "false") == "false" - -for backend in [AutoDiffractor()] - @test check_available(backend) - @test !check_inplace(backend) -end - -test_differentiation( - AutoDiffractor(), - default_scenarios(; linalg = false); - excluded = SECOND_ORDER, - logging = LOGGING, -); diff --git a/DifferentiationInterface/test/Back/Enzyme/Project.toml b/DifferentiationInterface/test/Back/Enzyme/Project.toml new file mode 100644 index 000000000..ee903053a --- /dev/null +++ b/DifferentiationInterface/test/Back/Enzyme/Project.toml @@ -0,0 +1,11 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Enzyme/test.jl b/DifferentiationInterface/test/Back/Enzyme/test.jl index 892ac6c78..4a5e800e4 100644 --- a/DifferentiationInterface/test/Back/Enzyme/test.jl +++ b/DifferentiationInterface/test/Back/Enzyme/test.jl @@ -1,7 +1,8 @@ # see https://github.com/JuliaDiff/DifferentiationInterface.jl/issues/855 using Pkg -Pkg.add("Enzyme") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -14,8 +15,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [ AutoEnzyme(; mode = nothing), AutoEnzyme(; mode = Enzyme.Forward), diff --git a/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml b/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml new file mode 100644 index 000000000..b7160b43f --- /dev/null +++ b/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl similarity index 94% rename from DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl rename to DifferentiationInterface/test/Back/FastDifferentiation/test.jl index 86d903faa..86c2ae3c7 100644 --- a/DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl +++ b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("FastDifferentiation") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using SparseMatrixColorings @@ -10,8 +11,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFastDifferentiation(), AutoSparse(AutoFastDifferentiation())] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/FiniteDiff/Project.toml b/DifferentiationInterface/test/Back/FiniteDiff/Project.toml new file mode 100644 index 000000000..e8c5eb3bc --- /dev/null +++ b/DifferentiationInterface/test/Back/FiniteDiff/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl b/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl index 96a0cb61e..cc24f47dc 100644 --- a/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl +++ b/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl @@ -1,5 +1,4 @@ using Pkg -Pkg.add("FiniteDiff") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -8,8 +7,6 @@ import DifferentiationInterfaceTest as DIT using FiniteDiff: FiniteDiff using Test -LOGGING = get(ENV, "CI", "false") == "false" - @testset "Benchmarking sparse" begin filtered_sparse_scenarios = filter(sparse_scenarios(; band_sizes = [])) do scen DIT.function_place(scen) == :in && diff --git a/DifferentiationInterface/test/Back/FiniteDiff/test.jl b/DifferentiationInterface/test/Back/FiniteDiff/test.jl index a7f5ad42f..5d794a51e 100644 --- a/DifferentiationInterface/test/Back/FiniteDiff/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDiff/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("FiniteDiff") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using DifferentiationInterface: DenseSparsityDetector @@ -10,8 +11,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFiniteDiff()] @test check_available(backend) @test check_inplace(backend) @@ -114,3 +113,5 @@ end; @test prep.relstep_g == 0.1 @test prep.relstep_h == 0.1 end + +include("benchmark.jl") diff --git a/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml b/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml new file mode 100644 index 000000000..7082f1ff7 --- /dev/null +++ b/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl index 7157a043c..7481d7699 100644 --- a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("FiniteDifferences") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using FiniteDifferences: FiniteDifferences @@ -8,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFiniteDifferences(; fdm = FiniteDifferences.central_fdm(3, 1))] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/ForwardDiff/Project.toml b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml new file mode 100644 index 000000000..75ee79a7b --- /dev/null +++ b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml @@ -0,0 +1,11 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl b/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl index 256c8aaa2..a4a0b25f0 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl +++ b/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl @@ -1,5 +1,4 @@ using Pkg -Pkg.add("ForwardDiff") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -9,8 +8,6 @@ using ForwardDiff: ForwardDiff using StaticArrays: StaticArrays, @SVector using Test -LOGGING = get(ENV, "CI", "false") == "false" - @testset verbose = true "Benchmarking static" begin filtered_static_scenarios = filter(static_scenarios(; include_batchified = false)) do scen DIT.function_place(scen) == :out && DIT.operator_place(scen) == :out diff --git a/DifferentiationInterface/test/Back/ForwardDiff/test.jl b/DifferentiationInterface/test/Back/ForwardDiff/test.jl index ef501aec1..5f18071bc 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/ForwardDiff/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("ForwardDiff") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using ADTypes: ADTypes using ComponentArrays: ComponentArrays @@ -14,8 +15,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - struct MyTag end backends = [ @@ -124,3 +123,5 @@ end prepare_jacobian(copyto!, similar(x), sparse_backend, x) ) == Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(copyto!), Float64}, Float64, 1}} end; + +include("benchmark.jl") diff --git a/DifferentiationInterface/test/Back/GTPSA/Project.toml b/DifferentiationInterface/test/Back/GTPSA/Project.toml new file mode 100644 index 000000000..432414730 --- /dev/null +++ b/DifferentiationInterface/test/Back/GTPSA/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/GTPSA/test.jl b/DifferentiationInterface/test/Back/GTPSA/test.jl index 63d7e7ea5..9f6ecbae5 100644 --- a/DifferentiationInterface/test/Back/GTPSA/test.jl +++ b/DifferentiationInterface/test/Back/GTPSA/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("GTPSA") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using GTPSA: GTPSA @@ -8,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoGTPSA()] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Mooncake/Project.toml b/DifferentiationInterface/test/Back/Mooncake/Project.toml new file mode 100644 index 000000000..39a878d7e --- /dev/null +++ b/DifferentiationInterface/test/Back/Mooncake/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Mooncake/test.jl b/DifferentiationInterface/test/Back/Mooncake/test.jl index 3b61e3547..b0069bba6 100644 --- a/DifferentiationInterface/test/Back/Mooncake/test.jl +++ b/DifferentiationInterface/test/Back/Mooncake/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("Mooncake") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using Mooncake: Mooncake @@ -8,7 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" backends = [ AutoMooncake(; config = nothing), diff --git a/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml b/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml new file mode 100644 index 000000000..e487cb5f4 --- /dev/null +++ b/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl index e1482731f..ad3362fe8 100644 --- a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add(["ForwardDiff", "PolyesterForwardDiff"]) +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest import DifferentiationInterface as DI @@ -10,8 +11,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - struct MyTag end backends = [ diff --git a/DifferentiationInterface/test/Back/ReverseDiff/Project.toml b/DifferentiationInterface/test/Back/ReverseDiff/Project.toml new file mode 100644 index 000000000..a8190995d --- /dev/null +++ b/DifferentiationInterface/test/Back/ReverseDiff/Project.toml @@ -0,0 +1,11 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/ReverseDiff/test.jl b/DifferentiationInterface/test/Back/ReverseDiff/test.jl index 2043c60f2..0d7da66b0 100644 --- a/DifferentiationInterface/test/Back/ReverseDiff/test.jl +++ b/DifferentiationInterface/test/Back/ReverseDiff/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add(["ForwardDiff", "ReverseDiff"]) # ForwardDiff already in ReverseDiff's deps +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest import DifferentiationInterface as DI @@ -11,8 +12,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [AutoReverseDiff(; compile = false), AutoReverseDiff(; compile = true)] second_order_backends = [SecondOrder(AutoForwardDiff(), AutoReverseDiff())] diff --git a/DifferentiationInterface/test/Back/SparsityDetector/Project.toml b/DifferentiationInterface/test/Back/SparsityDetector/Project.toml new file mode 100644 index 000000000..ba2e0acc3 --- /dev/null +++ b/DifferentiationInterface/test/Back/SparsityDetector/Project.toml @@ -0,0 +1,13 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/SparsityDetector/test.jl b/DifferentiationInterface/test/Back/SparsityDetector/test.jl index f1de5c11b..74971c12f 100644 --- a/DifferentiationInterface/test/Back/SparsityDetector/test.jl +++ b/DifferentiationInterface/test/Back/SparsityDetector/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add(["ForwardDiff", "ReverseDiff"]) +Pkg.activate(@__DIR__) +include("../../testutils.jl") using ADTypes: jacobian_sparsity, hessian_sparsity using DifferentiationInterface diff --git a/DifferentiationInterface/test/Back/Symbolics/Project.toml b/DifferentiationInterface/test/Back/Symbolics/Project.toml new file mode 100644 index 000000000..2729711e1 --- /dev/null +++ b/DifferentiationInterface/test/Back/Symbolics/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Symbolics/symbolics.jl b/DifferentiationInterface/test/Back/Symbolics/test.jl similarity index 94% rename from DifferentiationInterface/test/Back/Symbolics/symbolics.jl rename to DifferentiationInterface/test/Back/Symbolics/test.jl index 5fe04d8c9..9888e822b 100644 --- a/DifferentiationInterface/test/Back/Symbolics/symbolics.jl +++ b/DifferentiationInterface/test/Back/Symbolics/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("Symbolics") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using SparseMatrixColorings @@ -10,8 +11,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoSymbolics(), AutoSparse(AutoSymbolics())] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Tracker/Project.toml b/DifferentiationInterface/test/Back/Tracker/Project.toml new file mode 100644 index 000000000..09a33ad3b --- /dev/null +++ b/DifferentiationInterface/test/Back/Tracker/Project.toml @@ -0,0 +1,8 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Tracker/test.jl b/DifferentiationInterface/test/Back/Tracker/test.jl index fe54c6aaf..b019daf36 100644 --- a/DifferentiationInterface/test/Back/Tracker/test.jl +++ b/DifferentiationInterface/test/Back/Tracker/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add("Tracker") +Pkg.activate(@__DIR__) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using Tracker: Tracker @@ -8,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoTracker()] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Zygote/Project.toml b/DifferentiationInterface/test/Back/Zygote/Project.toml new file mode 100644 index 000000000..d254f7d5f --- /dev/null +++ b/DifferentiationInterface/test/Back/Zygote/Project.toml @@ -0,0 +1,13 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/Zygote/test.jl b/DifferentiationInterface/test/Back/Zygote/test.jl index f9dc8c78f..945f76b82 100644 --- a/DifferentiationInterface/test/Back/Zygote/test.jl +++ b/DifferentiationInterface/test/Back/Zygote/test.jl @@ -1,5 +1,6 @@ using Pkg -Pkg.add(["ForwardDiff", "Zygote"]) +Pkg.activate(@__DIR__) +include("../../testutils.jl") using ComponentArrays: ComponentArrays using DifferentiationInterface, DifferentiationInterfaceTest @@ -12,8 +13,6 @@ using Zygote: Zygote using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [AutoZygote()] second_order_backends = [SecondOrder(AutoForwardDiff(), AutoZygote())] diff --git a/DifferentiationInterface/test/Back/run_backend.jl b/DifferentiationInterface/test/Back/run_backend.jl new file mode 100644 index 000000000..637feb4c4 --- /dev/null +++ b/DifferentiationInterface/test/Back/run_backend.jl @@ -0,0 +1,5 @@ +using Test +group = ENV["JULIA_DI_TEST_GROUP"] +@testset "$group" begin + include(joinpath(@__DIR__, group, "test.jl")) +end diff --git a/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl b/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl index 1bd40bfa6..fe739284e 100644 --- a/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl +++ b/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl @@ -8,8 +8,6 @@ using SparseMatrixColorings using JLArrays, StaticArrays using Test -LOGGING = get(ENV, "CI", "false") == "false" - backends = [ # AutoSimpleFiniteDiff(; chunksize = 5), AutoForwardFromPrimitive(AutoSimpleFiniteDiff(; chunksize = 4)), diff --git a/DifferentiationInterface/test/Core/ZeroBackends/test.jl b/DifferentiationInterface/test/Core/ZeroBackends/test.jl index 6b84e56a4..24aeb0d2c 100644 --- a/DifferentiationInterface/test/Core/ZeroBackends/test.jl +++ b/DifferentiationInterface/test/Core/ZeroBackends/test.jl @@ -8,7 +8,6 @@ using SparseMatrixColorings using StaticArrays: StaticArrays using Test -LOGGING = get(ENV, "CI", "false") == "false" zero_backends = [AutoZeroForward(), AutoZeroReverse()] diff --git a/DifferentiationInterface/test/runtests.jl b/DifferentiationInterface/test/runtests.jl index 66159c3d9..cd01c7f36 100644 --- a/DifferentiationInterface/test/runtests.jl +++ b/DifferentiationInterface/test/runtests.jl @@ -1,47 +1,25 @@ using DifferentiationInterface -using Pkg using Test -@static if VERSION < v"1.11" - DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") - if isdir(DIT_PATH) - Pkg.develop(; path = DIT_PATH) - else - Pkg.add("DifferentiationInterfaceTest") - end -end - include("testutils.jl") ## Main tests -@time @testset verbose = true "DifferentiationInterface.jl" begin - if haskey(ENV, "JULIA_DI_TEST_GROUP") - category, folder = split(ENV["JULIA_DI_TEST_GROUP"], '/') - @testset verbose = true "$category" begin - @testset verbose = true "$folder" begin - @testset verbose = true "$file" for file in readdir( - joinpath(@__DIR__, category, folder) - ) - endswith(file, ".jl") || continue - @info "Testing $category/$folder/$file" - include(joinpath(@__DIR__, category, folder, file)) - yield() - end - end - end - else - category = "Core" - @testset verbose = true for folder in readdir(joinpath(@__DIR__, category)) - isdir(joinpath(@__DIR__, category, folder)) || continue - @testset verbose = true "$file" for file in readdir( - joinpath(@__DIR__, category, folder) - ) - endswith(file, ".jl") || continue - @info "Testing $category/$folder/$file" - include(joinpath(@__DIR__, category, folder, file)) - yield() - end +if haskey(ENV, "JULIA_DI_TEST_GROUP") + folders = [ENV["JULIA_DI_TEST_GROUP"]] +else + folders = ["Internals", "SimpleFiniteDiff", "ZeroBackends"] +end + +@time @testset verbose = true "DifferentiationInterface.jl (Core)" begin + @testset verbose = true "$folder" for folder in folders + @testset verbose = true "$file" for file in readdir( + joinpath(@__DIR__, "Core", folder) + ) + endswith(file, ".jl") || continue + @info "Testing $folder/$file" + include(joinpath(@__DIR__, "Core", folder, file)) + yield() end end end; diff --git a/DifferentiationInterface/test/testutils.jl b/DifferentiationInterface/test/testutils.jl index 5bb8bd3a8..7329f4abf 100644 --- a/DifferentiationInterface/test/testutils.jl +++ b/DifferentiationInterface/test/testutils.jl @@ -1,7 +1,19 @@ +using Pkg + +@static if VERSION < v"1.11" + DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") + if isdir(DIT_PATH) + Pkg.develop(; path = DIT_PATH) + else + Pkg.add("DifferentiationInterfaceTest") + end +end + using ADTypes using DifferentiationInterfaceTest using SparseConnectivityTracer using SparseMatrixColorings +using Test using DifferentiationInterfaceTest: default_scenarios, @@ -22,3 +34,5 @@ function MyAutoSparse(backend::AbstractADType) end safetypestab(symb) = VERSION < v"1.12-" ? symb : :none # TODO: remove + +LOGGING = get(ENV, "CI", "false") == "false" diff --git a/DifferentiationInterfaceTest/test/runtests.jl b/DifferentiationInterfaceTest/test/runtests.jl index ee96ca118..4691fee52 100644 --- a/DifferentiationInterfaceTest/test/runtests.jl +++ b/DifferentiationInterfaceTest/test/runtests.jl @@ -19,6 +19,8 @@ GROUP = get(ENV, "JULIA_DIT_TEST_GROUP", "All") safetypestab(symb) = VERSION < v"1.12-" ? symb : :none # TODO: remove +LOGGING = get(ENV, "CI", "false") == "false" + ## Main tests @time @testset verbose = true "DifferentiationInterfaceTest.jl" begin diff --git a/DifferentiationInterfaceTest/test/standard.jl b/DifferentiationInterfaceTest/test/standard.jl index a3240e42e..1d26a0c75 100644 --- a/DifferentiationInterfaceTest/test/standard.jl +++ b/DifferentiationInterfaceTest/test/standard.jl @@ -7,8 +7,6 @@ using SparseConnectivityTracer using SparseMatrixColorings using Random -LOGGING = get(ENV, "CI", "false") == "false" - ## Dense test_differentiation( diff --git a/DifferentiationInterfaceTest/test/weird.jl b/DifferentiationInterfaceTest/test/weird.jl index f56831690..6f76c2dc0 100644 --- a/DifferentiationInterfaceTest/test/weird.jl +++ b/DifferentiationInterfaceTest/test/weird.jl @@ -13,8 +13,6 @@ using SparseMatrixColorings using StaticArrays: StaticArrays using Zygote: Zygote -LOGGING = get(ENV, "CI", "false") == "false" - ## Generate all scenarios gpu_scenarios(; diff --git a/DifferentiationInterfaceTest/test/zero_backends.jl b/DifferentiationInterfaceTest/test/zero_backends.jl index 8796d524f..b4a0f1bd1 100644 --- a/DifferentiationInterfaceTest/test/zero_backends.jl +++ b/DifferentiationInterfaceTest/test/zero_backends.jl @@ -5,8 +5,6 @@ using DifferentiationInterfaceTest using DifferentiationInterfaceTest: allocfree_scenarios, no_matrices using Test -LOGGING = get(ENV, "CI", "false") == "false" - ## Type stability test_differentiation( From f6cd31286262b929ae225869d4cc13d0cfc27838 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 08:21:09 +0100 Subject: [PATCH 02/10] Typo --- DifferentiationInterface/test/Back/DifferentiateWith/test.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl index 90515b5df..ea0233850 100644 --- a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl +++ b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl @@ -1,5 +1,6 @@ using Pkg Pkg.activate(@__DIR__) +include("../../testutils.jl") using ChainRulesTestUtils: ChainRulesTestUtils using DifferentiationInterface, DifferentiationInterfaceTest From fe26d56f328e9cebc806d33aa1a8e23b55b1f104 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 08:23:18 +0100 Subject: [PATCH 03/10] Single Pkg.add --- .github/workflows/Test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 32d27dd91..0fcbf1e49 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -147,8 +147,7 @@ jobs: Pkg.Registry.update(); group = ENV["JULIA_DI_TEST_GROUP"] Pkg.activate("./DifferentiationInterface/test/Back/$group"); - Pkg.develop(; path="./DifferentiationInterface"); - Pkg.develop(; path="./DifferentiationInterfaceTest"); + Pkg.add([PackageSpec(; path="./DifferentiationInterface"), PackageSpec(; path="./DifferentiationInterfaceTest")]); include("./DifferentiationInterface/test/Back/run_backend.jl");' - uses: julia-actions/julia-processcoverage@v1 with: From 0a2cea2cd427223dd1bb0efdbbb23186b94eed37 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 08:23:43 +0100 Subject: [PATCH 04/10] Remove registry updates --- .github/workflows/Test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 0fcbf1e49..0b60dcb73 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -58,7 +58,6 @@ jobs: - name: Install dependencies & run tests run: julia --color=yes -e ' using Pkg; - Pkg.Registry.update(); Pkg.activate("./DifferentiationInterface/test"); if VERSION < v"1.11"; Pkg.rm("DifferentiationInterfaceTest"); @@ -144,7 +143,6 @@ jobs: - name: Install dependencies & run tests run: julia --code-coverage=user --color=yes -e ' using Pkg; - Pkg.Registry.update(); group = ENV["JULIA_DI_TEST_GROUP"] Pkg.activate("./DifferentiationInterface/test/Back/$group"); Pkg.add([PackageSpec(; path="./DifferentiationInterface"), PackageSpec(; path="./DifferentiationInterfaceTest")]); From dbf10b277169a2c2273971af8c18868b63fab2c7 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:28:30 +0100 Subject: [PATCH 05/10] Update Test.yml --- .github/workflows/Test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 0b60dcb73..d682ea294 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -145,7 +145,7 @@ jobs: using Pkg; group = ENV["JULIA_DI_TEST_GROUP"] Pkg.activate("./DifferentiationInterface/test/Back/$group"); - Pkg.add([PackageSpec(; path="./DifferentiationInterface"), PackageSpec(; path="./DifferentiationInterfaceTest")]); + Pkg.add([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); include("./DifferentiationInterface/test/Back/run_backend.jl");' - uses: julia-actions/julia-processcoverage@v1 with: From 1147a0cf9cfa1b28b93faf6f109c32e8ef9588fa Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:44:48 +0100 Subject: [PATCH 06/10] Update Test.yml --- .github/workflows/Test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index d682ea294..6086ed508 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -143,7 +143,7 @@ jobs: - name: Install dependencies & run tests run: julia --code-coverage=user --color=yes -e ' using Pkg; - group = ENV["JULIA_DI_TEST_GROUP"] + group = ENV["JULIA_DI_TEST_GROUP"]; Pkg.activate("./DifferentiationInterface/test/Back/$group"); Pkg.add([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); include("./DifferentiationInterface/test/Back/run_backend.jl");' From d40faaa00e45feb58d7b07eb21c088733ce0e281 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 10:35:22 +0100 Subject: [PATCH 07/10] Fixes --- .github/workflows/Test.yml | 9 ++------- DifferentiationInterface/test/Back/ChainRules/test.jl | 2 -- .../test/Back/DifferentiateWith/test.jl | 2 -- DifferentiationInterface/test/Back/Enzyme/test.jl | 4 ---- .../test/Back/FastDifferentiation/test.jl | 2 -- DifferentiationInterface/test/Back/FiniteDiff/test.jl | 2 -- .../test/Back/FiniteDifferences/test.jl | 2 -- DifferentiationInterface/test/Back/ForwardDiff/test.jl | 2 -- DifferentiationInterface/test/Back/GTPSA/test.jl | 2 -- DifferentiationInterface/test/Back/Mooncake/test.jl | 2 -- .../test/Back/PolyesterForwardDiff/test.jl | 2 -- DifferentiationInterface/test/Back/ReverseDiff/test.jl | 2 -- .../test/Back/SparsityDetector/test.jl | 2 -- DifferentiationInterface/test/Back/Symbolics/test.jl | 2 -- DifferentiationInterface/test/Back/Tracker/test.jl | 2 -- DifferentiationInterface/test/Back/Zygote/test.jl | 2 -- DifferentiationInterface/test/testutils.jl | 9 --------- 17 files changed, 2 insertions(+), 48 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 6086ed508..0f6ad615c 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -59,12 +59,7 @@ jobs: run: julia --color=yes -e ' using Pkg; Pkg.activate("./DifferentiationInterface/test"); - if VERSION < v"1.11"; - Pkg.rm("DifferentiationInterfaceTest"); - Pkg.resolve(); - else; - Pkg.develop(; path="./DifferentiationInterfaceTest"); - end; + Pkg.develop([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); Pkg.activate("./DifferentiationInterface"); test_kwargs = (; allow_reresolve=false, coverage=true); if ENV["JULIA_DI_PR_DRAFT"] == "true"; @@ -145,7 +140,7 @@ jobs: using Pkg; group = ENV["JULIA_DI_TEST_GROUP"]; Pkg.activate("./DifferentiationInterface/test/Back/$group"); - Pkg.add([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); + Pkg.develop([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); include("./DifferentiationInterface/test/Back/run_backend.jl");' - uses: julia-actions/julia-processcoverage@v1 with: diff --git a/DifferentiationInterface/test/Back/ChainRules/test.jl b/DifferentiationInterface/test/Back/ChainRules/test.jl index 7c740352c..08a04603c 100644 --- a/DifferentiationInterface/test/Back/ChainRules/test.jl +++ b/DifferentiationInterface/test/Back/ChainRules/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ChainRulesCore diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl index ea0233850..860d5e85f 100644 --- a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl +++ b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ChainRulesTestUtils: ChainRulesTestUtils diff --git a/DifferentiationInterface/test/Back/Enzyme/test.jl b/DifferentiationInterface/test/Back/Enzyme/test.jl index 4a5e800e4..f80fc63c3 100644 --- a/DifferentiationInterface/test/Back/Enzyme/test.jl +++ b/DifferentiationInterface/test/Back/Enzyme/test.jl @@ -1,7 +1,3 @@ -# see https://github.com/JuliaDiff/DifferentiationInterface.jl/issues/855 - -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ADTypes: ADTypes diff --git a/DifferentiationInterface/test/Back/FastDifferentiation/test.jl b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl index 86c2ae3c7..e42dc5132 100644 --- a/DifferentiationInterface/test/Back/FastDifferentiation/test.jl +++ b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/FiniteDiff/test.jl b/DifferentiationInterface/test/Back/FiniteDiff/test.jl index 5d794a51e..d2a63f03e 100644 --- a/DifferentiationInterface/test/Back/FiniteDiff/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDiff/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl index 7481d7699..ba585dc0c 100644 --- a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/ForwardDiff/test.jl b/DifferentiationInterface/test/Back/ForwardDiff/test.jl index 5f18071bc..df6050045 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/ForwardDiff/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ADTypes: ADTypes diff --git a/DifferentiationInterface/test/Back/GTPSA/test.jl b/DifferentiationInterface/test/Back/GTPSA/test.jl index 9f6ecbae5..6bdbcacbb 100644 --- a/DifferentiationInterface/test/Back/GTPSA/test.jl +++ b/DifferentiationInterface/test/Back/GTPSA/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/Mooncake/test.jl b/DifferentiationInterface/test/Back/Mooncake/test.jl index b0069bba6..0f0aff4a9 100644 --- a/DifferentiationInterface/test/Back/Mooncake/test.jl +++ b/DifferentiationInterface/test/Back/Mooncake/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl index ad3362fe8..8ee877b98 100644 --- a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/ReverseDiff/test.jl b/DifferentiationInterface/test/Back/ReverseDiff/test.jl index 0d7da66b0..2450b9bbf 100644 --- a/DifferentiationInterface/test/Back/ReverseDiff/test.jl +++ b/DifferentiationInterface/test/Back/ReverseDiff/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/SparsityDetector/test.jl b/DifferentiationInterface/test/Back/SparsityDetector/test.jl index 74971c12f..cb77d0b44 100644 --- a/DifferentiationInterface/test/Back/SparsityDetector/test.jl +++ b/DifferentiationInterface/test/Back/SparsityDetector/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ADTypes: jacobian_sparsity, hessian_sparsity diff --git a/DifferentiationInterface/test/Back/Symbolics/test.jl b/DifferentiationInterface/test/Back/Symbolics/test.jl index 9888e822b..076d113e8 100644 --- a/DifferentiationInterface/test/Back/Symbolics/test.jl +++ b/DifferentiationInterface/test/Back/Symbolics/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/Tracker/test.jl b/DifferentiationInterface/test/Back/Tracker/test.jl index b019daf36..a6fcfb671 100644 --- a/DifferentiationInterface/test/Back/Tracker/test.jl +++ b/DifferentiationInterface/test/Back/Tracker/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest diff --git a/DifferentiationInterface/test/Back/Zygote/test.jl b/DifferentiationInterface/test/Back/Zygote/test.jl index 945f76b82..ceeeedbc5 100644 --- a/DifferentiationInterface/test/Back/Zygote/test.jl +++ b/DifferentiationInterface/test/Back/Zygote/test.jl @@ -1,5 +1,3 @@ -using Pkg -Pkg.activate(@__DIR__) include("../../testutils.jl") using ComponentArrays: ComponentArrays diff --git a/DifferentiationInterface/test/testutils.jl b/DifferentiationInterface/test/testutils.jl index 7329f4abf..7424c844c 100644 --- a/DifferentiationInterface/test/testutils.jl +++ b/DifferentiationInterface/test/testutils.jl @@ -1,14 +1,5 @@ using Pkg -@static if VERSION < v"1.11" - DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") - if isdir(DIT_PATH) - Pkg.develop(; path = DIT_PATH) - else - Pkg.add("DifferentiationInterfaceTest") - end -end - using ADTypes using DifferentiationInterfaceTest using SparseConnectivityTracer From eec8c9296c49ac684b354105e90f03f90acf93cc Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 10:46:57 +0100 Subject: [PATCH 08/10] Fix 1.10 --- .github/workflows/Test.yml | 5 +++++ DifferentiationInterface/test/testutils.jl | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 0f6ad615c..b14868a40 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -59,7 +59,12 @@ jobs: run: julia --color=yes -e ' using Pkg; Pkg.activate("./DifferentiationInterface/test"); + if VERSION < v"1.11"; + Pkg.rm("DifferentiationInterfaceTest"); + Pkg.develop([PackageSpec(path="./DifferentiationInterface")]); + else; Pkg.develop([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); + end; Pkg.activate("./DifferentiationInterface"); test_kwargs = (; allow_reresolve=false, coverage=true); if ENV["JULIA_DI_PR_DRAFT"] == "true"; diff --git a/DifferentiationInterface/test/testutils.jl b/DifferentiationInterface/test/testutils.jl index 7424c844c..7329f4abf 100644 --- a/DifferentiationInterface/test/testutils.jl +++ b/DifferentiationInterface/test/testutils.jl @@ -1,5 +1,14 @@ using Pkg +@static if VERSION < v"1.11" + DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") + if isdir(DIT_PATH) + Pkg.develop(; path = DIT_PATH) + else + Pkg.add("DifferentiationInterfaceTest") + end +end + using ADTypes using DifferentiationInterfaceTest using SparseConnectivityTracer From a95d118912a90d7b3491b1e1efd9263f1b43232a Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:28:42 +0100 Subject: [PATCH 09/10] Fix --- .github/workflows/Test.yml | 4 ++-- DifferentiationInterface/test/Back/ChainRules/test.jl | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index b14868a40..bb7cbd4d8 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -61,9 +61,9 @@ jobs: Pkg.activate("./DifferentiationInterface/test"); if VERSION < v"1.11"; Pkg.rm("DifferentiationInterfaceTest"); - Pkg.develop([PackageSpec(path="./DifferentiationInterface")]); + Pkg.resolve(); else; - Pkg.develop([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); + Pkg.develop(; path="./DifferentiationInterfaceTest"); end; Pkg.activate("./DifferentiationInterface"); test_kwargs = (; allow_reresolve=false, coverage=true); diff --git a/DifferentiationInterface/test/Back/ChainRules/test.jl b/DifferentiationInterface/test/Back/ChainRules/test.jl index 08a04603c..b484a15cb 100644 --- a/DifferentiationInterface/test/Back/ChainRules/test.jl +++ b/DifferentiationInterface/test/Back/ChainRules/test.jl @@ -1,6 +1,5 @@ include("../../testutils.jl") -using ChainRulesCore using DifferentiationInterface, DifferentiationInterfaceTest using Test using Zygote: ZygoteRuleConfig From 60ef27b27652375fa5ab8642632ee768dd17c37e Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:41:19 +0100 Subject: [PATCH 10/10] Fixes --- DifferentiationInterface/test/Back/ForwardDiff/Project.toml | 1 + DifferentiationInterface/test/Back/Tracker/Project.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/DifferentiationInterface/test/Back/ForwardDiff/Project.toml b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml index 75ee79a7b..c780a32bc 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/Project.toml +++ b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml @@ -1,5 +1,6 @@ [deps] ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" diff --git a/DifferentiationInterface/test/Back/Tracker/Project.toml b/DifferentiationInterface/test/Back/Tracker/Project.toml index 09a33ad3b..370fa405a 100644 --- a/DifferentiationInterface/test/Back/Tracker/Project.toml +++ b/DifferentiationInterface/test/Back/Tracker/Project.toml @@ -6,3 +6,4 @@ ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"