def test_include_overrides_the_previous_included_configs(self): yaml = substitute_yaml(""" {_default_}: Fruits {_include_}: - alpha.yml - beta.yml """) included_files = { 'alpha.yml': substitute_yaml(""" Fruits: apple: 1 banana: 2 """), 'beta.yml': substitute_yaml(""" Fruits: banana: 13 kiwi: 14 """), } with patch_open_read(included_files): config = octoconf.loads(yaml) assert { 'apple': 1, 'banana': 13, 'kiwi': 14, } == config.get_dict()
def test_config_overrides_the_included_config(self): yaml = substitute_yaml(""" {_default_}: Fruits {_include_}: alpha.yml Fruits: orange: 1 apple: 2 """) included_files = { 'alpha.yml': substitute_yaml(""" Fruits: apple: 13 kiwi: 14 """), } with patch_open_read(included_files): config = octoconf.loads(yaml) assert { 'orange': 1, 'apple': 2, 'kiwi': 14, } == config.get_dict()
def test_select_config_from_multi_level_included_file(self): yaml = substitute_yaml(""" {_default_}: Vegetables {_include_}: alpha.yml Fruits: orange: 1 """) included_files = { 'alpha.yml': substitute_yaml('{_include_}: beta.yml'), 'beta.yml': substitute_yaml('{_include_}: gamma.yml'), 'gamma.yml': substitute_yaml(""" Vegetables: carrot: 2 """), } with patch_open_read(included_files): config = octoconf.loads(yaml) assert { 'carrot': 2, } == config.get_dict()
def assert_load(self, main_includes, included_files, include_cwd=None): """ :type main_includes: list :type included_files: dict :type include_cwd: str or None """ __tracebackhide__ = True # pylint: disable=unused-variable indented_includes = '\n'.join( [' - {}'.format(include) for include in main_includes]) yaml = substitute_yaml(textwrap.dedent(""" {_default_}: Fruits {_include_}: {main_includes} Fruits: orange: 1 """), main_includes=indented_includes) with patch_open_read(included_files): config = octoconf.loads(yaml, include_cwd=include_cwd) assert {'orange': 1} == config.get_dict()
def test_config_overrides_the_included_config_on_multiple_level(self): yaml = substitute_yaml(""" {_default_}: Fruits {_include_}: alpha.yml Fruits: apple: 1 banana: 2 """) included_files = { 'alpha.yml': substitute_yaml(""" {_include_}: beta.yml Fruits: banana: 13 kiwi: 14 """), 'beta.yml': substitute_yaml(""" Fruits: kiwi: 25 orange: 26 """), } with patch_open_read(included_files): config = octoconf.loads(yaml) assert { 'apple': 1, 'banana': 2, 'kiwi': 14, 'orange': 26, } == config.get_dict()
def test_select_config_in_included_file(self): yaml = substitute_yaml(""" {_include_}: alpha.yml Fruits: orange: 1 """) included_files = { 'alpha.yml': substitute_yaml(""" {_default_}: Fruits Vegetables: carrot: 2 """), } with patch_open_read(included_files): config = octoconf.loads(yaml) assert { 'orange': 1, } == config.get_dict()
def assert_load(self, main_includes, included_files, include_cwd=None): """ :type main_includes: list :type included_files: dict :type include_cwd: str or None """ __tracebackhide__ = True # pylint: disable=unused-variable indented_includes = '\n'.join([' - {}'.format(include) for include in main_includes]) yaml = substitute_yaml(textwrap.dedent(""" {_default_}: Fruits {_include_}: {main_includes} Fruits: orange: 1 """), main_includes=indented_includes) with patch_open_read(included_files): config = octoconf.loads(yaml, include_cwd=include_cwd) assert {'orange': 1} == config.get_dict()