Use custom YAML subclass to be compatible with ruamel_yaml>=0.17

Signed-off-by: Martin Weinelt <hexa@darmstadt.ccc.de>
This commit is contained in:
Martin Weinelt
2021-06-20 15:18:37 +02:00
parent 09f6bf1b46
commit e0942417a1
3 changed files with 30 additions and 13 deletions

18
whipper/common/yaml.py Normal file
View File

@@ -0,0 +1,18 @@
from ruamel.yaml import YAML as ruamel_YAML
from ruamel.yaml.compat import StringIO
# https://yaml.readthedocs.io/en/latest/example.html#output-of-dump-as-a-string
class YAML(ruamel_YAML):
def __init__(self, *args, **kwargs):
super().__init__()
self.width = 4000
self.default_flow_style = False
def dump(self, data, stream=None, **kw):
inefficient = False
if stream is None:
inefficient = True
stream = StringIO()
ruamel_YAML.dump(self, data, stream, **kw)
if inefficient:
return stream.getvalue()

View File

@@ -1,12 +1,12 @@
import time
import hashlib
import re
import ruamel.yaml as yaml
from ruamel.yaml.comments import CommentedMap as OrderedDict
import whipper
from whipper.common import common
from whipper.common.yaml import YAML
from whipper.result import result
@@ -148,11 +148,12 @@ class WhipperLogger(result.Logger):
data["EOF"] = "End of status report"
riplog["Conclusive status report"] = data
yaml = YAML(
typ="rt",
pure=True
)
riplog = yaml.dump(
riplog,
default_flow_style=False,
width=4000,
Dumper=yaml.RoundTripDumper
riplog
)
# Add a newline after the "Log creation date" line
riplog = re.sub(

View File

@@ -3,8 +3,8 @@ import hashlib
import os
import re
import unittest
import ruamel.yaml
from whipper.common.yaml import YAML
from whipper.result.result import TrackResult, RipResult
from whipper.result.logger import WhipperLogger
@@ -163,16 +163,14 @@ class LoggerTestCase(unittest.TestCase):
))
)
yaml = ruamel.yaml.YAML()
yaml = YAML(
typ='rt',
pure=True
)
parsedLog = yaml.load(actual)
self.assertEqual(
actual,
ruamel.yaml.dump(
parsedLog,
default_flow_style=False,
width=4000,
Dumper=ruamel.yaml.RoundTripDumper
)
yaml.dump(parsedLog)
)
log_body = "\n".join(actualLines[:-1]).encode()
self.assertEqual(