summaryrefslogtreecommitdiff
path: root/testing/test_cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/test_cli.py')
-rw-r--r--testing/test_cli.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/test_cli.py b/testing/test_cli.py
new file mode 100644
index 0000000..0198111
--- /dev/null
+++ b/testing/test_cli.py
@@ -0,0 +1,50 @@
+from __future__ import annotations
+
+import io
+from contextlib import redirect_stdout
+
+import pytest
+
+from .conftest import DebugMode
+from .test_git import wd as wd_fixture # NOQA evil fixture reuse
+from .wd_wrapper import WorkDir
+from setuptools_scm._cli import main
+
+
+PYPROJECT_TOML = "pyproject.toml"
+PYPROJECT_SIMPLE = "[tool.setuptools_scm]"
+PYPROJECT_ROOT = '[tool.setuptools_scm]\nroot=".."'
+
+
+def get_output(args: list[str]) -> str:
+
+ with redirect_stdout(io.StringIO()) as out:
+ main(args)
+ return out.getvalue()
+
+
+def test_cli_find_pyproject(
+ wd: WorkDir, monkeypatch: pytest.MonkeyPatch, debug_mode: DebugMode
+) -> None:
+ debug_mode.disable()
+ wd.commit_testfile()
+ wd.write(PYPROJECT_TOML, PYPROJECT_SIMPLE)
+ monkeypatch.chdir(wd.cwd)
+
+ out = get_output([])
+ assert out.startswith("0.1.dev1+")
+
+ with pytest.raises(SystemExit, match="no version found for"):
+ get_output(["--root=.."])
+
+ wd.write(PYPROJECT_TOML, PYPROJECT_ROOT)
+ with pytest.raises(SystemExit, match="no version found for"):
+ print(get_output(["-c", PYPROJECT_TOML]))
+
+ with pytest.raises(SystemExit, match="no version found for"):
+
+ get_output(["-c", PYPROJECT_TOML, "--root=.."])
+
+ with pytest.warns(UserWarning, match="root .. is overridden by the cli arg ."):
+ out = get_output(["-c", PYPROJECT_TOML, "--root=."])
+ assert out.startswith("0.1.dev1+")