diff --git a/whipper/common/yaml.py b/whipper/common/yaml.py new file mode 100644 index 0000000..4edb0b3 --- /dev/null +++ b/whipper/common/yaml.py @@ -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() diff --git a/whipper/result/logger.py b/whipper/result/logger.py index b7043ad..f4471a0 100644 --- a/whipper/result/logger.py +++ b/whipper/result/logger.py @@ -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( diff --git a/whipper/test/test_result_logger.py b/whipper/test/test_result_logger.py index 411b61a..98c89ab 100644 --- a/whipper/test/test_result_logger.py +++ b/whipper/test/test_result_logger.py @@ -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(