@@ -220,6 +220,31 @@ def test_semantic_order_skips_9_10_when_running_9_9(self, make_rbac_dir):
220220 d = make_rbac_dir ("9.2" , "9.9" , "9.10" )
221221 assert _resolve_rbac_version (d , "9.9" ) == "9.9"
222222
223+ def test_version_10_exact_match (self , make_rbac_dir ):
224+ """Running 10.0, dir 10.0 exists — picks 10.0, not fooled by '1' < '9'."""
225+ d = make_rbac_dir ("9.2" , "10.0" )
226+ assert _resolve_rbac_version (d , "10.0" ) == "10.0"
227+
228+ def test_version_10_falls_back_within_v10 (self , make_rbac_dir ):
229+ """Running 10.1, only 10.0 dir exists — falls back to 10.0."""
230+ d = make_rbac_dir ("9.2" , "10.0" )
231+ assert _resolve_rbac_version (d , "10.1" ) == "10.0"
232+
233+ def test_version_10_picks_highest_v10 (self , make_rbac_dir ):
234+ """Running 10.2 with 10.0 and 10.1 on disk — picks 10.1."""
235+ d = make_rbac_dir ("9.2" , "10.0" , "10.1" )
236+ assert _resolve_rbac_version (d , "10.2" ) == "10.1"
237+
238+ def test_version_10_not_selected_for_v9 (self , make_rbac_dir ):
239+ """Running 9.9, dir 10.0 exists — 10.0 is newer, must not be selected."""
240+ d = make_rbac_dir ("9.2" , "9.9" , "10.0" )
241+ assert _resolve_rbac_version (d , "9.9" ) == "9.9"
242+
243+ def test_version_10_falls_back_to_v9_when_no_v10_dir (self , make_rbac_dir ):
244+ """Running 10.0, no 10.x dir exists — falls back to highest v9 dir."""
245+ d = make_rbac_dir ("9.2" , "9.5" )
246+ assert _resolve_rbac_version (d , "10.0" ) == "9.5"
247+
223248 def test_version_below_all_available_returns_none (self , make_rbac_dir ):
224249 """Running 9.1, only 9.2 dir exists — nothing qualifies."""
225250 d = make_rbac_dir ("9.2" )
0 commit comments