def test_config_data_is_loaded_from_file(): config = load_config_data("tests/demo_data") assert config["_exclude"] == ["exclude1", "exclude2"] assert config["_include"] == ["include1", "include2"] assert config["_skip_if_exists"] == ["skip_if_exists1", "skip_if_exists2"] assert config["_tasks"] == ["touch 1", "touch 2"] assert config["_extra_paths"] == ["tests"]
def test_valid_multi_section(tmp_path): """Including multiple files works fine merged with multiple sections.""" with local.cwd(tmp_path): build_file_tree({ "exclusions.yml": "_exclude: ['*.yml']", "common_jinja.yml": """ _envops: block_start_string: "[%" block_end_string: "%]" comment_start_string: "[#" comment_end_string: "#]" variable_start_string: "[[" variable_end_string: "]]" keep_trailing_newline: true """, "common_questions.yml": """ your_age: type: int your_name: type: yaml help: your name from common questions """, "copier.yml": """ --- !include 'common_*.yml' --- !include exclusions.yml --- your_name: type: str help: your name from latest section """, }) data = load_config_data(tmp_path) assert data == { "_exclude": ["*.yml"], "_envops": { "block_start_string": "[%", "block_end_string": "%]", "comment_start_string": "[#", "comment_end_string": "#]", "variable_start_string": "[[", "variable_end_string": "]]", "keep_trailing_newline": True, }, "your_age": { "type": "int" }, "your_name": { "type": "str", "help": "your name from latest section" }, }
def test_invalid_toml(capsys): assert {} == load_yaml_data("tests/demo_invalid") out, _ = capsys.readouterr() assert re.search(r"INVALID.*tests/demo_invalid/copier\.yml", out) assert {} == load_toml_data("tests/demo_invalid") out, _ = capsys.readouterr() assert re.search(r"INVALID.*tests/demo_invalid/copier\.toml", out) assert {} == load_json_data("tests/demo_invalid") out, _ = capsys.readouterr() assert re.search(r"INVALID.*tests/demo_invalid/copier\.json", out) assert {} == load_config_data("tests/demo_invalid", _warning=False) assert re.search(r"INVALID", out)
def test_multiple_config_file_error(capsys): with pytest.raises(MultipleConfigFilesError): load_config_data("tests/demo_multi_config", quiet=True) out, _ = capsys.readouterr() assert out == ""
def test_config_data_empty(): data = load_config_data("tests/demo_config_empty") assert data is None
def test_invalid_config_data(conf_path, flags, check_err, capsys): with pytest.raises(InvalidConfigFileError): load_config_data(conf_path, **flags) if check_err: _, err = capsys.readouterr() assert check_err(err)
def test_config_data_transclusion(): config = load_config_data("tests/demo_transclude/demo") assert config["_exclude"] == ["exclude1", "exclude2"]
def test_invalid_quiet(capsys): assert {} == load_config_data("tests/demo_invalid", quiet=True) out, _ = capsys.readouterr() assert out == ""