From d5fdbb52beec4671a3fd08801a422cb063eb3b31 Mon Sep 17 00:00:00 2001 From: SYSTEMS-OPERATOR <155610697+SYSTEMS-OPERATOR@users.noreply.github.com> Date: Fri, 27 Jun 2025 05:23:10 -0400 Subject: [PATCH] Fix alias resolution in minimal_yaml --- minimal_yaml.py | 4 +++- tests/test_minimal_yaml.py | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/test_minimal_yaml.py diff --git a/minimal_yaml.py b/minimal_yaml.py index e1bfaa9..6101cce 100644 --- a/minimal_yaml.py +++ b/minimal_yaml.py @@ -20,7 +20,9 @@ def safe_load(stream): line = f"{indent}{key}: {val}" elif alias_def: indent, key, anc = alias_def.groups() - val = anchors.get(anc) + if anc not in anchors: + raise ValueError(f'Alias "{anc}" not defined') + val = anchors[anc] val_repr = repr(val) if isinstance(val, str) else str(val) line = f"{indent}{key}: {val_repr}" processed.append(line) diff --git a/tests/test_minimal_yaml.py b/tests/test_minimal_yaml.py new file mode 100644 index 0000000..d2159cf --- /dev/null +++ b/tests/test_minimal_yaml.py @@ -0,0 +1,22 @@ +import os +import sys +import pytest + +sys.path.append(os.path.dirname(os.path.dirname(__file__))) +from minimal_yaml import safe_load + + +def test_alias_resolution(): + text = """ +key1: &val 123 +key2: *val +""" + data = safe_load(text) + assert data["key1"] == 123 + assert data["key2"] == 123 + + +def test_unknown_alias_error(): + text = "key: *missing" + with pytest.raises(ValueError): + safe_load(text)