summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxi <xi@18f92427-320e-0410-9341-c67f048884a3>2008-12-27 19:09:03 +0000
committerxi <xi@18f92427-320e-0410-9341-c67f048884a3>2008-12-27 19:09:03 +0000
commit356b2ffe4c71f00e8f274d38759416f0856bee16 (patch)
treed63cc9dfdf39b7f86d1da9ecfd3a7f01f5573be2
parent17f23eaa6ae4fecdacb1950f2ba4462a7ae79e9c (diff)
downloadpyyaml-356b2ffe4c71f00e8f274d38759416f0856bee16.tar.gz
Fixed test errors for LibYAML bindings; added a test on emitting nodes in all possible styles.
git-svn-id: http://svn.pyyaml.org/pyyaml/trunk@312 18f92427-320e-0410-9341-c67f048884a3
-rw-r--r--tests/data/emitting-unacceptable-unicode-character-bug.skip-ext0
-rw-r--r--tests/data/no-alias-anchor.skip-ext0
-rw-r--r--tests/data/spec-07-01.skip-ext0
-rw-r--r--tests/data/spec-07-02.skip-ext0
-rw-r--r--tests/data/spec-08-13.skip-ext0
-rw-r--r--tests/data/spec-09-20.skip-ext0
-rw-r--r--tests/test_appliance.py3
-rw-r--r--tests/test_emitter.py36
-rw-r--r--tests/test_yaml_ext.py4
9 files changed, 42 insertions, 1 deletions
diff --git a/tests/data/emitting-unacceptable-unicode-character-bug.skip-ext b/tests/data/emitting-unacceptable-unicode-character-bug.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/emitting-unacceptable-unicode-character-bug.skip-ext
diff --git a/tests/data/no-alias-anchor.skip-ext b/tests/data/no-alias-anchor.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/no-alias-anchor.skip-ext
diff --git a/tests/data/spec-07-01.skip-ext b/tests/data/spec-07-01.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/spec-07-01.skip-ext
diff --git a/tests/data/spec-07-02.skip-ext b/tests/data/spec-07-02.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/spec-07-02.skip-ext
diff --git a/tests/data/spec-08-13.skip-ext b/tests/data/spec-08-13.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/spec-08-13.skip-ext
diff --git a/tests/data/spec-09-20.skip-ext b/tests/data/spec-09-20.skip-ext
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/spec-09-20.skip-ext
diff --git a/tests/test_appliance.py b/tests/test_appliance.py
index d5e5d3e..61cc03f 100644
--- a/tests/test_appliance.py
+++ b/tests/test_appliance.py
@@ -9,6 +9,7 @@ from yaml.resolver import *
class TestAppliance(unittest.TestCase):
DATA = 'tests/data'
+ SKIP_EXT = '.skip'
all_tests = {}
for filename in os.listdir(DATA):
@@ -19,6 +20,8 @@ class TestAppliance(unittest.TestCase):
def add_tests(cls, method_name, *extensions):
for test in cls.all_tests:
available_extensions = cls.all_tests[test]
+ if cls.SKIP_EXT in available_extensions:
+ continue
for ext in extensions:
if ext not in available_extensions:
break
diff --git a/tests/test_emitter.py b/tests/test_emitter.py
index d45cd8f..77e3728 100644
--- a/tests/test_emitter.py
+++ b/tests/test_emitter.py
@@ -34,6 +34,41 @@ class TestEmitter(test_appliance.TestAppliance):
self.failUnlessEqual(event.tag, new_event.tag)
self.failUnlessEqual(event.value, new_event.value)
+ def _testEmitterStyles(self, test_name, canonical_filename, data_filename):
+ for filename in [canonical_filename, data_filename]:
+ events = list(parse(file(filename, 'rb')))
+ for flow_style in [False, True]:
+ for style in ['|', '>', '"', '\'', '']:
+ styled_events = []
+ for event in events:
+ if isinstance(event, ScalarEvent):
+ event = ScalarEvent(event.anchor, event.tag,
+ event.implicit, event.value, style=style)
+ elif isinstance(event, SequenceStartEvent):
+ event = SequenceStartEvent(event.anchor, event.tag,
+ event.implicit, flow_style=flow_style)
+ elif isinstance(event, MappingStartEvent):
+ event = MappingStartEvent(event.anchor, event.tag,
+ event.implicit, flow_style=flow_style)
+ styled_events.append(event)
+ stream = StringIO.StringIO()
+ emit(styled_events, stream)
+ data = stream.getvalue()
+ #print data
+ new_events = list(parse(data))
+ for event, new_event in zip(events, new_events):
+ self.failUnlessEqual(event.__class__, new_event.__class__)
+ if isinstance(event, NodeEvent):
+ self.failUnlessEqual(event.anchor, new_event.anchor)
+ if isinstance(event, CollectionStartEvent):
+ self.failUnlessEqual(event.tag, new_event.tag)
+ if isinstance(event, ScalarEvent):
+ #self.failUnlessEqual(event.implicit, new_event.implicit)
+ if True not in event.implicit+new_event.implicit:
+ self.failUnlessEqual(event.tag, new_event.tag)
+ self.failUnlessEqual(event.value, new_event.value)
+
+
def _dump(self, filename, events, canonical):
print "="*30
print "ORIGINAL DOCUMENT:"
@@ -45,6 +80,7 @@ class TestEmitter(test_appliance.TestAppliance):
TestEmitter.add_tests('testEmitterOnData', '.canonical', '.data')
TestEmitter.add_tests('testEmitterOnCanonicalNormally', '.canonical')
TestEmitter.add_tests('testEmitterOnCanonicalCanonically', '.canonical')
+TestEmitter.add_tests('testEmitterStyles', '.canonical', '.data')
class EventsLoader(Loader):
diff --git a/tests/test_yaml_ext.py b/tests/test_yaml_ext.py
index ea3263b..b9a2e58 100644
--- a/tests/test_yaml_ext.py
+++ b/tests/test_yaml_ext.py
@@ -3,6 +3,8 @@ import unittest, test_appliance
import _yaml, yaml
+test_appliance.TestAppliance.SKIP_EXT = '.skip-ext'
+
class TestCVersion(unittest.TestCase):
def testCVersion(self):
@@ -102,7 +104,7 @@ class TestCEmitter(test_appliance.TestAppliance):
self.failUnlessEqual(event.implicit, ext_event.implicit)
if hasattr(event, 'value'):
self.failUnlessEqual(event.value, ext_event.value)
- if hasattr(event, 'explicit'):
+ if hasattr(event, 'explicit') and event.explicit:
self.failUnlessEqual(event.explicit, ext_event.explicit)
if hasattr(event, 'version'):
self.failUnlessEqual(event.version, ext_event.version)