aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_config.py
blob: c67929db87dcd645395283a043a05cc5cc54b971 (plain) (blame)
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
60
61
62
63
import os
import re

import pytest

from nikola import __main__ as nikola


def test_simple_config(simple_config, metadata_option):
    """Check whether configuration-files without ineritance are interpreted correctly."""
    assert simple_config[metadata_option]["ID"] == "conf"


def test_inherited_config(simple_config, metadata_option, complex_config):
    """Check whether configuration-files with ineritance are interpreted correctly."""
    check_base_equality(simple_config, metadata_option, complex_config)
    assert complex_config[metadata_option]["ID"] == "prod"


def test_config_with_illegal_filename(
    simple_config, metadata_option, complex_filename_config
):
    """Check whether files with illegal module-name characters can be set as config-files, too."""
    check_base_equality(simple_config, metadata_option, complex_filename_config)
    assert complex_filename_config[metadata_option]["ID"] == "illegal"


@pytest.fixture(scope="module")
def simple_config(data_dir):
    nikola.main(["--conf=" + os.path.join(data_dir, "conf.py")])
    return nikola.config


@pytest.fixture(scope="module")
def data_dir(test_dir):
    return os.path.join(test_dir, "data", "test_config")


@pytest.fixture
def metadata_option():
    return "ADDITIONAL_METADATA"


@pytest.fixture(scope="module")
def complex_config(data_dir):
    nikola.main(["--conf=" + os.path.join(data_dir, "prod.py")])
    return nikola.config


@pytest.fixture(scope="module")
def complex_filename_config(data_dir):
    config_path = os.path.join(
        data_dir, "config.with+illegal(module)name.characters.py"
    )
    nikola.main(["--conf=" + config_path])
    return nikola.config


def check_base_equality(base_config, metadata_option, config):
    """Check whether the specified `config` equals the base config."""
    for option in base_config.keys():
        if re.match("^[A-Z]+(_[A-Z]+)*$", option) and option != metadata_option:
            assert base_config[option] == config[option]