diff --git a/src/mirro/main.py b/src/mirro/main.py index e599eeb..f92ed63 100644 --- a/src/mirro/main.py +++ b/src/mirro/main.py @@ -491,6 +491,10 @@ def main(): target = Path(file_arg).expanduser().resolve() backup_dir = Path(args.backup_dir).expanduser().resolve() + if target.is_dir(): + print(f"'{target}' is a directory!") + return 1 + # Permission checks parent = target.parent if target.exists() and not os.access(target, os.W_OK): diff --git a/tests/test_mirro.py b/tests/test_mirro.py index 3c23c18..db4c5b8 100644 --- a/tests/test_mirro.py +++ b/tests/test_mirro.py @@ -174,6 +174,17 @@ def test_main_missing_argument(capsys): ) +def test_main_rejects_directory(tmp_path, capsys): + target = tmp_path / "dir" + target.mkdir() + + with patch("sys.argv", ["mirro", str(target)]): + result = mirro.main() + + assert result == 1 + assert f"'{target}' is a directory!" in capsys.readouterr().out + + # ============================================================ # main: unchanged file # ============================================================