Skip to content

Commit 0ec52dd

Browse files
committed
test nested inits
1 parent d70bcbe commit 0ec52dd

File tree

1 file changed

+82
-41
lines changed

1 file changed

+82
-41
lines changed

test/runtests.jl

Lines changed: 82 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,35 @@
11
using Test
22

3-
function writepkg(name, precomp::Bool, submod::Bool)
3+
function writepkg(name, precomp::Bool, sub::Union{Symbol, Nothing})
44
action = """
55
global flag = true
66
"""
77

8-
if submod
9-
open("$(name)_submod.jl", "w") do io
10-
println(io, """
11-
export SubModule
12-
module SubModule
13-
using Colors
14-
flag = true
15-
end
16-
""")
8+
if sub === :module
9+
sub_action = """
10+
export SubModule
11+
module SubModule
12+
using Colors
13+
flag = true
14+
end
15+
"""
16+
elseif sub === :file
17+
sub_action = """
18+
global subflag = false
19+
@init begin
20+
global subflag = true
21+
end
22+
"""
23+
end
24+
@assert sub === :module || sub === :file || sub === nothing
25+
26+
if sub !== nothing
27+
open("$(name)_sub.jl", "w") do io
28+
println(io, sub_action)
1729
end
1830

1931
action *= """
20-
include("$(name)_submod.jl")
32+
include("$(name)_sub.jl")
2133
"""
2234
end
2335

@@ -31,10 +43,8 @@ using Requires
3143
3244
flag = false
3345
34-
function __init__()
35-
@require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" begin
36-
$(action)
37-
end
46+
@init @require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" begin
47+
$(action)
3848
end
3949
4050
end
@@ -48,22 +58,32 @@ end
4858
npcdir = joinpath("FooNPC", "src")
4959
mkpath(npcdir)
5060
cd(npcdir) do
51-
writepkg("FooNPC", false, false)
61+
writepkg("FooNPC", false, nothing)
5262
end
5363
npcdir = joinpath("FooPC", "src")
5464
mkpath(npcdir)
5565
cd(npcdir) do
56-
writepkg("FooPC", true, false)
66+
writepkg("FooPC", true, nothing)
67+
end
68+
npcdir = joinpath("FooSubModNPC", "src")
69+
mkpath(npcdir)
70+
cd(npcdir) do
71+
writepkg("FooSubModNPC", false, :module)
5772
end
58-
npcdir = joinpath("FooSubNPC", "src")
73+
npcdir = joinpath("FooSubModPC", "src")
5974
mkpath(npcdir)
6075
cd(npcdir) do
61-
writepkg("FooSubNPC", false, true)
76+
writepkg("FooSubModPC", true, :module)
6277
end
63-
npcdir = joinpath("FooSubPC", "src")
78+
npcdir = joinpath("FooSubIncNPC", "src")
6479
mkpath(npcdir)
6580
cd(npcdir) do
66-
writepkg("FooSubPC", true, true)
81+
writepkg("FooSubIncNPC", false, :file)
82+
end
83+
npcdir = joinpath("FooSubIncPC", "src")
84+
mkpath(npcdir)
85+
cd(npcdir) do
86+
writepkg("FooSubIncPC", true, :file)
6787
end
6888
end
6989
push!(LOAD_PATH, pkgsdir)
@@ -72,52 +92,73 @@ end
7292
@test !FooNPC.flag
7393
@eval using FooPC
7494
@test !FooPC.flag
75-
@eval using FooSubNPC
76-
@test !(:SubModule in names(FooSubNPC))
77-
@eval using FooSubPC
78-
@test !(:SubModule in names(FooSubPC))
95+
@eval using FooSubModNPC
96+
@test !(:SubModule in names(FooSubModNPC))
97+
@eval using FooSubModPC
98+
@test !(:SubModule in names(FooSubModPC))
99+
@eval using FooSubIncPC
100+
@test !isdefined(FooSubIncPC, :subflag)
101+
@eval using FooSubIncNPC
102+
@test !isdefined(FooSubIncNPC, :subflag)
79103

80104
@eval using Colors
81105

82106
@test FooNPC.flag
83107
@test FooPC.flag
84-
@test :SubModule in names(FooSubNPC)
85-
@test FooSubNPC.SubModule.flag
86-
@test :SubModule in names(FooSubPC)
87-
@test FooSubPC.SubModule.flag
108+
@test :SubModule in names(FooSubModNPC)
109+
@test FooSubModNPC.SubModule.flag
110+
@test :SubModule in names(FooSubModPC)
111+
@test FooSubModPC.SubModule.flag
112+
@test_broken FooSubIncPC.subflag
113+
@test_broken FooSubIncNPC.subflag
88114

89115
cd(pkgsdir) do
90116
npcdir = joinpath("FooAfterNPC", "src")
91117
mkpath(npcdir)
92118
cd(npcdir) do
93-
writepkg("FooAfterNPC", false, false)
119+
writepkg("FooAfterNPC", false, nothing)
94120
end
95121
pcidr = joinpath("FooAfterPC", "src")
96122
mkpath(pcidr)
97123
cd(pcidr) do
98-
writepkg("FooAfterPC", true, false)
124+
writepkg("FooAfterPC", true, nothing)
125+
end
126+
sanpcdir = joinpath("FooSubModAfterNPC", "src")
127+
mkpath(sanpcdir)
128+
cd(sanpcdir) do
129+
writepkg("FooSubModAfterNPC", false, :module)
99130
end
100-
sanpcdir = joinpath("FooSubAfterNPC", "src")
131+
sapcdir = joinpath("FooSubModAfterPC", "src")
132+
mkpath(sapcdir)
133+
cd(sapcdir) do
134+
writepkg("FooSubModAfterPC", true, :module)
135+
end
136+
sanpcdir = joinpath("FooSubIncAfterNPC", "src")
101137
mkpath(sanpcdir)
102138
cd(sanpcdir) do
103-
writepkg("FooSubAfterNPC", false, true)
139+
writepkg("FooSubIncAfterNPC", false, :file)
104140
end
105-
sapcdir = joinpath("FooSubAfterPC", "src")
141+
sapcdir = joinpath("FooSubIncAfterPC", "src")
106142
mkpath(sapcdir)
107143
cd(sapcdir) do
108-
writepkg("FooSubAfterPC", true, true)
144+
writepkg("FooSubIncAfterPC", true, :file)
109145
end
110146
end
111147

112148
@eval using FooAfterNPC
113149
@eval using FooAfterPC
114-
@eval using FooSubAfterNPC
115-
@eval using FooSubAfterPC
150+
@eval using FooSubModAfterNPC
151+
@eval using FooSubModAfterPC
152+
@eval using FooSubIncAfterNPC
153+
@eval using FooSubIncModAfterPC
116154
@test FooAfterNPC.flag
117155
@test FooAfterPC.flag
118-
@test :SubModule in names(FooSubAfterNPC)
119-
@test FooSubAfterNPC.SubModule.flag
120-
@test :SubModule in names(FooSubAfterPC)
121-
@test FooSubAfterPC.SubModule.flag
156+
@test :SubModule in names(FooSubModAfterNPC)
157+
@test FooSubModAfterNPC.SubModule.flag
158+
@test :SubModule in names(FooSubModAfterPC)
159+
@test FooSubModAfterPC.SubModule.flag
160+
@test FooSubIncAfterPC.subflag
161+
@test FooSubIncAfterNPC.subflag
162+
122163
end
123164
end

0 commit comments

Comments
 (0)