diff options
Diffstat (limited to '_test/test_indentation.py')
-rw-r--r-- | _test/test_indentation.py | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/_test/test_indentation.py b/_test/test_indentation.py new file mode 100644 index 0000000..9a79c64 --- /dev/null +++ b/_test/test_indentation.py @@ -0,0 +1,101 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import unicode_literals + + +from textwrap import dedent + +import pytest + +import ruamel.yaml + + +def rt(s): + return ruamel.yaml.dump( + ruamel.yaml.load(s, Loader=ruamel.yaml.RoundTripLoader), + Dumper=ruamel.yaml.RoundTripDumper, + ).strip() + '\n' + + +def test_roundtrip_inline_list(): + s = 'a: [a, b, c]\n' + output = rt(s) + assert s == output + +def test_roundtrip_mapping_of_inline_lists(): + s = dedent("""\ + a: [a, b, c] + j: [k, l, m] + """) + output = rt(s) + assert s == output + +def test_roundtrip_mapping_of_inline_lists_comments(): + s = dedent("""\ + # comment A + a: [a, b, c] + # comment B + j: [k, l, m] + """) + output = rt(s) + assert s == output + +def test_roundtrip_mapping_of_inline_sequence_eol_comments(): + s = dedent("""\ + # comment A + a: [a, b, c] # comment B + j: [k, l, m] # comment C + """) + output = rt(s) + assert s == output + + +# first test by explicitly setting flow style +def test_added_inline_list(): + s1 = dedent(""" + a: + - b + - c + - d + """) + s = 'a: [b, c, d]\n' + data = ruamel.yaml.load(s1, Loader=ruamel.yaml.RoundTripLoader) + val = data['a'] + val.fa.set_flow_style() + # print(type(val), '_yaml_format' in dir(val)) + output = ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper) + assert s == output + +############# flow mappings + +def test_roundtrip_flow_mapping(): + s = dedent("""\ + - {a: 1, b: hallo} + - {j: fka, k: 42} + """) + data = ruamel.yaml.load(s, Loader=ruamel.yaml.RoundTripLoader) + output = ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper) + assert s == output + +def test_roundtrip_sequence_of_inline_mappings_eol_comments(): + s = dedent("""\ + # comment A + - {a: 1, b: hallo} # comment B + - {j: fka, k: 42} # comment C + """) + output = rt(s) + assert s == output + + + +############# indentation + +@pytest.mark.xfail +def test_roundtrip_four_space_indents(): + s = ( + 'a:\n' + '- foo\n' + '- bar\n' + ) + output = rt(s) + assert s == output |