summaryrefslogtreecommitdiff
path: root/morphlib/yamlparse_tests.py
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-01-18 16:37:17 +0000
committerJavier Jardón <javier.jardon@codethink.co.uk>2013-01-22 18:34:22 +0000
commit3f19b84e03c3452c54f18c1a0ccc6008c6478a99 (patch)
tree290f97fe44fcbe1f29a5c342f46fec7ac46c757f /morphlib/yamlparse_tests.py
parent7ef9cb8922bd933ae8ee58cb24a2b38844a0e629 (diff)
downloadmorph-3f19b84e03c3452c54f18c1a0ccc6008c6478a99.tar.gz
Fix tests
Invalid text changed to be something that doesn't parse as YAML either, and catch convert the YAMLError to the expected exception. Ideally there wouldn't be any `#pragma: no cover`s, but I could not trigger these code paths.
Diffstat (limited to 'morphlib/yamlparse_tests.py')
-rw-r--r--morphlib/yamlparse_tests.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/morphlib/yamlparse_tests.py b/morphlib/yamlparse_tests.py
new file mode 100644
index 00000000..cb658e15
--- /dev/null
+++ b/morphlib/yamlparse_tests.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2013 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import unittest
+
+try:
+ from collections import OrderedDict
+except ImportError:
+ from ordereddict import OrderedDict
+import yaml
+
+import morphlib.yamlparse as yamlparse
+
+
+class YAMLParseTests(unittest.TestCase):
+
+ example_text = '''\
+name: foo
+kind: chunk
+build-system: manual
+'''
+
+ example_dict = OrderedDict([
+ ('name', 'foo'),
+ ('kind', 'chunk'),
+ ('build-system', 'manual'),
+ ])
+
+ def test_loads_as_ordered_dict(self):
+ m = yamlparse.load(self.example_text)
+ self.assertEqual(type(m), OrderedDict)
+
+ def test_dumps_ordered_dicts(self):
+ self.assertEqual(self.example_text,
+ yamlparse.dump(self.example_dict))
+
+ def test_non_map_raises(self):
+ incorrect_type = '''\
+!!map
+- foo
+- bar
+'''
+ self.assertRaises(yaml.YAMLError, yamlparse.load, incorrect_type)
+
+ def test_complex_key_fails_KNOWNFAILURE(self):
+ complex_key = '? { foo: bar, baz: qux }: True'
+ self.assertRaises(yaml.YAMLError, yamlparse.load, complex_key)
+
+ def test_represents_non_scalar_nodes(self):
+ self.assertTrue(
+ yamlparse.dump(
+ {
+ ('a', 'b'): {
+ "foo": 1,
+ "bar": 2,
+ }
+ }, default_flow_style=None))