File: test_parse_project_overrides.py

package info (click to toggle)
python-briefcase 0.3.22-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,300 kB
  • sloc: python: 59,405; makefile: 57
file content (59 lines) | stat: -rw-r--r-- 1,885 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import pytest

from briefcase.commands.new import parse_project_overrides
from briefcase.exceptions import BriefcaseCommandError


@pytest.mark.parametrize(
    "cmdline, overrides",
    [
        ([], {}),
        (["license=MIT"], {"license": "MIT"}),
        (["bootstrap=Toga Automation"], {"bootstrap": "Toga Automation"}),
        (["one=1", "two=2"], {"one": "1", "two": "2"}),
        (["one\n=\n1", "two=\n\n2"], {"one": "1", "two": "2"}),
        (["one==1", "two===2"], {"one": "=1", "two": "==2"}),
        (["   one  = 1  ", " two  =  2 "], {"one": "1", "two": "2"}),
    ],
)
def test_project_overrides(cmdline, overrides):
    """Valid project configuration overrides are parsed correctly."""
    assert parse_project_overrides(cmdline) == overrides


def test_project_overrides_invalid():
    """Invalid project configuration overrides are rejected."""
    with pytest.raises(
        BriefcaseCommandError,
        match="Unable to parse project configuration override ' license '",
    ):
        parse_project_overrides([" license "])


@pytest.mark.parametrize(
    "cmdline",
    [
        "=",
        " = ",
        "key_for_invalid_value=",
        " key_for_invalid_value =   ",
        "=value_for_invalid_key",
        "  = value_for_invalid_key   ",
    ],
)
def test_project_overrides_empty(cmdline):
    """Invalid project configuration overrides are rejected."""
    with pytest.raises(
        BriefcaseCommandError,
        match=f"Invalid Project configuration override '{cmdline}'",
    ):
        parse_project_overrides([cmdline])


def test_project_overrides_duplicate():
    """Duplicate project configuration overrides are rejected."""
    with pytest.raises(
        BriefcaseCommandError,
        match="Project configuration override 'license' specified multiple times",
    ):
        parse_project_overrides(["license=MIT", "license=BSD"])