File: test_yaml.py

package info (click to toggle)
staticsite 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,648 kB
  • sloc: javascript: 33,722; python: 9,851; makefile: 46; sh: 4
file content (61 lines) | stat: -rw-r--r-- 1,693 bytes parent folder | download
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