Пример #1
0
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"]
Пример #2
0
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"
        },
    }
Пример #3
0
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)
Пример #4
0
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 == ""
Пример #5
0
def test_config_data_empty():
    data = load_config_data("tests/demo_config_empty")
    assert data is None
Пример #6
0
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)
Пример #7
0
def test_config_data_transclusion():
    config = load_config_data("tests/demo_transclude/demo")
    assert config["_exclude"] == ["exclude1", "exclude2"]
Пример #8
0
def test_invalid_quiet(capsys):
    assert {} == load_config_data("tests/demo_invalid", quiet=True)
    out, _ = capsys.readouterr()
    assert out == ""