@@ -359,7 +359,7 @@ def test_maybe_open_editor_disabled_by_default(monkeypatch):
359359 called = []
360360 monkeypatch .setattr (opener , 'open_editor' ,
361361 lambda ** kw : called .append (kw ) or 'launch' )
362- container ._maybe_open_editor ('carmo' , None , None )
362+ container ._maybe_open_editor ('carmo' , None , None , 1 )
363363 assert called == []
364364
365365
@@ -372,7 +372,7 @@ def test_maybe_open_editor_flag_overrides_env(monkeypatch):
372372 monkeypatch .setattr (opener , 'open_editor' ,
373373 lambda ** kw : called .append (kw ) or 'launch' )
374374 monkeypatch .setattr (container , 'get_dev_service_name' , lambda : 'dev' )
375- container ._maybe_open_editor ('carmo' , True , 1 )
375+ container ._maybe_open_editor ('carmo' , True , 1 , 1 )
376376 assert len (called ) == 1
377377 assert called [0 ]['project_name' ] == 'carmo'
378378
@@ -388,4 +388,32 @@ def boom(**kw):
388388 raise RuntimeError ("x" )
389389
390390 monkeypatch .setattr (opener , 'open_editor' , boom )
391- container ._maybe_open_editor ('carmo' , None , None ) # 例外が出なければ OK
391+ container ._maybe_open_editor ('carmo' , None , None , 1 ) # 例外が出なければ OK
392+
393+
394+ @pytest .mark .parametrize ('bad_index' , [0 , - 1 , 3 ])
395+ def test_maybe_open_editor_out_of_range_index_falls_back (monkeypatch , bad_index ):
396+ """0・負数・scale 超過の index は既定 (1) へフォールバックする (scale=2)。"""
397+ from devbase .commands import container
398+ from devbase .editor import opener
399+ monkeypatch .setattr (opener , 'is_open_enabled' , lambda environ = None : True )
400+ monkeypatch .setattr (container , 'get_dev_service_name' , lambda : 'dev' )
401+ called = []
402+ monkeypatch .setattr (opener , 'open_editor' ,
403+ lambda ** kw : called .append (kw ) or 'launch' )
404+ container ._maybe_open_editor ('carmo' , True , bad_index , 2 )
405+ assert len (called ) == 1
406+ assert called [0 ]['index' ] == 1
407+
408+
409+ def test_maybe_open_editor_valid_index_within_scale (monkeypatch ):
410+ """範囲内 (1..scale) の index はそのまま使われる。"""
411+ from devbase .commands import container
412+ from devbase .editor import opener
413+ monkeypatch .setattr (opener , 'is_open_enabled' , lambda environ = None : True )
414+ monkeypatch .setattr (container , 'get_dev_service_name' , lambda : 'dev' )
415+ called = []
416+ monkeypatch .setattr (opener , 'open_editor' ,
417+ lambda ** kw : called .append (kw ) or 'launch' )
418+ container ._maybe_open_editor ('carmo' , True , 2 , 3 )
419+ assert called [0 ]['index' ] == 2
0 commit comments