Exemple #1
0
def assert_yaml_roundtrip(obj: ToYamlFileMixIn, tmpdir: LocalPath,
                          expected_text: str):
    tmpdir.chdir()
    obj.to_yaml_file("a.yaml")
    actual_text = Path("a.yaml").read_text()
    try:
        assert actual_text == expected_text
    except AssertionError:
        a = actual_text.split("\n")
        b = expected_text.split("\n")
        sys.stdout.writelines(list(Differ().compare(a, b)))
        raise

    actual = obj.from_yaml("a.yaml").as_dict()
    expected = obj.as_dict()
    assert len(actual) == len(expected)
    for k, v in actual.items():
        assert v == expected[k]
Exemple #2
0
def assert_yaml_roundtrip(obj: ToYamlFileMixIn,
                          tmpdir: LocalPath,
                          expected_text: str,
                          compare_dict: bool = True,
                          compare_items: bool = True):
    tmpdir.chdir()
    obj.to_yaml_file("a.yaml")
    actual_text = Path("a.yaml").read_text()
    try:
        assert actual_text == expected_text
    except AssertionError:
        print(tmpdir)
        a = actual_text.split("\n")
        b = expected_text.split("\n")
        sys.stdout.writelines(list(Differ().compare(a, b)))
        raise

    if compare_dict:
        try:
            actual = obj.from_yaml("a.yaml").as_dict()
            expected = obj.as_dict()
        except AttributeError:
            from dataclasses import asdict
            actual = asdict(obj.from_yaml("a.yaml"))
            expected = asdict(obj)
        try:
            assert len(actual) == len(expected)
        except AssertionError:
            print(tmpdir)
            raise
    else:
        actual = obj.from_yaml("a.yaml")
        print("actual", actual)

    if compare_items is True:
        for k, v in actual.items():
            try:
                assert v == expected[k]
            except AssertionError:
                print(tmpdir)
                print(f"key: {k}, actual: {v}, expected: {expected[k]}")
                raise