Skip to content

Commit b8bea6c

Browse files
authored
New manifest format: Fix upgrade_manifest and raw dict entry for nothing (#2610)
1 parent bed8c38 commit b8bea6c

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/manifest.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ function validate_manifest(julia_version::Union{Nothing,VersionNumber}, manifest
131131
end
132132

133133
function Manifest(raw::Dict, f_or_io::Union{String, IO})::Manifest
134-
julia_version = isnothing(raw["julia_version"]) ? nothing : VersionNumber(raw["julia_version"])
134+
julia_version = raw["julia_version"] == "nothing" ? nothing : VersionNumber(raw["julia_version"])
135135
manifest_format = VersionNumber(raw["manifest_format"])
136136
if !in(manifest_format.major, 1:2)
137137
if f_or_io isa IO
@@ -201,7 +201,7 @@ end
201201
function convert_flat_format_manifest(old_raw_manifest::Dict)
202202
new_raw_manifest = Dict{String, Any}(
203203
"deps" => old_raw_manifest,
204-
"julia_version" => nothing,
204+
"julia_version" => "nothing", # must be a string here to match raw dict
205205
"manifest_format" => "1.0.0" # must be a string here to match raw dict
206206
)
207207
return new_raw_manifest

test/manifests.jl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,35 @@ using ..Utils
8686
@test_logs (:warn,) Pkg.activate(env_dir; io=io)
8787
end
8888
end
89+
90+
@testset "Pkg.upgrade_manifest()" begin
91+
env_dir = joinpath(@__DIR__, "manifest", "formats", "v1.0")
92+
env_manifest = joinpath(env_dir, "Manifest.toml")
93+
cp(env_manifest, string(env_manifest, "_backup"))
94+
try
95+
isfile(env_manifest) || error("Reference manifest is missing")
96+
if Base.is_v1_format_manifest(Base.parsed_toml(env_manifest)) == false
97+
error("Reference manifest file at $(env_manifest) is invalid")
98+
end
99+
isolate(loaded_depot=true) do
100+
io = IOBuffer()
101+
Pkg.activate(env_dir; io=io)
102+
output = String(take!(io))
103+
@test occursin(r"Activating.*project at.*`.*v1.0`", output)
104+
@test Base.is_v1_format_manifest(Base.parsed_toml(env_manifest))
105+
106+
Pkg.upgrade_manifest()
107+
@test Base.is_v1_format_manifest(Base.parsed_toml(env_manifest)) == false
108+
Pkg.activate(env_dir; io=io)
109+
output = String(take!(io))
110+
@test occursin(r"Activating.*project at.*`.*v1.0`", output)
111+
@test Pkg.Types.Context().env.manifest.manifest_format == v"2.0.0"
112+
end
113+
finally
114+
cp(string(env_manifest, "_backup"), env_manifest, force = true)
115+
rm(string(env_manifest, "_backup"))
116+
end
117+
end
89118
end
90119

91120

0 commit comments

Comments
 (0)