XUnit.jl icon indicating copy to clipboard operation
XUnit.jl copied to clipboard

DistributedRunner hangs when not calling XUnit.runtests

Open maleadt opened this issue 1 year ago • 0 comments

MWE:

runtests.jl

using XUnit, Distributed

# add workers
exeflags = Base.julia_cmd()
push!(exeflags.exec, "--startup-file=no")
push!(exeflags.exec, "--project=$(Base.active_project())")
exename = popfirst!(exeflags.exec)
withenv("JULIA_NUM_THREADS" => 1, "OPENBLAS_NUM_THREADS" => 1) do
    addprocs(2; exename, exeflags)
end

@everywhere @testset runner=DistributedTestRunner() "WIP" begin
    @testcase "test1" begin
        @test true
    end

    @testcase "test2" begin
        @test true
    end

    @testcase "test3" begin
        @test true
    end

    @testcase "test4" begin
        @test true
    end
end

Instead using the following pattern works:

runtests.jl

using XUnit, Distributed

# add workers
exeflags = Base.julia_cmd()
push!(exeflags.exec, "--startup-file=no")
push!(exeflags.exec, "--project=$(Base.active_project())")
exename = popfirst!(exeflags.exec)
withenv("JULIA_NUM_THREADS" => 1, "OPENBLAS_NUM_THREADS" => 1) do
    addprocs(2; exename, exeflags)
end

@everywhere using XUnit
runtests("tests.jl")

tests.jl

using XUnit

@testset runner=DistributedTestRunner() "WIP" begin
    @testcase "test1" begin
        @test true
    end

    @testcase "test2" begin
        @test true
    end

    @testcase "test3" begin
        @test true
    end

    @testcase "test4" begin
        @test true
    end
end

I guess XUnit.runtests sets up some required state, but it's not clear to me whether that is intended? The README doesn't even mention XUnit.runtests...

maleadt avatar Jun 30 '23 06:06 maleadt