From 5c1e80073afccd31df3c2ffb7ab9e9695f01f982 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Sun, 23 Feb 2025 23:03:06 -0500 Subject: [PATCH 1/2] add error that explains PackageSpec.repo is a private field --- src/API.jl | 5 ++++- src/Types.jl | 2 +- test/new.jl | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/API.jl b/src/API.jl index 834fbdcef5..75f541240f 100644 --- a/src/API.jl +++ b/src/API.jl @@ -1557,7 +1557,10 @@ end function handle_package_input!(pkg::PackageSpec) if pkg.path !== nothing && pkg.url !== nothing - pkgerror("`path` and `url` are conflicting specifications") + pkgerror("Conflicting `path` and `url` in PackageSpec") + end + if pkg.repo.source !== nothing || pkg.repo.rev !== nothing || pkg.repo.subdir !== nothing + pkgerror("`repo` is a private field of PackageSpec and should not be set directly") end pkg.repo = Types.GitRepo(rev = pkg.rev, source = pkg.url !== nothing ? pkg.url : pkg.path, subdir = pkg.subdir) diff --git a/src/Types.jl b/src/Types.jl index 5f72f49c96..ca670c4b8b 100644 --- a/src/Types.jl +++ b/src/Types.jl @@ -92,7 +92,7 @@ mutable struct PackageSpec uuid::Union{Nothing,UUID} version::Union{Nothing,VersionTypes,String} tree_hash::Union{Nothing,SHA1} - repo::GitRepo + repo::GitRepo # private path::Union{Nothing,String} pinned::Bool # used for input only diff --git a/test/new.jl b/test/new.jl index 2540f99bc8..213eeca646 100644 --- a/test/new.jl +++ b/test/new.jl @@ -1831,6 +1831,8 @@ end Pkg.dependencies(exuuid) do pkg @test pkg.version > v"0.3.0" end + + @test_throws PkgError("`repo` is a private field of PackageSpec and should not be set directly") Pkg.add([PackageSpec(;repo=LibGit2.GitRepo(url="someurl"))]) end end @@ -2069,7 +2071,7 @@ end end end end - end + end end # From bc665e62f32b74e930723e6e26f6b6cb95a36e63 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Mon, 24 Feb 2025 22:47:04 -0500 Subject: [PATCH 2/2] Update new.jl --- test/new.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/new.jl b/test/new.jl index 213eeca646..586f955c36 100644 --- a/test/new.jl +++ b/test/new.jl @@ -1832,7 +1832,7 @@ end @test pkg.version > v"0.3.0" end - @test_throws PkgError("`repo` is a private field of PackageSpec and should not be set directly") Pkg.add([PackageSpec(;repo=LibGit2.GitRepo(url="someurl"))]) + @test_throws PkgError("`repo` is a private field of PackageSpec and should not be set directly") Pkg.add([PackageSpec(;repo=Pkg.Types.GitRepo(url="someurl"))]) end end