def test_collect_yaml_no_top_level_dict(tmpdir): dir_path = str(tmpdir) fil_path = os.path.join(dir_path, "a.yaml") with open(fil_path, mode="wb") as f: f.write(b"[1234]") with pytest.raises(ValueError) as rec: collect_yaml(paths=[dir_path]) assert repr(fil_path) in str(rec.value) assert "is malformed" in str(rec.value) assert "must have a dict" in str(rec.value)
def test_collect_yaml_malformed_file(tmpdir): dir_path = str(tmpdir) fil_path = os.path.join(dir_path, "a.yaml") with open(fil_path, mode="wb") as f: f.write(b"{") with pytest.raises(ValueError) as rec: collect_yaml(paths=[dir_path]) assert repr(fil_path) in str(rec.value) assert "is malformed" in str(rec.value) assert "original error message" in str(rec.value)
def test_collect_yaml_dir(): a = {"x": 1, "y": {"a": 1}} b = {"x": 2, "z": 3, "y": {"b": 2}} expected = {"x": 2, "y": {"a": 1, "b": 2}, "z": 3} with tmpfile() as dirname: os.mkdir(dirname) with open(os.path.join(dirname, "a.yaml"), mode="w") as f: yaml.dump(a, f) with open(os.path.join(dirname, "b.yaml"), mode="w") as f: yaml.dump(b, f) config = merge(*collect_yaml(paths=[dirname])) assert config == expected
def test_collect_yaml_paths(): a = {"x": 1, "y": {"a": 1}} b = {"x": 2, "z": 3, "y": {"b": 2}} expected = {"x": 2, "y": {"a": 1, "b": 2}, "z": 3} with tmpfile(extension="yaml") as fn1: with tmpfile(extension="yaml") as fn2: with open(fn1, "w") as f: yaml.dump(a, f) with open(fn2, "w") as f: yaml.dump(b, f) config = merge(*collect_yaml(paths=[fn1, fn2])) assert config == expected
def test_collect_yaml_dir(): a = {'x': 1, 'y': {'a': 1}} b = {'x': 2, 'z': 3, 'y': {'b': 2}} expected = { 'x': 2, 'y': {'a': 1, 'b': 2}, 'z': 3, } with tmpfile() as dirname: os.mkdir(dirname) with open(os.path.join(dirname, 'a.yaml'), mode='w') as f: yaml.dump(a, f) with open(os.path.join(dirname, 'b.yaml'), mode='w') as f: yaml.dump(b, f) config = merge(*collect_yaml(paths=[dirname])) assert config == expected
def test_collect_yaml_paths(): a = {'x': 1, 'y': {'a': 1}} b = {'x': 2, 'z': 3, 'y': {'b': 2}} expected = { 'x': 2, 'y': {'a': 1, 'b': 2}, 'z': 3, } with tmpfile(extension='yaml') as fn1: with tmpfile(extension='yaml') as fn2: with open(fn1, 'w') as f: yaml.dump(a, f) with open(fn2, 'w') as f: yaml.dump(b, f) config = merge(*collect_yaml(paths=[fn1, fn2])) assert config == expected
def test_collect_yaml_permission_errors(tmpdir, kind): a = {"x": 1, "y": 2} b = {"y": 3, "z": 4} dir_path = str(tmpdir) a_path = os.path.join(dir_path, "a.yaml") b_path = os.path.join(dir_path, "b.yaml") with open(a_path, mode="w") as f: yaml.dump(a, f) with open(b_path, mode="w") as f: yaml.dump(b, f) if kind == "directory": cant_read = dir_path expected = {} else: cant_read = a_path expected = b with no_read_permissions(cant_read): config = merge(*collect_yaml(paths=[dir_path])) assert config == expected
def test_collect_yaml_permission_errors(tmpdir, kind): a = {'x': 1, 'y': 2} b = {'y': 3, 'z': 4} dir_path = str(tmpdir) a_path = os.path.join(dir_path, 'a.yaml') b_path = os.path.join(dir_path, 'b.yaml') with open(a_path, mode='w') as f: yaml.dump(a, f) with open(b_path, mode='w') as f: yaml.dump(b, f) if kind == 'directory': cant_read = dir_path expected = {} else: cant_read = a_path expected = b with no_read_permissions(cant_read): config = merge(*collect_yaml(paths=[dir_path])) assert config == expected