Skip to content

Commit 45d85d5

Browse files
Fix tests on Julia v1.12 (#58)
* ignore Manifests for all Julia versions * fix tests related to world age issues on Julia v1.12
1 parent b65bea7 commit 45d85d5

File tree

2 files changed

+155
-47
lines changed

2 files changed

+155
-47
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Manifest.toml
1+
Manifest*.toml
22
docs/build
33
docs/src/index.md
44
docs/src/authors.md

test/trixi_include.jl

Lines changed: 154 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,32 @@
1111
# Use `@trixi_testset`, which wraps code in a temporary module, and call
1212
# `trixi_include` with `@__MODULE__` in order to isolate this test.
1313
@trixi_test_nowarn trixi_include(@__MODULE__, path)
14-
@test @isdefined x
15-
@test x == 4
14+
if VERSION >= v"1.12"
15+
mod = @__MODULE__
16+
@test @invokelatest isdefined(mod, :x)
17+
@test (@invokelatest mod.x) == 4
18+
else
19+
@test @isdefined x
20+
@test x == 4
21+
end
1622

1723
@trixi_test_nowarn trixi_include(@__MODULE__, path, x = 7)
1824

19-
@test x == 7
25+
if VERSION >= v"1.12"
26+
mod = @__MODULE__
27+
@test (@invokelatest mod.x) == 7
28+
else
29+
@test x == 7
30+
end
2031

2132
# Verify default version (that includes in `Main`)
2233
@trixi_test_nowarn trixi_include(path, x = 11)
23-
@test Main.x == 11
34+
if VERSION >= v"1.12"
35+
mod = Main
36+
@test (@invokelatest mod.x) == 11
37+
else
38+
@test Main.x == 11
39+
end
2440

2541
@test_throws "assignments [:y] not found" trixi_include(@__MODULE__,
2642
path, y = 3)
@@ -93,22 +109,44 @@
93109
# in order to isolate this test.
94110
Base.include(@__MODULE__, path1)
95111
@trixi_test_nowarn trixi_include(@__MODULE__, path2)
96-
@test @isdefined x
97-
# This is the default `maxiters` inserted by `trixi_include`
98-
@test x == 10^5
112+
if VERSION >= v"1.12"
113+
mod = @__MODULE__
114+
@test @invokelatest isdefined(mod, :x)
115+
# This is the default `maxiters` inserted by `trixi_include`
116+
@test (@invokelatest mod.x) == 10^5
117+
else
118+
@test @isdefined x
119+
# This is the default `maxiters` inserted by `trixi_include`
120+
@test x == 10^5
121+
end
99122

100123
@trixi_test_nowarn trixi_include(@__MODULE__, path2, maxiters = 7)
101124
# Test that `maxiters` got overwritten
102-
@test x == 7
125+
if VERSION >= v"1.12"
126+
mod = @__MODULE__
127+
@test (@invokelatest mod.x) == 7
128+
else
129+
@test x == 7
130+
end
103131

104132
# Verify that existing `maxiters` is added exactly once in the
105133
# following cases:
106134
# case 1) `maxiters` is *before* semicolon in included file
107135
@trixi_test_nowarn trixi_include(@__MODULE__, path3, maxiters = 11)
108-
@test y == 11
136+
if VERSION >= v"1.12"
137+
mod = @__MODULE__
138+
@test (@invokelatest mod.y) == 11
139+
else
140+
@test y == 11
141+
end
109142
# case 2) `maxiters` is *after* semicolon in included file
110143
@trixi_test_nowarn trixi_include(@__MODULE__, path3, maxiters = 14)
111-
@test y == 14
144+
if VERSION >= v"1.12"
145+
mod = @__MODULE__
146+
@test (@invokelatest mod.y) == 14
147+
else
148+
@test y == 14
149+
end
112150
end
113151
end
114152
end
@@ -142,22 +180,38 @@
142180
@test_warn "assignments" trixi_include(@__MODULE__, path2;
143181
x = 10, y = 20, z = 30,
144182
replace_assignments_recursive = true)
145-
@test @isdefined x
146-
@test @isdefined y
147-
@test @isdefined z
148-
@test x == 10 # Overridden from nested file
149-
@test y == 20 # Overridden from nested file
150-
@test z == 30 # Overridden from top file
151-
183+
if VERSION >= v"1.12"
184+
mod = @__MODULE__
185+
@test @invokelatest isdefined(mod, :x)
186+
@test @invokelatest isdefined(mod, :y)
187+
@test @invokelatest isdefined(mod, :z)
188+
@test (@invokelatest mod.x) == 10 # Overridden from nested file
189+
@test (@invokelatest mod.y) == 20 # Overridden from nested file
190+
@test (@invokelatest mod.z) == 30 # Overridden from nested file
191+
else
192+
@test @isdefined x
193+
@test @isdefined y
194+
@test @isdefined z
195+
@test x == 10 # Overridden from nested file
196+
@test y == 20 # Overridden from nested file
197+
@test z == 30 # Overridden from top file
198+
end
152199
# Test that kwargs are NOT passed recursively
153200
@trixi_test_nowarn trixi_include(@__MODULE__, path2;
154201
x = 10, y = 20, z = 30,
155202
replace_assignments_recursive = false,
156203
enable_assignment_validation = false)
157204

158-
@test x == 1 # Not overridden from nested file
159-
@test y == 2 # Not overridden from nested file
160-
@test z == 30 # Overridden from top file
205+
if VERSION >= v"1.12"
206+
mod = @__MODULE__
207+
@test (@invokelatest mod.x) == 1 # Not overridden from nested file
208+
@test (@invokelatest mod.y) == 2 # Not overridden from nested file
209+
@test (@invokelatest mod.z) == 30 # Overridden from nested file
210+
else
211+
@test x == 1 # Not overridden from nested file
212+
@test y == 2 # Not overridden from nested file
213+
@test z == 30 # Overridden from top file
214+
end
161215

162216
# Without disabling validation, this should result in an error:
163217
@test_throws "assignments [:x, :y] not found" trixi_include(@__MODULE__,
@@ -189,10 +243,18 @@
189243
# Test that top-level kwargs override existing nested kwargs
190244
trixi_include(@__MODULE__, path4; a = 500, b = 600,
191245
replace_assignments_recursive = true)
192-
@test @isdefined a
193-
@test @isdefined b
194-
@test a == 500 # Top-level override wins over nested explicit kwarg
195-
@test b == 600 # Passed through to nested file
246+
if VERSION >= v"1.12"
247+
mod = @__MODULE__
248+
@test @invokelatest isdefined(mod, :a)
249+
@test @invokelatest isdefined(mod, :b)
250+
@test (@invokelatest mod.a) == 500 # Top-level override wins over nested explicit kwarg
251+
@test (@invokelatest mod.b) == 600 # Passed through to nested file
252+
else
253+
@test @isdefined a
254+
@test @isdefined b
255+
@test a == 500 # Top-level override wins over nested explicit kwarg
256+
@test b == 600 # Passed through to nested file
257+
end
196258
end
197259
end
198260

@@ -218,8 +280,14 @@
218280
# Test bare symbol with recursive override
219281
@trixi_test_nowarn trixi_include(@__MODULE__, path6; x = 999,
220282
replace_assignments_recursive = true)
221-
@test @isdefined x
222-
@test x == 999 # Top-level override
283+
if VERSION >= v"1.12"
284+
mod = @__MODULE__
285+
@test @invokelatest isdefined(mod, :x)
286+
@test (@invokelatest mod.x) == 999 # Top-level override
287+
else
288+
@test @isdefined x
289+
@test x == 999 # Top-level override
290+
end
223291
end
224292
end
225293

@@ -256,12 +324,22 @@
256324
trixi_include(@__MODULE__, path9; level1 = 111,
257325
level2 = 222, level3 = 333,
258326
replace_assignments_recursive = true)
259-
@test @isdefined level1
260-
@test @isdefined level2
261-
@test @isdefined level3
262-
@test level1 == 111 # Passed through 3 levels
263-
@test level2 == 222 # Top-level override wins over level3 explicit kwarg
264-
@test level3 == 333 # Direct override
327+
if VERSION >= v"1.12"
328+
mod = @__MODULE__
329+
@test @invokelatest isdefined(mod, :level1)
330+
@test @invokelatest isdefined(mod, :level2)
331+
@test @invokelatest isdefined(mod, :level3)
332+
@test (@invokelatest mod.level1) == 111 # Passed through 3 levels
333+
@test (@invokelatest mod.level2) == 222 # Top-level override wins over level3 explicit kwarg
334+
@test (@invokelatest mod.level3) == 333 # Direct override
335+
else
336+
@test @isdefined level1
337+
@test @isdefined level2
338+
@test @isdefined level3
339+
@test level1 == 111 # Passed through 3 levels
340+
@test level2 == 222 # Top-level override wins over level3 explicit kwarg
341+
@test level3 == 333 # Direct override
342+
end
265343
end
266344
end
267345
end
@@ -283,23 +361,44 @@ end
283361
# Use `@trixi_testset`, which wraps code in a temporary module, and call
284362
# `trixi_include_changeprecision` with `@__MODULE__` in order to isolate this test.
285363
@trixi_test_nowarn trixi_include_changeprecision(Float32, @__MODULE__, path)
286-
@test @isdefined x
287-
@test x == 4
288-
@test typeof(x) == Float32
289-
@test @isdefined y
290-
@test eltype(y) == Float32
364+
if VERSION >= v"1.12"
365+
mod = @__MODULE__
366+
@test @invokelatest isdefined(mod, :x)
367+
@test (@invokelatest mod.x) == 4
368+
@test eltype(@invokelatest mod.x) == Float32
369+
@test @invokelatest isdefined(mod, :y)
370+
@test eltype(@invokelatest mod.y) == Float32
371+
else
372+
@test @isdefined x
373+
@test x == 4
374+
@test typeof(x) == Float32
375+
@test @isdefined y
376+
@test eltype(y) == Float32
377+
end
291378

292379
# Manually overwritten assignments are also changed
293380
@trixi_test_nowarn trixi_include_changeprecision(Float32, @__MODULE__, path,
294381
x = 7.0)
295382

296-
@test x == 7
297-
@test typeof(x) == Float32
383+
if VERSION >= v"1.12"
384+
mod = @__MODULE__
385+
@test (@invokelatest mod.x) == 7
386+
@test eltype(@invokelatest mod.x) == Float32
387+
else
388+
@test x == 7
389+
@test typeof(x) == Float32
390+
end
298391

299392
# Verify default version (that includes in `Main`)
300393
@trixi_test_nowarn trixi_include_changeprecision(Float32, path, x = 11.0)
301-
@test Main.x == 11
302-
@test typeof(Main.x) == Float32
394+
if VERSION >= v"1.12"
395+
mod = Main
396+
@test (@invokelatest mod.x) == 11
397+
@test eltype(@invokelatest mod.x) == Float32
398+
else
399+
@test Main.x == 11
400+
@test typeof(Main.x) == Float32
401+
end
303402
end
304403
end
305404

@@ -327,11 +426,20 @@ end
327426
# `trixi_include_changeprecision` with `@__MODULE__` in order to isolate this test.
328427
@trixi_test_nowarn trixi_include_changeprecision(Float32, @__MODULE__,
329428
path2)
330-
@test @isdefined x
331-
@test x == 7
332-
@test typeof(x) == Float32
333-
@test @isdefined y
334-
@test eltype(y) == Float32
429+
if VERSION >= v"1.12"
430+
mod = @__MODULE__
431+
@test @invokelatest isdefined(mod, :x)
432+
@test (@invokelatest mod.x) == 7
433+
@test eltype(@invokelatest mod.x) == Float32
434+
@test @invokelatest isdefined(mod, :y)
435+
@test eltype(@invokelatest mod.y) == Float32
436+
else
437+
@test @isdefined x
438+
@test x == 7
439+
@test typeof(x) == Float32
440+
@test @isdefined y
441+
@test eltype(y) == Float32
442+
end
335443
end
336444
end
337445
end

0 commit comments

Comments
 (0)