-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathprecompile.jl
50 lines (39 loc) · 1.28 KB
/
precompile.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import PrecompileTools: @setup_workload, @compile_workload
module _ReTestPrecompile
const x = 1
end
module _ReTestPrecompileTests
import .._ReTestPrecompile
using ..ReTest
@testset "precompilation workload" begin
@test _ReTestPrecompile.x == 1
@test false
end
end # _ReTestPrecompileTestsModule
@setup_workload begin
stderr_pipe = Pipe()
stdout_pipe = Pipe()
@compile_workload begin
try
redirect_stdio(; stderr=stderr_pipe, stdout=stdout_pipe) do
retest(_ReTestPrecompile, _ReTestPrecompileTests; recursive=false, stats=true, spin=true)
end
catch ex
close(stderr_pipe.in)
close(stdout_pipe.in)
if !(ex isa Test.TestSetException)
stdout_str = read(stdout_pipe, String)
stderr_str = read(stderr_pipe, String)
@error "Precompilation failed, this is the captured stdout ($(length(stdout_str)) chars):"
println(stdout_str)
@error "And this is the captured stderr ($(length(stderr_str)) chars):"
println(stderr_str)
rethrow()
end
finally
empty!(ReTest.TESTED_MODULES)
close(stderr_pipe)
close(stdout_pipe)
end
end
end