From 99a01dc7768999ae67d56ecbdc1e90daab4670e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tina=20M=C3=BCller?= Date: Fri, 6 Dec 2019 22:14:04 +0100 Subject: [PATCH] Replace symlink with copy because of windows... :( --- tests/lib3/test_multi_constructor.py | 64 +++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) mode change 120000 => 100644 tests/lib3/test_multi_constructor.py diff --git a/tests/lib3/test_multi_constructor.py b/tests/lib3/test_multi_constructor.py deleted file mode 120000 index 53919d36..00000000 --- a/tests/lib3/test_multi_constructor.py +++ /dev/null @@ -1 +0,0 @@ -../lib/test_multi_constructor.py \ No newline at end of file diff --git a/tests/lib3/test_multi_constructor.py b/tests/lib3/test_multi_constructor.py new file mode 100644 index 00000000..f6e28fe0 --- /dev/null +++ b/tests/lib3/test_multi_constructor.py @@ -0,0 +1,63 @@ +import yaml +import pprint +import sys + +def _load_code(expression): + return eval(expression) + +def myconstructor1(constructor, tag, node): + seq = constructor.construct_sequence(node) + return {tag: seq } + +def myconstructor2(constructor, tag, node): + seq = constructor.construct_sequence(node) + string = '' + try: + i = tag.index('!') + 1 + except: + try: + i = tag.rindex(':') + 1 + except: + pass + if i >= 0: + tag = tag[i:] + return { tag: seq } + +class Multi1(yaml.FullLoader): + pass +class Multi2(yaml.FullLoader): + pass + +def test_multi_constructor(input_filename, code_filename, verbose=False): + input = open(input_filename, 'rb').read().decode('utf-8') + native = _load_code(open(code_filename, 'rb').read()) + + # default multi constructor for ! and !! tags + Multi1.add_multi_constructor('!', myconstructor1) + Multi1.add_multi_constructor('tag:yaml.org,2002:', myconstructor1) + + data = yaml.load(input, Loader=Multi1) + if verbose: + print('Multi1:') + print(data) + print(native) + assert(data == native) + + + # default multi constructor for all tags + Multi2.add_multi_constructor(None, myconstructor2) + + data = yaml.load(input, Loader=Multi2) + if verbose: + print('Multi2:') + print(data) + print(native) + assert(data == native) + + +test_multi_constructor.unittest = ['.multi', '.code'] + +if __name__ == '__main__': + import test_appliance + test_appliance.run(globals()) +