@@ -95,6 +95,32 @@ import Pkg.Types: semver_spec, VersionSpec
9595 @test ! (Pkg. Types. isjoinable (Pkg. Types. VersionBound ((1 ,5 )), Pkg. Types. VersionBound ((1 ,6 ,0 ))))
9696end
9797
98+ @testset " compress_versions()" begin
99+ # Test exact version matching
100+ vs = [v " 1.1.0" , v " 1.1.1" , v " 1.1.2" ]
101+ @test Pkg. Types. compress_versions (vs, [vs[2 ]]) == Pkg. Types. VersionSpec (" 1.1.1" )
102+
103+ # Test holes
104+ vs = [v " 1.1.0" , v " 1.1.1" , v " 1.1.4" ]
105+ @test Pkg. Types. compress_versions (vs, [vs[2 ]]) == Pkg. Types. VersionSpec (" 1.1.1" )
106+
107+ # Test patch variation with length(subset) > 1
108+ vs = [v " 1.1.0" , v " 1.1.1" , v " 1.1.2" , v " 1.1.3" , v " 1.2.0" ]
109+ @test Pkg. Types. compress_versions (vs, [vs[2 ], vs[3 ]]) == Pkg. Types. VersionSpec (" 1.1.1-1.1.2" )
110+
111+ # Test minor variation
112+ vs = [v " 1.1.0" , v " 1.1.1" , v " 1.2.0" ]
113+ @test Pkg. Types. compress_versions (vs, [vs[2 ]]) == Pkg. Types. VersionSpec (" 1.1.1-1.1" )
114+
115+ # Test major variation
116+ vs = [v " 1.1.0" , v " 1.1.1" , v " 1.2.0" , v " 2.0.0" ]
117+ @test Pkg. Types. compress_versions (vs, [vs[2 ], vs[3 ]]) == Pkg. Types. VersionSpec (" 1.1.1-1" )
118+
119+ # Test build numbers and prerelease values are ignored
120+ vs = [v " 1.1.0-alpha" , v " 1.1.0+0" , v " 1.1.0+1" ]
121+ @test Pkg. Types. compress_versions (vs, [vs[2 ]]) == Pkg. Types. VersionSpec (" 1" )
122+ end
123+
98124# TODO : Should rewrite these tests not to rely on internals like field names
99125@testset " union, isjoinable" begin
100126 @test sprint (print, VersionRange (" 0-0.3.2" )) == " 0-0.3.2"
0 commit comments