@@ -217,9 +217,13 @@ func TestIsVersionSatisfied(t *testing.T) {
217217 {"~1.5.0" , "1.0.0" , true , false },
218218 {">=1.5.0" , "1.0.0" , true , false },
219219 {"==1.5.0" , "1.0.0" , true , false },
220- {"1.3.0rc1" , "1.3.0" , true , false }, // prerelease should satisfy same base version
221- {"1.3rc" , "1.3.0" , true , false }, // short prerelease should satisfy same base version
222- {"1.3.0rc1" , "1.4.0" , false , false }, // prerelease should not satisfy higher version
220+ {"1.3.0rc1" , "1.2.0" , true , false }, // prerelease should satisfy lower base version
221+ {"1.3.0.rc1" , "1.3.0" , true , false }, // prerelease should satisfy same base version
222+ {"1.3rc" , "1.3.0" , true , false }, // short prerelease should satisfy same base version
223+ {"1.3.0rc1" , "1.4.0" , false , false }, // prerelease should not satisfy higher version
224+ {"1.0.0.rc2" , "1.0.0" , true , false }, // dot prerelease should satisfy same base version
225+ {"1.3.0.beta1" , "1.3.0" , true , false }, // dot prerelease should satisfy same base version
226+ {"1.2.0.alpha1" , "1.3.0" , false , false }, // dot prerelease should not satisfy higher version
223227 {"invalid" , "1.0.0" , false , true },
224228 {"1.5.0" , "invalid" , false , true },
225229 }
@@ -265,6 +269,9 @@ func TestNormalizeVersion(t *testing.T) {
265269 {"1.3rc" , "1.3.0-rc" },
266270 {"1.3rc1" , "1.3.0-rc1" },
267271 {"~=1.3rc" , "1.3.0-rc" },
272+ {"1.0.0.rc2" , "1.0.0-rc2" },
273+ {"1.3.0.beta1" , "1.3.0-beta1" },
274+ {"1.5.2.alpha3" , "1.5.2-alpha3" },
268275 }
269276
270277 for _ , tt := range tests {
@@ -412,6 +419,12 @@ func TestParsePythonPackageVersion(t *testing.T) {
412419 expectedOutput : "==1.5.0" ,
413420 expectedFound : true ,
414421 },
422+ {
423+ name : "extra with compatible version" ,
424+ input : "livekit-agents[extra1,extra2]~=1.5.0.rc2" ,
425+ expectedOutput : "~=1.5.0.rc2" ,
426+ expectedFound : true ,
427+ },
415428 {
416429 name : "Version with no specifier" ,
417430 input : "livekit-agents" ,
0 commit comments