From 356b2ffe4c71f00e8f274d38759416f0856bee16 Mon Sep 17 00:00:00 2001 From: xi Date: Sat, 27 Dec 2008 19:09:03 +0000 Subject: 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 --- ...ing-unacceptable-unicode-character-bug.skip-ext | 0 tests/data/no-alias-anchor.skip-ext | 0 tests/data/spec-07-01.skip-ext | 0 tests/data/spec-07-02.skip-ext | 0 tests/data/spec-08-13.skip-ext | 0 tests/data/spec-09-20.skip-ext | 0 tests/test_appliance.py | 3 ++ tests/test_emitter.py | 36 ++++++++++++++++++++++ tests/test_yaml_ext.py | 4 ++- 9 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/data/emitting-unacceptable-unicode-character-bug.skip-ext create mode 100644 tests/data/no-alias-anchor.skip-ext create mode 100644 tests/data/spec-07-01.skip-ext create mode 100644 tests/data/spec-07-02.skip-ext create mode 100644 tests/data/spec-08-13.skip-ext create mode 100644 tests/data/spec-09-20.skip-ext (limited to 'tests') 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 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 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 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 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 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 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) -- cgit v1.2.1