diff --git a/Project.toml b/Project.toml index 7feca0f..ad04edb 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,10 @@ name = "ParallelTestRunner" uuid = "d3525ed8-44d0-4b2c-a655-542cee43accc" +version = "2.4.1" authors = ["Valentin Churavy "] -version = "2.4.0" + +[workspace] +projects = ["test"] [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" diff --git a/src/ParallelTestRunner.jl b/src/ParallelTestRunner.jl index fc13cc0..a90fd0b 100644 --- a/src/ParallelTestRunner.jl +++ b/src/ParallelTestRunner.jl @@ -293,13 +293,18 @@ function runtest(f, name, init_code) data = @eval mod begin GC.gc(true) Random.seed!(1) + project = Base.active_project() # @testset CustomTestRecord switches the all lower-level testset to our custom testset, # so we need to have two layers here such that the user-defined testsets are using `DefaultTestSet`. # This also guarantees our invariant about `WorkerTestSet` containing a single `DefaultTestSet`. stats = @timed @testset WorkerTestSet "placeholder" begin @testset DefaultTestSet $name begin - $f + try + $f + finally + Base.set_active_project(project) + end end end (; testset=stats.value, stats.time, stats.bytes, stats.gctime) diff --git a/test/Project.toml b/test/Project.toml index 0c36332..80e225b 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,2 +1,7 @@ [deps] +ParallelTestRunner = "d3525ed8-44d0-4b2c-a655-542cee43accc" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[sources] +ParallelTestRunner = {path = ".."} diff --git a/test/runtests.jl b/test/runtests.jl index 040db00..5c13a41 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -373,4 +373,25 @@ end @test contains(str, "SUCCESS") end +@testset "switching projects" begin + testsuite = Dict( + "first" => quote + using Pkg + Pkg.activate(; temp=true) + @test 1 + 1 == 2 + end, + "second" => quote + @test 2 * 2 == 4 + end + ) + + io = IOBuffer() + runtests(ParallelTestRunner, ["--verbose", "--jobs=1"]; testsuite, stdout=io, stderr=io) + + str = String(take!(io)) + @test contains(str, r"first .+ started at") + @test contains(str, r"second .+ started at") + @test contains(str, "SUCCESS") +end + end