summaryrefslogtreecommitdiff
path: root/_test/test_comment_manipulation.py
diff options
context:
space:
mode:
Diffstat (limited to '_test/test_comment_manipulation.py')
-rw-r--r--_test/test_comment_manipulation.py359
1 files changed, 257 insertions, 102 deletions
diff --git a/_test/test_comment_manipulation.py b/_test/test_comment_manipulation.py
index 7586954..92810da 100644
--- a/_test/test_comment_manipulation.py
+++ b/_test/test_comment_manipulation.py
@@ -16,8 +16,11 @@ def compare(data, s, **kw):
def compare_eol(data, s):
- assert round_trip_dump(data).replace('\n', '|\n') == \
- dedent(s).replace('EOL', '').replace('\n', '|\n')
+ assert round_trip_dump(data).replace('\n', '|\n') == dedent(s).replace('EOL', "").replace(
+ '\n', '|\n'
+ )
+
+
# @pytest.mark.xfail
@@ -25,336 +28,451 @@ class TestCommentsManipulation:
# list
def test_seq_set_comment_on_existing_explicit_column(self):
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key=1, column=6)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 1
- b # comment 2
- c
- """)
+ """,
+ )
def test_seq_overwrite_comment_on_existing_explicit_column(self):
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key=0, column=6)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 2
- b
- c
- """)
+ """,
+ )
def test_seq_first_comment_explicit_column(self):
- data = load("""
+ data = load(
+ """
- a
- b
- c
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 1', key=1, column=6)
- compare(data, """
+ compare(
+ data,
+ """
- a
- b # comment 1
- c
- """)
+ """,
+ )
def test_seq_set_comment_on_existing_column_prev(self):
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- d # comment 3
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key=1)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 1
- b # comment 2
- c
- d # comment 3
- """)
+ """,
+ )
def test_seq_set_comment_on_existing_column_next(self):
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- d # comment 3
- """)
+ """
+ )
print(data._yaml_comment)
# print(type(data._yaml_comment._items[0][0].start_mark))
# ruamel.yaml.error.Mark
# print(type(data._yaml_comment._items[0][0].start_mark))
data.yaml_add_eol_comment('comment 2', key=2)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 1
- b
- c # comment 2
- d # comment 3
- """)
+ """,
+ )
def test_seq_set_comment_on_existing_column_further_away(self):
"""
no comment line before or after, take the latest before
the new position
"""
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- d
- e
- f # comment 3
- """)
+ """
+ )
print(data._yaml_comment)
# print(type(data._yaml_comment._items[0][0].start_mark))
# ruamel.yaml.error.Mark
# print(type(data._yaml_comment._items[0][0].start_mark))
data.yaml_add_eol_comment('comment 2', key=3)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 1
- b
- c
- d # comment 2
- e
- f # comment 3
- """)
+ """,
+ )
def test_seq_set_comment_on_existing_explicit_column_with_hash(self):
- data = load("""
+ data = load(
+ """
- a # comment 1
- b
- c
- """)
+ """
+ )
data.yaml_add_eol_comment('# comment 2', key=1, column=6)
- compare(data, """
+ compare(
+ data,
+ """
- a # comment 1
- b # comment 2
- c
- """)
+ """,
+ )
# dict
def test_dict_set_comment_on_existing_explicit_column(self):
- data = load("""
+ data = load(
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key='c', column=7)
- compare(data, """
+ compare(
+ data,
+ """
a: 1 # comment 1
b: 2
c: 3 # comment 2
d: 4
e: 5
- """)
+ """,
+ )
def test_dict_overwrite_comment_on_existing_explicit_column(self):
- data = load("""
+ data = load(
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key='a', column=7)
- compare(data, """
+ compare(
+ data,
+ """
a: 1 # comment 2
b: 2
c: 3
d: 4
e: 5
- """)
+ """,
+ )
def test_map_set_comment_on_existing_column_prev(self):
- data = load("""
+ data = load(
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5 # comment 3
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key='b')
- compare(data, """
+ compare(
+ data,
+ """
a: 1 # comment 1
b: 2 # comment 2
c: 3
d: 4
e: 5 # comment 3
- """)
+ """,
+ )
def test_map_set_comment_on_existing_column_next(self):
- data = load("""
+ data = load(
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5 # comment 3
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key='d')
- compare(data, """
+ compare(
+ data,
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4 # comment 2
e: 5 # comment 3
- """)
+ """,
+ )
def test_map_set_comment_on_existing_column_further_away(self):
"""
no comment line before or after, take the latest before
the new position
"""
- data = load("""
+ data = load(
+ """
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5 # comment 3
- """)
+ """
+ )
data.yaml_add_eol_comment('comment 2', key='c')
print(round_trip_dump(data))
- compare(data, """
+ compare(
+ data,
+ """
a: 1 # comment 1
b: 2
c: 3 # comment 2
d: 4
e: 5 # comment 3
- """)
+ """,
+ )
# @pytest.mark.xfail
def test_before_top_map_rt(self):
- data = load("""
+ data = load(
+ """
a: 1
b: 2
- """)
+ """
+ )
data.yaml_set_start_comment('Hello\nWorld\n')
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
a: 1
b: 2
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_top_map_replace(self):
- data = load("""
+ data = load(
+ """
# abc
# def
a: 1 # 1
b: 2
- """)
+ """
+ )
data.yaml_set_start_comment('Hello\nWorld\n')
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
a: 1 # 1
b: 2
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_top_map_from_scratch(self):
from ruamel.yaml.comments import CommentedMap
+
data = CommentedMap()
data['a'] = 1
data['b'] = 2
data.yaml_set_start_comment('Hello\nWorld\n')
# print(data.ca)
# print(data.ca._items)
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
a: 1
b: 2
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_top_seq_rt(self):
- data = load("""
+ data = load(
+ """
- a
- b
- """)
+ """
+ )
data.yaml_set_start_comment('Hello\nWorld\n')
print(round_trip_dump(data))
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
- a
- b
- """)
+ """,
+ )
def test_before_top_seq_rt_replace(self):
- data = load("""
+ data = load(
+ """
# this
# that
- a
- b
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ )
+ )
data.yaml_set_start_comment('Hello\nWorld\n')
print(round_trip_dump(data))
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
- a
- b
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_top_seq_from_scratch(self):
from ruamel.yaml.comments import CommentedSeq
+
data = CommentedSeq()
data.append('a')
data.append('b')
data.yaml_set_start_comment('Hello\nWorld\n')
print(round_trip_dump(data))
- compare(data, """
+ compare(
+ data,
+ """
# Hello
# World
- a
- b
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
# nested variants
def test_before_nested_map_rt(self):
- data = load("""
+ data = load(
+ """
a: 1
b:
c: 2
d: 3
- """)
+ """
+ )
data['b'].yaml_set_start_comment('Hello\nWorld\n')
- compare(data, """
+ compare(
+ data,
+ """
a: 1
b:
# Hello
# World
c: 2
d: 3
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_nested_map_rt_indent(self):
- data = load("""
+ data = load(
+ """
a: 1
b:
c: 2
d: 3
- """)
+ """
+ )
data['b'].yaml_set_start_comment('Hello\nWorld\n', indent=2)
- compare(data, """
+ compare(
+ data,
+ """
a: 1
b:
# Hello
# World
c: 2
d: 3
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
print(data['b'].ca)
def test_before_nested_map_from_scratch(self):
from ruamel.yaml.comments import CommentedMap
+
data = CommentedMap()
datab = CommentedMap()
data['a'] = 1
@@ -362,17 +480,23 @@ class TestCommentsManipulation:
datab['c'] = 2
datab['d'] = 3
data['b'].yaml_set_start_comment('Hello\nWorld\n')
- compare(data, """
+ compare(
+ data,
+ """
a: 1
b:
# Hello
# World
c: 2
d: 3
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_nested_seq_from_scratch(self):
from ruamel.yaml.comments import CommentedMap, CommentedSeq
+
data = CommentedMap()
datab = CommentedSeq()
data['a'] = 1
@@ -380,17 +504,23 @@ class TestCommentsManipulation:
datab.append('c')
datab.append('d')
data['b'].yaml_set_start_comment('Hello\nWorld\n', indent=2)
- compare(data, """
+ compare(
+ data,
+ """
a: 1
b:
# Hello
# World
- c
- d
- """.format(comment='#'))
+ """.format(
+ comment='#'
+ ),
+ )
def test_before_nested_seq_from_scratch_block_seq_indent(self):
from ruamel.yaml.comments import CommentedMap, CommentedSeq
+
data = CommentedMap()
datab = CommentedSeq()
data['a'] = 1
@@ -398,18 +528,26 @@ class TestCommentsManipulation:
datab.append('c')
datab.append('d')
data['b'].yaml_set_start_comment('Hello\nWorld\n', indent=2)
- compare(data, """
+ compare(
+ data,
+ """
a: 1
b:
# Hello
# World
- c
- d
- """.format(comment='#'), indent=4, block_seq_indent=2)
+ """.format(
+ comment='#'
+ ),
+ indent=4,
+ block_seq_indent=2,
+ )
def test_map_set_comment_before_and_after_non_first_key_00(self):
# http://stackoverflow.com/a/40705671/1307905
- data = load("""
+ data = load(
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -417,11 +555,15 @@ class TestCommentsManipulation:
test1:
test2:
test3: 3
- """)
- data.yaml_set_comment_before_after_key('test1', 'before test1 (top level)',
- after='before test2')
+ """
+ )
+ data.yaml_set_comment_before_after_key(
+ 'test1', 'before test1 (top level)', after='before test2'
+ )
data['test1']['test2'].yaml_set_start_comment('after test2', indent=4)
- compare(data, """
+ compare(
+ data,
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -432,10 +574,12 @@ class TestCommentsManipulation:
test2:
# after test2
test3: 3
- """)
+ """,
+ )
def test_map_set_comment_before_and_after_non_first_key_01(self):
- data = load("""
+ data = load(
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -443,12 +587,16 @@ class TestCommentsManipulation:
test1:
test2:
test3: 3
- """)
- data.yaml_set_comment_before_after_key('test1', 'before test1 (top level)',
- after='before test2\n\n')
+ """
+ )
+ data.yaml_set_comment_before_after_key(
+ 'test1', 'before test1 (top level)', after='before test2\n\n'
+ )
data['test1']['test2'].yaml_set_start_comment('after test2', indent=4)
# EOL is needed here as dedenting gets rid of spaces (as well as does Emacs
- compare_eol(data, """
+ compare_eol(
+ data,
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -460,10 +608,12 @@ class TestCommentsManipulation:
test2:
# after test2
test3: 3
- """)
+ """,
+ )
def test_map_set_comment_before_and_after_non_first_key_02(self):
- data = load("""
+ data = load(
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -471,12 +621,16 @@ class TestCommentsManipulation:
test1:
test2:
test3: 3
- """)
- data.yaml_set_comment_before_after_key('test1', 'xyz\n\nbefore test1 (top level)',
- after='\nbefore test2', after_indent=4)
+ """
+ )
+ data.yaml_set_comment_before_after_key(
+ 'test1', 'xyz\n\nbefore test1 (top level)', after='\nbefore test2', after_indent=4
+ )
data['test1']['test2'].yaml_set_start_comment('after test2', indent=4)
# EOL is needed here as dedenting gets rid of spaces (as well as does Emacs
- compare_eol(data, """
+ compare_eol(
+ data,
+ """
xyz:
a: 1 # comment 1
b: 2
@@ -490,4 +644,5 @@ class TestCommentsManipulation:
test2:
# after test2
test3: 3
- """)
+ """,
+ )