From 8a4aafdd7d3dd5b9a9f271668c83e279ffab98f6 Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Sat, 28 Oct 2023 03:53:49 -0400 Subject: [PATCH 1/4] Registry consistency tests: For every version, check that each compat entry has a corresponding deps entry --- src/registry_testing.jl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/registry_testing.jl b/src/registry_testing.jl index e5b4c9a3..59ba68be 100644 --- a/src/registry_testing.jl +++ b/src/registry_testing.jl @@ -206,6 +206,9 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) # Compat.toml testing compatfile = abspath(data["path"], "Compat.toml") if isfile(compatfile) + # If Compat.toml exists, Deps.toml must exist. + Test.@test isfile(depsfile) + compat = Pkg.TOML.parsefile(compatfile) # Test that all names with compat is a dependency compatnames = Set{String}(x for (_, d) in compat for (x, _) in d) @@ -238,6 +241,22 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) else @debug "Compat.toml file does not exist" compatfile end + + # https://github.com/JuliaRegistries/RegistryCI.jl/issues/522 + # For every version, each compat entry has a corresponding deps entry. + if isfile(compatfile) + compat_uncompressed = RegistryTools.Compress.load(compatfile) + deps_uncompressed = isfile(depsfile) ? RegistryTools.Compress.load(depsfile) : Dict() + for v in keys(vers) + compat_for_this_v = get(compat_uncompressed, v, Dict()) + deps_for_this_v = get(deps_uncompressed, v, Dict()) + Test.@test compat_for_this_v isa AbstractDict + Test.@test deps_for_this_v isa AbstractDict + for compat_pkgname in keys(compat_for_this_v) + @test haskey(deps_for_this_v, compat_pkgname) + end + end + end end # Make sure all paths are unique path_parts = [splitpath(data["path"]) for (_, data) in reg["packages"]] From ed9b6cbfb5d22c37dd9ebe4e3fc7e7b8a9376231 Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Sat, 28 Oct 2023 03:59:56 -0400 Subject: [PATCH 2/4] Fix an error --- src/registry_testing.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/registry_testing.jl b/src/registry_testing.jl index 59ba68be..14dd372a 100644 --- a/src/registry_testing.jl +++ b/src/registry_testing.jl @@ -253,7 +253,7 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) Test.@test compat_for_this_v isa AbstractDict Test.@test deps_for_this_v isa AbstractDict for compat_pkgname in keys(compat_for_this_v) - @test haskey(deps_for_this_v, compat_pkgname) + Test.@test haskey(deps_for_this_v, compat_pkgname) end end end From 31e929241dadbe093d08b2b16b2dd2d9d43d025e Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Sat, 28 Oct 2023 04:09:43 -0400 Subject: [PATCH 3/4] If the package has a compat entry for `julia`, there is no need to have `julia` listed in Deps.toml. --- src/registry_testing.jl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/registry_testing.jl b/src/registry_testing.jl index 14dd372a..e27409f6 100644 --- a/src/registry_testing.jl +++ b/src/registry_testing.jl @@ -206,9 +206,6 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) # Compat.toml testing compatfile = abspath(data["path"], "Compat.toml") if isfile(compatfile) - # If Compat.toml exists, Deps.toml must exist. - Test.@test isfile(depsfile) - compat = Pkg.TOML.parsefile(compatfile) # Test that all names with compat is a dependency compatnames = Set{String}(x for (_, d) in compat for (x, _) in d) @@ -244,6 +241,10 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) # https://github.com/JuliaRegistries/RegistryCI.jl/issues/522 # For every version, each compat entry has a corresponding deps entry. + # + # Note: it is legal for a package to have Compat.toml but not have + # Deps.toml. Specifically, this is legal if (and only if) the package + # does not have any dependencies, and does have a compat entry for `julia`. if isfile(compatfile) compat_uncompressed = RegistryTools.Compress.load(compatfile) deps_uncompressed = isfile(depsfile) ? RegistryTools.Compress.load(depsfile) : Dict() @@ -253,7 +254,13 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) Test.@test compat_for_this_v isa AbstractDict Test.@test deps_for_this_v isa AbstractDict for compat_pkgname in keys(compat_for_this_v) - Test.@test haskey(deps_for_this_v, compat_pkgname) + # If the package has a compat entry for `julia`, there + # is no need to have `julia` listed in Deps.toml. + # However, every other compat entry needs to be listed + # in Deps.toml. + if compat_pkgname != julia" + Test.@test haskey(deps_for_this_v, compat_pkgname) + end end end end From 7d8357084702eaf20f0367d2258c3a3842699324 Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Sat, 28 Oct 2023 04:16:30 -0400 Subject: [PATCH 4/4] Fix a syntax error --- src/registry_testing.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/registry_testing.jl b/src/registry_testing.jl index e27409f6..8f4e457d 100644 --- a/src/registry_testing.jl +++ b/src/registry_testing.jl @@ -258,7 +258,7 @@ function test(path=pwd(); registry_deps::Vector{<:AbstractString}=String[]) # is no need to have `julia` listed in Deps.toml. # However, every other compat entry needs to be listed # in Deps.toml. - if compat_pkgname != julia" + if compat_pkgname != "julia" Test.@test haskey(deps_for_this_v, compat_pkgname) end end