mirror of
https://github.com/copier-org/copier.git
synced 2025-05-05 23:42:55 +00:00
* Fix missing skip_if_exists param * Add tests for skip cli flag --------- Co-authored-by: Thierry Gaugry <thierry.gaugry@ariadnext.com>
95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
from copier.cli import CopierApp
|
|
|
|
from .helpers import COPIER_CMD, build_file_tree
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def template_path(tmp_path_factory) -> str:
|
|
root = tmp_path_factory.mktemp("template")
|
|
build_file_tree(
|
|
{
|
|
root
|
|
/ "{{ _copier_conf.answers_file }}.jinja": """\
|
|
# Changes here will be overwritten by Copier
|
|
{{ _copier_answers|to_nice_yaml }}
|
|
""",
|
|
root / "a.txt": "EXAMPLE_CONTENT",
|
|
}
|
|
)
|
|
return str(root)
|
|
|
|
|
|
def test_good_cli_run(tmp_path, template_path):
|
|
run_result = CopierApp.run(
|
|
["--quiet", "-a", "altered-answers.yml", str(template_path), str(tmp_path)],
|
|
exit=False,
|
|
)
|
|
a_txt = tmp_path / "a.txt"
|
|
assert run_result[1] == 0
|
|
assert a_txt.exists()
|
|
assert a_txt.is_file()
|
|
assert a_txt.read_text() == "EXAMPLE_CONTENT"
|
|
answers = yaml.safe_load((tmp_path / "altered-answers.yml").read_text())
|
|
assert answers["_src_path"] == str(template_path)
|
|
|
|
|
|
def test_help():
|
|
COPIER_CMD("--help-all")
|
|
|
|
|
|
def test_python_run():
|
|
cmd = [sys.executable, "-m", "copier", "--help-all"]
|
|
assert subprocess.run(cmd, check=True).returncode == 0
|
|
|
|
|
|
def test_skip_filenotexists(tmp_path, template_path):
|
|
run_result = CopierApp.run(
|
|
[
|
|
"--quiet",
|
|
"-a",
|
|
"altered-answers.yml",
|
|
"--overwrite",
|
|
"--skip=a.txt",
|
|
str(template_path),
|
|
str(tmp_path),
|
|
],
|
|
exit=False,
|
|
)
|
|
a_txt = tmp_path / "a.txt"
|
|
assert run_result[1] == 0
|
|
assert a_txt.exists()
|
|
assert a_txt.is_file()
|
|
assert a_txt.read_text() == "EXAMPLE_CONTENT"
|
|
answers = yaml.safe_load((tmp_path / "altered-answers.yml").read_text())
|
|
assert answers["_src_path"] == str(template_path)
|
|
|
|
|
|
def test_skip_fileexists(tmp_path, template_path):
|
|
a_txt = tmp_path / "a.txt"
|
|
with open(a_txt, "w") as f_a:
|
|
f_a.write("PREVIOUS_CONTENT")
|
|
run_result = CopierApp.run(
|
|
[
|
|
"--quiet",
|
|
"-a",
|
|
"altered-answers.yml",
|
|
"--overwrite",
|
|
"--skip=a.txt",
|
|
str(template_path),
|
|
str(tmp_path),
|
|
],
|
|
exit=False,
|
|
)
|
|
assert run_result[1] == 0
|
|
assert a_txt.exists()
|
|
assert a_txt.is_file()
|
|
assert a_txt.read_text() == "PREVIOUS_CONTENT"
|
|
answers = yaml.safe_load((tmp_path / "altered-answers.yml").read_text())
|
|
assert answers["_src_path"] == str(template_path)
|