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