2222
2323@testset " Dependencies" begin
2424 name = " Foo_jll"
25- dep = Dependency (PackageSpec (; name = name); platforms= supported_platforms (; experimental= true , exclude= ! Sys. isapple))
26- @test Dependency (name) ≈ dep
25+ dep = Dependency (PackageSpec (; name = name); compat = " 0 " , platforms= supported_platforms (; experimental= true , exclude= ! Sys. isapple))
26+ @test Dependency (name; compat = " 0 " ) ≈ dep
2727 @test ! is_host_dependency (dep)
2828 @test is_target_dependency (dep)
2929 @test is_build_dependency (dep)
3030 @test is_runtime_dependency (dep)
3131 @test ! is_top_level_dependency (dep)
3232 @test getname (dep) == name
3333 @test getname (PackageSpec (; name = name)) == name
34- @test getpkg (dep) == PackageSpec (; name = name)
35- @test getcompat (dep) == " "
34+ @test getpkg (dep) == PackageSpec (; name = name, version = PKG_VERSIONS . VersionSpec ( v " 0 " ) )
35+ @test getcompat (dep) == " 0 "
3636
3737 build_version = v " 1.2.3"
38- dep_buildver = Dependency (PackageSpec (; name = name), build_version)
39- @test Dependency (name, build_version) == dep_buildver
38+ dep_buildver = Dependency (PackageSpec (; name = name), build_version; compat = " ~1.2 " )
39+ @test Dependency (name, build_version; compat = " ~1.2 " ) == dep_buildver
4040 @test getname (dep_buildver) == name
4141 @test getpkg (dep_buildver) == PackageSpec (; name = name, version = PKG_VERSIONS. VersionSpec (build_version))
42- @test getcompat (dep_buildver) == " "
42+ @test getcompat (dep_buildver) == " ~1.2 "
4343
44- # the same but with compat info
44+ # the same but with platforms argument
4545 dep_buildver = Dependency (PackageSpec (; name = name), build_version; compat = " ~1.2" , platforms= [Platform (" x86_64" , " linux" ; cxxstring_abi= " cxx11" )])
46- @test Dependency (name, build_version) ≈ dep_buildver
46+ @test Dependency (name, build_version; compat = " ~1.2 " ) ≈ dep_buildver
4747 @test getname (dep_buildver) == name
4848 @test getpkg (dep_buildver) == PackageSpec (; name = name, version = PKG_VERSIONS. VersionSpec (build_version))
4949 @test getcompat (dep_buildver) == " ~1.2"
5050
5151 # the same but only with compat specifier
5252 dep_compat = Dependency (PackageSpec (; name); compat = " 2, ~$(build_version) " )
53- @test Dependency (name, build_version) ≈ dep_compat
53+ @test Dependency (name, build_version; compat = " 2, ~ $(build_version) " ) ≈ dep_compat
5454 @test getname (dep_compat) == name
5555 @test getpkg (dep_compat) == PackageSpec (; name, version = PKG_VERSIONS. VersionSpec (build_version))
5656 @test getcompat (dep_compat) == " 2, ~$(build_version) "
5757
5858 # if build_version and compat don't match, an error should be thrown
5959 @test_throws ArgumentError Dependency (PackageSpec (; name = name), build_version; compat = " 2.0" )
6060
61+ # Runtime dependencies without compat bounds should throw an error
62+ @test_throws ArgumentError Dependency (name)
63+ @test_throws ArgumentError RuntimeDependency (name)
64+
6165 run_dep = RuntimeDependency (PackageSpec (; name); compat= " 3.14" )
62- @test RuntimeDependency (name) ≈ run_dep
66+ @test RuntimeDependency (name; compat = " 3.14 " ) ≈ run_dep
6367 @test ! is_host_dependency (run_dep)
6468 @test is_target_dependency (run_dep)
6569 @test ! is_build_dependency (run_dep)
7276 # We should be able to convert a `Vector{RuntimeDependency}` to `Vector{Dependency}`
7377 @test Dependency[RuntimeDependency (name; compat= " ~1.8" , platforms= [Platform (" aarch64" , " macos" ; cxxstring_abi= " cxx03" )])] ==
7478 [Dependency (name; compat= " ~1.8" , platforms= [Platform (" aarch64" , " macos" ; cxxstring_abi= " cxx03" )])]
75- @test @test_logs ((:warn , r" was defined as top-level" ), Dependency[RuntimeDependency (name; top_level= true )]) ==
76- [@test_logs ((:warn , r" was defined as top-level" ), Dependency (name; top_level= true ))]
79+ @test @test_logs ((:warn , r" was defined as top-level" ), Dependency[RuntimeDependency (name; compat = " 1 " , top_level= true )]) ==
80+ [@test_logs ((:warn , r" was defined as top-level" ), Dependency (name; compat = " 1 " , top_level= true ))]
7781 # If the version in the PackageSpec and the compat don't match, an error should be thrown
7882 @test_throws ArgumentError RuntimeDependency (PackageSpec (; name, version= v " 1.2.3" ); compat = " 2.0" )
7983
@@ -102,12 +106,12 @@ end
102106 @test getpkg (host_dep) == PackageSpec (; name = host_name)
103107
104108 top_level_name = " MPIPreferences"
105- @test_logs (:warn , r" deprecated" ) @test_throws ArgumentError Dependency (PackageSpec (; name= top_level_name); platforms= supported_platforms (; exclude= ! Sys. isapple), top_level= true )
106- @test_throws ArgumentError RuntimeDependency (PackageSpec (; name= top_level_name); platforms= supported_platforms (; exclude= ! Sys. isapple), top_level= true )
109+ @test_logs (:warn , r" deprecated" ) @test_throws ArgumentError Dependency (PackageSpec (; name= top_level_name); compat = " 0 " , platforms= supported_platforms (; exclude= ! Sys. isapple), top_level= true )
110+ @test_throws ArgumentError RuntimeDependency (PackageSpec (; name= top_level_name); compat = " 1 " , platforms= supported_platforms (; exclude= ! Sys. isapple), top_level= true )
107111
108- top_level_dep = @test_logs (:warn , r" deprecated" ) Dependency (PackageSpec (; name = top_level_name); top_level= true )
112+ top_level_dep = @test_logs (:warn , r" deprecated" ) Dependency (PackageSpec (; name = top_level_name); compat = " 1 " , top_level= true )
109113 @test is_top_level_dependency (top_level_dep)
110- top_level_dep = RuntimeDependency (PackageSpec (; name = top_level_name); top_level= true )
114+ top_level_dep = RuntimeDependency (PackageSpec (; name = top_level_name); compat = " 1 " , top_level= true )
111115 @test is_top_level_dependency (top_level_dep)
112116
113117 @testset " Filter dependencies by platform" begin
117121
118122 @testset " JSON (de)serialization" begin
119123 jdep = JSON. lower (dep)
120- @test jdep == Dict (" type" => " dependency" , " name" => name, " uuid" => nothing , " compat" => " " , " version-major" => 0x0 , " version-minor" => 0x0 , " version-patch" => 0x0 , " platforms" => [" x86_64-apple-darwin" , " aarch64-apple-darwin" ], " top_level" => false )
124+ @test jdep == Dict (" type" => " dependency" , " name" => name, " uuid" => nothing , " compat" => " 0 " , " version-major" => 0x0 , " version-minor" => 0x0 , " version-patch" => 0x0 , " platforms" => [" x86_64-apple-darwin" , " aarch64-apple-darwin" ], " top_level" => false )
121125 @test dependencify (jdep) == dep
122126
123127 jrun_dep = JSON. lower (run_dep)
@@ -137,14 +141,14 @@ end
137141 @test jhost_dep == Dict (" type" => " hostdependency" , " name" => host_name, " uuid" => nothing , " compat" => " " , " version-major" => 0x0 , " version-minor" => 0x0 , " version-patch" => 0x0 , " platforms" => [" any" ], " top_level" => false )
138142 @test dependencify (jhost_dep) == host_dep
139143
140- full_dep = Dependency (PackageSpec (; name = " Baz_jll" , uuid = " 00000000-1111-2222-3333-444444444444" , version = PKG_VERSIONS. VersionSpec (" 3.1.4" )))
144+ full_dep = Dependency (PackageSpec (; name = " Baz_jll" , uuid = " 00000000-1111-2222-3333-444444444444" , version = PKG_VERSIONS. VersionSpec (" 3.1.4" )); compat = " 3 " )
141145 jfull_dep = JSON. lower (full_dep)
142- @test jfull_dep == Dict (" type" => " dependency" , " name" => " Baz_jll" , " uuid" => " 00000000-1111-2222-3333-444444444444" , " compat" => " " , " version-major" => 0x3 , " version-minor" => 0x1 , " version-patch" => 0x4 , " platforms" => [" any" ], " top_level" => false )
146+ @test jfull_dep == Dict (" type" => " dependency" , " name" => " Baz_jll" , " uuid" => " 00000000-1111-2222-3333-444444444444" , " compat" => " 3 " , " version-major" => 0x3 , " version-minor" => 0x1 , " version-patch" => 0x4 , " platforms" => [" any" ], " top_level" => false )
143147 @test dependencify (jfull_dep) == full_dep
144148 @test_throws ErrorException dependencify (Dict (" type" => " git" ))
145149
146150 jtop_level_dep = JSON. lower (top_level_dep)
147- @test jtop_level_dep == Dict (" type" => " runtimedependency" , " name" => " MPIPreferences" , " uuid" => nothing , " compat" => " " , " version-major" => 0x0 , " version-minor" => 0x0 , " version-patch" => 0x0 , " platforms" => [" any" ], " top_level" => true )
151+ @test jtop_level_dep == Dict (" type" => " runtimedependency" , " name" => " MPIPreferences" , " uuid" => nothing , " compat" => " 1 " , " version-major" => 0x0 , " version-minor" => 0x0 , " version-patch" => 0x0 , " platforms" => [" any" ], " top_level" => true )
148152 @test dependencify (jtop_level_dep) == top_level_dep
149153 end
150154
164168 with_temp_project () do dir
165169 prefix = Prefix (dir)
166170 dependencies = [
167- Dependency (" Zlib_jll" )
171+ Dependency (" Zlib_jll" ; compat = " 1.2.12 " )
168172 ]
169173 platform = HostPlatform ()
170174 ap = @test_logs setup_dependencies (prefix, getpkg .(dependencies), platform)
199203 with_temp_project () do dir
200204 prefix = Prefix (dir)
201205 dependencies = [
202- Dependency (" LibCURL_jll" )
206+ Dependency (" LibCURL_jll" ; compat = " 7, 8 " )
203207 ]
204208 platform = HostPlatform ()
205209 ap = @test_logs setup_dependencies (prefix, getpkg .(dependencies), platform)
222226 with_temp_project () do dir
223227 prefix = Prefix (dir)
224228 dependencies = [
225- Dependency (" LibOSXUnwind_jll" )
229+ Dependency (" LibOSXUnwind_jll" ; compat = " 0.0.7 " )
226230 ]
227231 platform = Platform (" i686" , " linux" ; libc= " musl" )
228232 @test_logs (:warn , r" Dependency LibOSXUnwind_jll does not have a mapping for artifact LibOSXUnwind for platform i686-linux-musl" ) begin
234238 # Test setup of dependencies that depend on the Julia version
235239 with_temp_project () do dir
236240 prefix = Prefix (dir)
237- dependencies = [Dependency (" GMP_jll" )]
241+ dependencies = [Dependency (" GMP_jll" ; compat = " 6.1.2 " )]
238242 platform = Platform (" x86_64" , " linux" ; julia_version= v " 1.5" )
239243
240244 # Test that a particular version of GMP is installed
245249 # Next, test on Julia v1.6
246250 with_temp_project () do dir
247251 prefix = Prefix (dir)
248- dependencies = [Dependency (" GMP_jll" )]
252+ dependencies = [Dependency (" GMP_jll" ; compat = " 6.2.1 " )]
249253 platform = Platform (" x86_64" , " linux" ; julia_version= v " 1.6" )
250254
251255 # Test that a particular version of GMP is installed
257261 with_temp_project () do dir
258262 prefix = Prefix (dir)
259263 dependencies = [
260- Dependency (" GMP_jll" , v " 6.1.2" ),
261- Dependency (" MPFR_jll" , v " 4.1.0" ),
264+ Dependency (" GMP_jll" ; compat = " 6.1.2" ),
265+ Dependency (" MPFR_jll" ; compat = " 4.1.0" ),
262266 ]
263267
264268 # Test that this is not instantiatable with either Julia v1.5 or v1.6
@@ -348,30 +352,16 @@ end
348352end
349353
350354@testset " resolve_jlls" begin
351- # Deps given by name::String
352- dependencies = [" OpenSSL_jll" ,]
353- @test_logs (:warn , r" use Dependency instead" ) begin
354- truefalse, resolved_deps = resolve_jlls (dependencies)
355- @test truefalse
356- @test all (x-> getpkg (x). uuid != = nothing , resolved_deps)
357- end
358- # Deps given by name::PackageSpec
359- @test_logs (:warn , r" use Dependency instead" ) begin
360- dependencies = [PackageSpec (name= " OpenSSL_jll" ),]
361- truefalse, resolved_deps = resolve_jlls (dependencies)
362- @test truefalse
363- @test all (x-> getpkg (x). uuid != = nothing , resolved_deps)
364- end
365355 # Deps given by (name,uuid)::PackageSpec
366- dependencies = [Dependency (PackageSpec (name= " OpenSSL_jll" , uuid= " 458c3c95-2e84-50aa-8efc-19380b2a3a95" )),]
356+ dependencies = [Dependency (PackageSpec (name= " OpenSSL_jll" , uuid= " 458c3c95-2e84-50aa-8efc-19380b2a3a95" ); compat = " 3.0.3 " ),]
367357 truefalse, resolved_deps = resolve_jlls (dependencies)
368358 @test truefalse
369359 @test all (x-> getpkg (x). uuid != = nothing , resolved_deps)
370360 # Deps given by combination of name::String, name::PackageSpec and (name,uuid)::PackageSpec
371361 dependencies = [
372- Dependency (" Zlib_jll" ),
373- Dependency (PackageSpec (name= " Bzip2_jll" )),
374- Dependency (PackageSpec (name= " OpenSSL_jll" , uuid= " 458c3c95-2e84-50aa-8efc-19380b2a3a95" )),
362+ Dependency (" Zlib_jll" ; compat = " 1.2.13 " ),
363+ Dependency (PackageSpec (name= " Bzip2_jll" ); compat = " 1.0.8 " ),
364+ Dependency (PackageSpec (name= " OpenSSL_jll" , uuid= " 458c3c95-2e84-50aa-8efc-19380b2a3a95" ); compat = " 3.0.3 " ),
375365 ]
376366 truefalse, resolved_deps = resolve_jlls (dependencies)
377367 @test truefalse
0 commit comments