summaryrefslogtreecommitdiff
path: root/_test/test_indentation.py
diff options
context:
space:
mode:
Diffstat (limited to '_test/test_indentation.py')
-rw-r--r--_test/test_indentation.py101
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