From b2626a0f17507903cb05b6796896b0112645aa7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Sch=C3=BCller?= Date: Fri, 19 Apr 2024 11:58:24 +0200 Subject: [PATCH] test: implement simple sugar test --- test/test_sugar.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/test_sugar.py diff --git a/test/test_sugar.py b/test/test_sugar.py new file mode 100644 index 00000000..4c273a1d --- /dev/null +++ b/test/test_sugar.py @@ -0,0 +1,61 @@ +import pytest + +from otk.parse.document import Omnifest +from otk.transform.context import Context +from otk.transform import resolve +from otk.error import TransformDirectiveTypeError + + +def test_simple_sugar(): + data = """ +otk.version: 1 +otk.define: + variable: "foo" + +my_var: ${variable} +""" + + context = Context() + omnifest_under_test = Omnifest.from_yaml_bytes(data).to_tree() + + omnifest_result = resolve(context, omnifest_under_test) + + assert omnifest_result['my_var'] == "foo" + + +def test_simple_sugar_tree(): + data = """ +otk.version: 1 +otk.define: + variable: + - 1 + - 2 + +my_var: ${variable} +""" + + context = Context() + omnifest_under_test = Omnifest.from_yaml_bytes(data).to_tree() + + omnifest_result = resolve(context, omnifest_under_test) + + assert omnifest_result['my_var'] == [1, 2] + + +def test_simple_sugar_tree_fail(): + data = """ +otk.version: 1 +otk.define: + variable: + - 1 + - 2 + +my_var: my_prefix_${variable} +""" + expected_error = 'string sugar resolves to an incorrect type, expected int, float, or str but got %r' + + context = Context() + omnifest_under_test = Omnifest.from_yaml_bytes(data).to_tree() + + with pytest.raises(TransformDirectiveTypeError, match=expected_error): + resolve(context, omnifest_under_test)