Skip to content

Commit 21ebabf

Browse files
authored
simplify code loading test now that TOML files are parsed with a real TOML parser (JuliaLang#42328)
1 parent 4c3ae20 commit 21ebabf

File tree

1 file changed

+34
-45
lines changed

1 file changed

+34
-45
lines changed

test/loading.jl

Lines changed: 34 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,6 @@ end
132132
@test_throws ArgumentError parse(UUID, "not a UUID")
133133
@test tryparse(UUID, "either is this") === nothing
134134

135-
function subset(v::Vector{T}, m::Int) where T
136-
T[v[j] for j = 1:length(v) if ((m >>> (j - 1)) & 1) == 1]
137-
end
138-
139-
function perm(p::Vector, i::Int)
140-
for j = length(p):-1:1
141-
i, k = divrem(i, j)
142-
p[j], p[k+1] = p[k+1], p[j]
143-
end
144-
return p
145-
end
146-
147135
@testset "explicit_project_deps_get" begin
148136
mktempdir() do dir
149137
project_file = joinpath(dir, "Project.toml")
@@ -152,39 +140,40 @@ end
152140
proj_uuid = dummy_uuid(project_file)
153141
root_uuid = uuid4()
154142
this_uuid = uuid4()
155-
# project file to subset/permute
156-
lines = split("""
157-
name = "Root"
158-
uuid = "$root_uuid"
159-
[deps]
160-
This = "$this_uuid"
161-
""", '\n')
162-
N = length(lines)
163-
# test every permutation of every subset of lines
164-
for m = 0:2^N-1
165-
s = subset(lines, m) # each subset of lines
166-
for i = 1:factorial(count_ones(m))
167-
p = perm(s, i) # each permutation of the subset
168-
open(project_file, write=true) do io
169-
for line in p
170-
println(io, line)
171-
end
172-
end
173-
# look at lines and their order
174-
n = findfirst(line -> startswith(line, "name"), p)
175-
u = findfirst(line -> startswith(line, "uuid"), p)
176-
d = findfirst(line -> line == "[deps]", p)
177-
t = findfirst(line -> startswith(line, "This"), p)
178-
# look up various packages by name
179-
root = Base.explicit_project_deps_get(project_file, "Root")
180-
this = Base.explicit_project_deps_get(project_file, "This")
181-
that = Base.explicit_project_deps_get(project_file, "That")
182-
# test that the correct answers are given
183-
@test root == (something(n, N+1) something(d, N+1) ? nothing :
184-
something(u, N+1) < something(d, N+1) ? root_uuid : proj_uuid)
185-
@test this == (something(d, N+1) < something(t, N+1) N ? this_uuid : nothing)
186-
@test that == nothing
187-
end
143+
144+
old_load_path = copy(LOAD_PATH)
145+
try
146+
copy!(LOAD_PATH, [project_file])
147+
write(project_file, """
148+
name = "Root"
149+
uuid = "$root_uuid"
150+
[deps]
151+
This = "$this_uuid"
152+
""")
153+
# look up various packages by name
154+
root = Base.identify_package("Root")
155+
this = Base.identify_package("This")
156+
that = Base.identify_package("That")
157+
158+
@test root.uuid == root_uuid
159+
@test this.uuid == this_uuid
160+
@test that == nothing
161+
162+
write(project_file, """
163+
name = "Root"
164+
This = "$this_uuid"
165+
[deps]
166+
""")
167+
# look up various packages by name
168+
root = Base.identify_package("Root")
169+
this = Base.identify_package("This")
170+
that = Base.identify_package("That")
171+
172+
@test root.uuid == proj_uuid
173+
@test this == nothing
174+
@test that == nothing
175+
finally
176+
copy!(LOAD_PATH, old_load_path)
188177
end
189178
end
190179
end

0 commit comments

Comments
 (0)