Mercurial > nagslang
annotate nagslang/tests/test_yamlish.py @ 112:c28f2fc2bb05
Test with dump_s and load_s
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Mon, 02 Sep 2013 14:50:30 +0200 |
parents | adf3cd83bf7a |
children | d1a96fc62d26 |
rev | line source |
---|---|
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
1 from unittest import TestCase, SkipTest |
89
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
2 |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
3 try: |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
4 import yaml |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
5 except ImportError: |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
6 yaml = None # pyflakes:ignore |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
7 |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
8 from nagslang.yamlish import load_s, dump_s |
103
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
9 |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
10 |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
11 class TestParse(TestCase): |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
12 def assertParsesAs(self, text, expected): |
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
13 self.assertEqual(load_s(text.strip()), expected) |
103
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
14 |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
15 def test_dict_list_1(self): |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
16 self.assertParsesAs(''' |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
17 foo: |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
18 - bar |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
19 - baz |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
20 ''', {'foo': ['bar', 'baz']}) |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
21 |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
22 def test_dict_list_2(self): |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
23 self.assertParsesAs(''' |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
24 foo: |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
25 - bar |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
26 - baz |
adf3cd83bf7a
Support a common stylistic variation
Stefano Rivera <stefano@rivera.za.net>
parents:
90
diff
changeset
|
27 ''', {'foo': ['bar', 'baz']}) |
89
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
28 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
29 |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
30 class TestRoundTrip(TestCase): |
89
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
31 def roundtrip(self, data): |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
32 text = self.dump_s(data) |
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
33 print '\n=== Begin ===\n%s\n=== End ===' % text |
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
34 self.assertEqual(self.load_s(text), data) |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
35 |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
36 def dump_s(self, data): |
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
37 return dump_s(data) |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
38 |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
39 def load_s(self, text): |
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
40 return load_s(text) |
89
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
41 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
42 def test_simple_dict(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
43 self.roundtrip({'foo': 'bar'}) |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
44 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
45 def test_dict_of_dicts(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
46 self.roundtrip({'foo': {'bar': 'baz'}}) |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
47 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
48 def test_dict_tree(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
49 self.roundtrip({ |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
50 'foo': { |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
51 'bar': { |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
52 'baz': 'qux' |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
53 }, |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
54 'quux': 'corge', |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
55 } |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
56 }) |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
57 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
58 def test_dict_list(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
59 self.roundtrip({ |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
60 'foo': ['bar', 'baz'], |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
61 }) |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
62 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
63 def test_nested_lists(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
64 self.roundtrip({ |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
65 'foo': [['bar', 'baz', 'qux'], 'quux'], |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
66 }) |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
67 |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
68 def test_list_of_dicts(self): |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
69 self.roundtrip({ |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
70 'foo': [ |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
71 {'bar': 'baz'}, |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
72 {'qux': 'quux'}, |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
73 ], |
102043902451
Simple (subset of) YAML parser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
74 }) |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
75 |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
76 |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
77 class TestFromPyYAML(TestRoundTrip): |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
78 def dump_s(self, data): |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
79 if yaml is None: |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
80 raise SkipTest('yaml module unavailable') |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
81 return yaml.dump(data, default_flow_style=False) |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
82 |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
83 |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
84 class TestToPyYAML(TestRoundTrip): |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
85 def load_s(self, text): |
90
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
86 if yaml is None: |
a8d83de5b460
Dump our YAML subset too
Stefano Rivera <stefano@rivera.za.net>
parents:
89
diff
changeset
|
87 raise SkipTest('yaml module unavailable') |
112
c28f2fc2bb05
Test with dump_s and load_s
Stefano Rivera <stefano@rivera.za.net>
parents:
103
diff
changeset
|
88 return yaml.load(text) |