aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_reader.py
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2012-02-23 16:44:57 +0100
committerMatěj Cepl <mcepl@redhat.com>2012-02-23 19:54:04 +0100
commit170d827e642de4980049c2ea71ebcf1852e29c9c (patch)
tree0663acce589b5a288cb2ff2ac29e8e23307e2a70 /test/test_reader.py
parent91e4adcbc3e7bd459b52cd98a1cdd9239998b09f (diff)
downloadyamlish-170d827e642de4980049c2ea71ebcf1852e29c9c.tar.gz
Input/Read test succeed!
Diffstat (limited to 'test/test_reader.py')
-rw-r--r--test/test_reader.py212
1 files changed, 75 insertions, 137 deletions
diff --git a/test/test_reader.py b/test/test_reader.py
index 1694abe..e8d39d1 100644
--- a/test/test_reader.py
+++ b/test/test_reader.py
@@ -1,10 +1,7 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import, print_function, unicode_literals
-import re
-import unittest
-import yamlish
+import yaml
-SCHEDULE = [
+test_data_list = [
{
"name": 'Hello World',
"in": [ '--- Hello, World', '...', ],
@@ -26,45 +23,45 @@ SCHEDULE = [
"out": "Hello, World",
},
{
- "name": 'Hello World 4',
- "in": [ '--- >', ' Hello,', ' World', '...', ],
+ "name": 'Hello World 5',
+ "in": [ '--- >', ' Hello,', ' World', '...', ],
"out": "Hello, World\n",
},
{
- "name": 'Hello World 5',
- "in": [ '--- >', ' Hello,', ' World', '...', ],
- "error": re.compile(r"Missing\s+'[.][.][.]'"),
+ "name": 'Hello World 6',
+ "in": [ '--- >', ' Hello,', ' World', '...', ],
+ "error": yaml.parser.ParserError,
},
{
"name": 'Simple array',
"in": [ '---', '- 1', '- 2', '- 3', '...', ],
- "out": [ '1', '2', '3' ],
+ "out": [ 1, 2, 3 ],
},
{
"name": 'Mixed array',
- "in": [ '---', '- 1', '- \'two\'', '- "three\n"', '...', ],
- "out": [ '1', 'two', "three\n" ],
+ "in": [ '---', '- 1', "- 'two'", r'- "three\n"', '...', ],
+ "out": [ 1, 'two', "three\n" ],
},
{
"name": 'Hash in array',
- "in": [ '---', '- 1', '- two: 2', '- 3', '...', ],
- "out": [ '1', { "two": '2' }, '3' ],
+ "in": [ '---', ' - 1', ' - two: 2', ' - 3', '...', ],
+ "out": [ 1, { "two": 2 }, 3 ],
},
{
"name": 'Hash in array 2',
"in": [ '---', '- 1', '- two: 2', ' three: 3', '- 4', '...', ],
- "out": [ '1', { "two": '2', "three": '3' }, '4' ],
+ "out": [ 1, { "two": 2, "three": 3 }, 4 ],
},
{
"name": 'Nested array',
"in": [
'---',
'- one',
- '-',
- ' - two',
- ' -',
- ' - three',
- ' - four',
+ '- ',
+ ' - two',
+ ' - ',
+ ' - three',
+ ' - four',
'- five',
'...',
],
@@ -83,8 +80,8 @@ SCHEDULE = [
'...',
],
"out": {
- "one": { "two": { "three": '3', "four": '4' }, "five": '5' },
- "six": '6'
+ "one": { "two": { "three": 3, "four": 4 }, "five": 5 },
+ "six": 6
},
},
@@ -98,7 +95,7 @@ SCHEDULE = [
' given : Chris',
' family : Dumars',
' address:',
- ' lines: |',
+ ' lines: | ',
' 458 Walkman Dr.',
' Suite #292',
' city : Royal Oak',
@@ -122,36 +119,36 @@ SCHEDULE = [
'...',
],
"out": {
- "bill - to": {
+ "bill-to": {
"given": 'Chris',
"address": {
"city": 'Royal Oak',
- "postal": '48046',
+ "postal": 48046,
"lines": "458 Walkman Dr.\nSuite #292\n",
"state": 'MI'
},
"family": 'Dumars'
},
- "invoice": '34843',
+ "invoice": 34843,
"date": '2001-01-23',
- "tax": '251.42',
+ "tax": 251.42,
"product": [
{
"sku": 'BL394D',
- "quantity": '4',
- "price": '450.00',
+ "quantity": 4,
+ "price": 450.00,
"description": 'Basketball'
},
{
"sku": 'BL4438H',
- "quantity": '1',
- "price": '2392.00',
+ "quantity": 1,
+ "price": 2392.00,
"description": 'Super Hoop'
}
],
'comments':
"Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338\n",
- "total": '4443.52'
+ "total": 4443.52
}
},
@@ -159,24 +156,25 @@ SCHEDULE = [
{
"in": ['...'],
"name": 'Regression: empty',
- "error": re.compile(r"document\s+header\s+not\s+found")
+ "error": yaml.parser.ParserError,
},
{
"in": [ '# comment', '...' ],
"name": 'Regression: only_comment',
- "error": re.compile(r"document\s+ header\s+ not\s+ found")
+ "error": yaml.parser.ParserError,
},
{
+ "skip": True, # A corner case, which is apparently not
+ # clear even from the spec file
"out": None,
"in": [ '---', '...' ],
"name": 'Regression: only_header',
- "error": re.compile(r"Premature\s+end", re.I),
+ "x-error": yaml.parser.ParserError,
},
{
- "out": None,
"in": [ '---', '---', '...' ],
"name": 'Regression: two_header',
- "error": re.compile(r"Unexpected\s+start", re.I),
+ "error": yaml.composer.ComposerError,
},
{
"out": None,
@@ -191,7 +189,7 @@ SCHEDULE = [
{
"in": [ '--- ~', '---', '...' ],
"name": 'Regression: two_undef',
- "error": re.compile(r"Missing\s+'[.][.][.]'"),
+ "error": yaml.composer.ComposerError,
},
{
"out": 'foo',
@@ -206,7 +204,7 @@ SCHEDULE = [
{
"in": [ '--- foo', '--- bar', '...' ],
"name": 'Regression: two_scalar',
- "error": re.compile(r"Missing\s+'[.][.][.]'"),
+ "error": yaml.composer.ComposerError,
},
{
"out": ['foo'],
@@ -310,49 +308,49 @@ SCHEDULE = [
},
{
"name": "Unprintables",
+ "skip": False,
"in": [
- " - - -",
- " - \"\\z\\x01\\x02\\x03\\x04\\x05\\x06\\a\\x08\\t\\n\\v\\f\\r\\x0e\\x0f\"",
- "- \"\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\e\\x1c\\x1d\\x1e\\x1f\"",
- "- \" !\\\"#\$%&'()*+,-./\"",
- "- 0123456789:;<=>?",
- "- '\@ABCDEFGHIJKLMNO'",
- "- 'PQRSTUVWXYZ[\\]^_'",
- "- '`abcdefghijklmno'",
- "- 'pqrstuvwxyz{|}~\177'",
- "- \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217",
- "- \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237",
- "- \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257",
- "- \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277",
- "- \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317",
- "- \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337",
- "- \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357",
- "- \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377",
- "..."
- ],
+ "---",
+ "- \"\\z\\x01\\x02\\x03\\x04\\x05\\x06\\a\\x08\\t\\n\\v\\f\\r\\x0e\\x0f\"",
+ "- \"\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\e\\x1c\\x1d\\x1e\\x1f\"",
+ "- \" !\\\"#\$%&'()*+,-./\"",
+ "- 0123456789:;<=>?",
+ "- '\@ABCDEFGHIJKLMNO'",
+ "- 'PQRSTUVWXYZ[\\]^_'",
+ "- '`abcdefghijklmno'",
+ "- 'pqrstuvwxyz{|}~\177'",
+ "- \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217",
+ "- \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237",
+ "- \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257",
+ "- \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277",
+ "- \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317",
+ "- \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337",
+ "- \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357",
+ "- \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377",
+ "..."],
"out": [
- "\0\1\2\3\4\5\6\a\b\t\n\13\f\r\16\17",
- "\20\21\22\23\24\25\26\27\30\31\32\e\34\35\36\37",
- " !\"#\$%&'()*+,-./",
- "0123456789:;<=>?",
- "\@ABCDEFGHIJKLMNO",
- "PQRSTUVWXYZ[\\]^_",
- "`abcdefghijklmno",
- "pqrstuvwxyz{|}~\177",
- "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217",
- "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237",
- "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257",
- "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277",
- "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317",
- "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337",
- "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357",
- "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
- ],
+ "\0\1\2\3\4\5\6\a\b\t\n\13\f\r\16\17",
+ "\20\21\22\23\24\25\26\27\30\31\32\e\34\35\36\37",
+ " !\"#\$%&'()*+,-./",
+ "0123456789:;<=>?",
+ "\@ABCDEFGHIJKLMNO",
+ "PQRSTUVWXYZ[\\]^_",
+ "`abcdefghijklmno",
+ "pqrstuvwxyz{|}~\177",
+ "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217",
+ "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237",
+ "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257",
+ "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277",
+ "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317",
+ "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337",
+ "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357",
+ "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
+ ]
},
{
"name": 'Quoted hash keys',
"in": [
- '---', ' "quoted": Magic!', ' "\n\t": newline, tab', '...',
+ '---', ' "quoted": Magic!', ' "\\n\\t": newline, tab', '...',
],
"out": {
"quoted": 'Magic!',
@@ -360,63 +358,3 @@ SCHEDULE = [
},
},
]
-
-# FIXME plan(tests=(len(SCHEDULE) * 5))
-
-#sub iter {
-# my $ar = shift;
-# return sub {
-# return shift @$ar;
-# };
-#}
-
-class TestReader(unittest.TestCase):
- def test_reader(self):
- for test in SCHEDULE:
- name = test['name']
- yaml = yamlish.Reader()
- self.assert_(True, "%s: Created" % name)
- self.assert_(isinstance(yaml, yamlish.Reader))
-
- # diag "$name\n";
-
- # unless ( $test->{in} ) {
- # pass for 1 .. 2;
- # use YAML;
- # diag "Input for test:\n";
- # diag( Dump( $test->{out} ) );
- # next;
- # }
-
- source = "\n".join([line for line in test['in']]) + "\n"
-
- try:
- got = yaml.read(test['in']) # expecting test['in'] being an iterator
- except IOError as exc: # FIXME no idea what
- dollar_at = exc
-
- raw = yaml.get_raw()
-
- err = test['error'] # RE for testing results
- if err: # if we have err, use it
- if not err.search(dollar_at): # FIXME $@ (or dollar_at) is described
- # in perlvar(1) the error status of the last eval(), which
- # means that yaml.read(test['in'])
- # if everything is alright, then it is None
- self.assertFalse("%s: Error message" % name)
- raise Exception(dollar_at)
- self.assert_(not got, "%s: No result" % name)
- else:
- want = test['out']
- self.assert_(not dollar_at, "%s: No error\n%s" % (name, dollar_at))
-
- self.assertEqual(got, want, """%s: Result matches
- expected = %s
-
- observed = %s
- """ % (name, want, got))
- self.assertEqual(raw, source, """%s: Captured source matches
- expected = %s
-
- observed = %s
- """ % (name, raw, source))