1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
import io
from unittest import SkipTest, TestCase
from staticsite.utils import yaml_codec
yaml_sample = """---
key: val
bool: true
"""
yaml_sample_sorted = """---
bool: true
key: val
"""
yaml_sample_parsed = {
"key": "val",
"bool": True,
}
class YamlTestMixin:
def test_loads(self):
self.assertEqual(self.loads(self.sample), self.sample_parsed)
self.assertEqual(self.loads(self.sample.encode()), self.sample_parsed)
def test_load(self):
with io.StringIO(self.sample) as fd:
self.assertEqual(self.load(fd), self.sample_parsed)
def test_dumps(self):
self.assertEqual(self.dumps(self.sample_parsed), self.sample)
def test_dump(self):
with io.StringIO() as fd:
self.dump(self.sample_parsed, fd)
self.assertEqual(fd.getvalue(), self.sample)
class TestRuamel(YamlTestMixin, TestCase):
def setUp(self):
if yaml_codec.load_ruamel is None:
raise SkipTest("ruamel.yaml not available")
self.loads = yaml_codec.loads_ruamel
self.load = yaml_codec.load_ruamel
self.dumps = yaml_codec.dumps_ruamel
self.dump = yaml_codec.dump_ruamel
self.sample = yaml_sample
self.sample_parsed = yaml_sample_parsed
class TestPyYAML(YamlTestMixin, TestCase):
def setUp(self):
if yaml_codec.load_pyyaml is None:
raise SkipTest("PyYAML not available")
self.loads = yaml_codec.loads_pyyaml
self.load = yaml_codec.load_pyyaml
self.dumps = yaml_codec.dumps_pyyaml
self.dump = yaml_codec.dump_pyyaml
self.sample = yaml_sample_sorted
self.sample_parsed = yaml_sample_parsed
|