Skip to content

Commit 0f3d119

Browse files
Always activate test env on workers (#229)
* Always activate test env on workers * Bump version * fixup! Always activate test env on workers * fixup! fixup! Always activate test env on workers
1 parent c449b77 commit 0f3d119

File tree

9 files changed

+206
-2
lines changed

9 files changed

+206
-2
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ReTestItems"
22
uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
3-
version = "1.34.0"
3+
version = "1.34.1"
44

55
[deps]
66
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"

src/ReTestItems.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,10 @@ end
528528
function start_worker(proj_name, nworker_threads::String, worker_init_expr::Expr, ntestitems::Int; worker_num=nothing)
529529
w = Worker(; threads=nworker_threads)
530530
i = worker_num == nothing ? "" : " $worker_num"
531+
proj = Base.active_project()
531532
# remote_fetch here because we want to make sure the worker is all setup before starting to eval testitems
532533
remote_fetch(w, quote
534+
Base.set_active_project($proj)
533535
using ReTestItems, Test
534536
Test.TESTSET_PRINT_ENABLE[] = false
535537
const GLOBAL_TEST_CONTEXT = ReTestItems.TestContext($proj_name, $ntestitems)

test/integrationtests.jl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const TEST_PKG_DIR = joinpath(_TEST_DIR, "packages")
2121

2222
# Note "DontPass.jl" is handled specifically below, as it's the package which doesn't have
2323
# passing tests. Other packages should pass tests and be added here:
24-
const TEST_PKGS = ("NoDeps.jl", "TestsInSrc.jl", "TestProjectFile.jl", "TestEndExpr.jl")
24+
const TEST_PKGS = ("NoDeps.jl", "TestsInSrc.jl", "TestProjectFile.jl", "TestEndExpr.jl", "TestOnlyDeps.jl")
2525

2626
include(joinpath(_TEST_DIR, "_integration_test_tools.jl"))
2727

@@ -1586,4 +1586,16 @@ end
15861586
end
15871587
end
15881588

1589+
# https://github.com/JuliaTesting/ReTestItems.jl/issues/228
1590+
@testset "issues/228 workers always activate test env" begin
1591+
using ReTestItems
1592+
pkg = joinpath(TEST_PKG_DIR, "TestOnlyDeps.jl")
1593+
cmd = ```
1594+
$(Base.julia_cmd()) --project=$(pkg) -e '
1595+
using ReTestItems, TestOnlyDeps
1596+
runtests(TestOnlyDeps; nworkers=1)'
1597+
```
1598+
run(addenv(cmd, "JULIA_PROJECT" => pkg))
1599+
end
1600+
15891601
end # integrationtests.jl testset

test/packages/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ See `test/integrationtests.jl`.
1414
- *TestProjectFile.jl* - A package which has test-only dependencies declared in a `test/Project.toml`.
1515
- *MonoRepo.jl* - A package which depends on local, unregistered sub-packages. See `MonoRepo.jl/README.md`.
1616
- *TestEndExpr.jl* - A package which requires users to uphold an invariant which we would want to test is being upheld by all code run in the tests. This provides a use-case for the `test_end_expr` functionality.
17+
- *TestOnlyDeps.jl* - A package with tests that use test-only dependencies. This provides a test case for https://github.com/JuliaTesting/ReTestItems.jl/issues/228 when tests are run with at least 1 worker and with `JULIA_PROJECT` set.
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
# This file is machine-generated - editing it directly is not advised
2+
3+
julia_version = "1.10.2"
4+
manifest_format = "2.0"
5+
project_hash = "4aa9dd1cc0f1c38891f7a7adef47f97d0b97c130"
6+
7+
[[deps.ArgTools]]
8+
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
9+
version = "1.1.1"
10+
11+
[[deps.Artifacts]]
12+
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
13+
14+
[[deps.Base64]]
15+
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
16+
17+
[[deps.Dates]]
18+
deps = ["Printf"]
19+
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
20+
21+
[[deps.Downloads]]
22+
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
23+
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
24+
version = "1.6.0"
25+
26+
[[deps.FileWatching]]
27+
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
28+
29+
[[deps.InteractiveUtils]]
30+
deps = ["Markdown"]
31+
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
32+
33+
[[deps.LibCURL]]
34+
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
35+
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
36+
version = "0.6.4"
37+
38+
[[deps.LibCURL_jll]]
39+
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
40+
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
41+
version = "8.4.0+0"
42+
43+
[[deps.LibGit2]]
44+
deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
45+
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
46+
47+
[[deps.LibGit2_jll]]
48+
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
49+
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
50+
version = "1.6.4+0"
51+
52+
[[deps.LibSSH2_jll]]
53+
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
54+
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
55+
version = "1.11.0+1"
56+
57+
[[deps.Libdl]]
58+
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
59+
60+
[[deps.Logging]]
61+
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
62+
63+
[[deps.Markdown]]
64+
deps = ["Base64"]
65+
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
66+
67+
[[deps.MbedTLS_jll]]
68+
deps = ["Artifacts", "Libdl"]
69+
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
70+
version = "2.28.2+1"
71+
72+
[[deps.MozillaCACerts_jll]]
73+
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
74+
version = "2023.1.10"
75+
76+
[[deps.NetworkOptions]]
77+
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
78+
version = "1.2.0"
79+
80+
[[deps.Pkg]]
81+
deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
82+
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
83+
version = "1.10.0"
84+
85+
[[deps.Printf]]
86+
deps = ["Unicode"]
87+
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
88+
89+
[[deps.REPL]]
90+
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
91+
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
92+
93+
[[deps.Random]]
94+
deps = ["SHA"]
95+
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
96+
97+
[[deps.ReTestItems]]
98+
deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"]
99+
path = "../../.."
100+
uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
101+
version = "1.34.0"
102+
103+
[[deps.SHA]]
104+
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
105+
version = "0.7.0"
106+
107+
[[deps.Serialization]]
108+
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
109+
110+
[[deps.Sockets]]
111+
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
112+
113+
[[deps.TOML]]
114+
deps = ["Dates"]
115+
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
116+
version = "1.0.3"
117+
118+
[[deps.Tar]]
119+
deps = ["ArgTools", "SHA"]
120+
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
121+
version = "1.10.0"
122+
123+
[[deps.Test]]
124+
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
125+
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
126+
127+
[[deps.TestEnv]]
128+
deps = ["Pkg"]
129+
git-tree-sha1 = "aec63ef091b11d67040b8b35d2dcdfdc4567c4d0"
130+
uuid = "1e6cf692-eddd-4d53-88a5-2d735e33781b"
131+
version = "1.102.2"
132+
133+
[[deps.UUIDs]]
134+
deps = ["Random", "SHA"]
135+
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
136+
137+
[[deps.Unicode]]
138+
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
139+
140+
[[deps.Zlib_jll]]
141+
deps = ["Libdl"]
142+
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
143+
version = "1.2.13+1"
144+
145+
[[deps.nghttp2_jll]]
146+
deps = ["Artifacts", "Libdl"]
147+
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
148+
version = "1.52.0+1"
149+
150+
[[deps.p7zip_jll]]
151+
deps = ["Artifacts", "Libdl"]
152+
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
153+
version = "17.4.0+2"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name = "TestOnlyDeps"
2+
uuid = "76c907bd-870e-4a64-93bf-d19a8ad0be88"
3+
version = "0.1.0"
4+
5+
[deps]
6+
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
7+
8+
[extras]
9+
Example = "7876af07-990d-54b4-ab0e-23690620f79a"
10+
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
11+
TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
12+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
13+
14+
[targets]
15+
test = ["Example", "ReTestItems", "TOML", "Test"]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TestOnlyDeps
2+
3+
greet() = print("Hello World!")
4+
5+
end # module TestOnlyDeps
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
@testitem "use a test-only dep" begin
2+
using Example
3+
@test Example isa Module
4+
end
5+
6+
@testitem "deps as expected" begin
7+
using TOML, TestOnlyDeps
8+
proj = TOML.parsefile(joinpath(pkgdir(TestOnlyDeps), "Project.toml"))
9+
@test !haskey(proj["deps"], "Example")
10+
end
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
using ReTestItems
2+
using TestOnlyDeps
3+
4+
nworkers = parse(Int, get(ENV, "RETESTITEMS_NWORKERS", "1"))
5+
@assert nworkers > 0
6+
runtests(TestOnlyDeps; nworkers)

0 commit comments

Comments
 (0)