1717def _args (** kwargs ):
1818 kwargs .setdefault ('command' , 'help' )
1919 kwargs .setdefault ('config' , C .CONFIG_FILE )
20+ if kwargs ['command' ] in {'run' , 'try-repo' }:
21+ kwargs .setdefault ('commit_msg_filename' , None )
2022 return argparse .Namespace (** kwargs )
2123
2224
@@ -35,13 +37,24 @@ def test_adjust_args_and_chdir_noop(in_git_dir):
3537
3638def test_adjust_args_and_chdir_relative_things (in_git_dir ):
3739 in_git_dir .join ('foo/cfg.yaml' ).ensure ()
38- in_git_dir .join ('foo' ).chdir ()
39-
40- args = _args (command = 'run' , files = ['f1' , 'f2' ], config = 'cfg.yaml' )
41- main ._adjust_args_and_chdir (args )
42- assert os .getcwd () == in_git_dir
43- assert args .config == os .path .join ('foo' , 'cfg.yaml' )
44- assert args .files == [os .path .join ('foo' , 'f1' ), os .path .join ('foo' , 'f2' )]
40+ with in_git_dir .join ('foo' ).as_cwd ():
41+ args = _args (command = 'run' , files = ['f1' , 'f2' ], config = 'cfg.yaml' )
42+ main ._adjust_args_and_chdir (args )
43+ assert os .getcwd () == in_git_dir
44+ assert args .config == os .path .join ('foo' , 'cfg.yaml' )
45+ assert args .files == [
46+ os .path .join ('foo' , 'f1' ),
47+ os .path .join ('foo' , 'f2' ),
48+ ]
49+
50+
51+ def test_adjust_args_and_chdir_relative_commit_msg (in_git_dir ):
52+ in_git_dir .join ('foo/cfg.yaml' ).ensure ()
53+ with in_git_dir .join ('foo' ).as_cwd ():
54+ args = _args (command = 'run' , files = [], commit_msg_filename = 't.txt' )
55+ main ._adjust_args_and_chdir (args )
56+ assert os .getcwd () == in_git_dir
57+ assert args .commit_msg_filename == os .path .join ('foo' , 't.txt' )
4558
4659
4760@pytest .mark .skipif (os .name != 'nt' , reason = 'windows feature' )
@@ -56,24 +69,22 @@ def test_install_on_subst(in_git_dir, store): # pragma: posix no cover
5669
5770
5871def test_adjust_args_and_chdir_non_relative_config (in_git_dir ):
59- in_git_dir .join ('foo' ).ensure_dir ().chdir ()
60-
61- args = _args ()
62- main ._adjust_args_and_chdir (args )
63- assert os .getcwd () == in_git_dir
64- assert args .config == C .CONFIG_FILE
72+ with in_git_dir .join ('foo' ).ensure_dir ().as_cwd ():
73+ args = _args ()
74+ main ._adjust_args_and_chdir (args )
75+ assert os .getcwd () == in_git_dir
76+ assert args .config == C .CONFIG_FILE
6577
6678
6779def test_adjust_args_try_repo_repo_relative (in_git_dir ):
68- in_git_dir .join ('foo' ).ensure_dir ().chdir ()
69-
70- args = _args (command = 'try-repo' , repo = '../foo' , files = [])
71- assert args .repo is not None
72- assert os .path .exists (args .repo )
73- main ._adjust_args_and_chdir (args )
74- assert os .getcwd () == in_git_dir
75- assert os .path .exists (args .repo )
76- assert args .repo == 'foo'
80+ with in_git_dir .join ('foo' ).ensure_dir ().as_cwd ():
81+ args = _args (command = 'try-repo' , repo = '../foo' , files = [])
82+ assert args .repo is not None
83+ assert os .path .exists (args .repo )
84+ main ._adjust_args_and_chdir (args )
85+ assert os .getcwd () == in_git_dir
86+ assert os .path .exists (args .repo )
87+ assert args .repo == 'foo'
7788
7889
7990FNS = (
0 commit comments