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 )
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
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__ ,
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
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
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