Ignore:
Timestamp:
08/13/06 09:46:20 (8 years ago)
Author:
xi
Message:

Completely rewrite the libyaml bindings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/tests/test_yaml_ext.py

    r209 r223  
    44import _yaml, yaml 
    55 
    6 class TestExtVersion(unittest.TestCase): 
     6class TestCVersion(unittest.TestCase): 
    77 
    8     def testExtVersion(self): 
     8    def testCVersion(self): 
    99        self.failUnlessEqual("%s.%s.%s" % _yaml.get_version(), _yaml.get_version_string()) 
    1010 
    11 class TestExtLoader(test_appliance.TestAppliance): 
     11class TestCLoader(test_appliance.TestAppliance): 
    1212 
    13     def _testExtScannerFileInput(self, test_name, data_filename, canonical_filename): 
    14         self._testExtScanner(test_name, data_filename, canonical_filename, True) 
     13    def _testCScannerFileInput(self, test_name, data_filename, canonical_filename): 
     14        self._testCScanner(test_name, data_filename, canonical_filename, True) 
    1515 
    16     def _testExtScanner(self, test_name, data_filename, canonical_filename, file_input=False): 
     16    def _testCScanner(self, test_name, data_filename, canonical_filename, file_input=False, Loader=yaml.Loader): 
    1717        if file_input: 
    1818            data = file(data_filename, 'r') 
    1919        else: 
    2020            data = file(data_filename, 'r').read() 
    21         tokens = list(yaml.scan(data)) 
     21        tokens = list(yaml.scan(data, Loader=Loader)) 
    2222        ext_tokens = [] 
    2323        try: 
    2424            if file_input: 
    2525                data = file(data_filename, 'r') 
    26             for token in yaml.scan(data, Loader=yaml.ExtLoader): 
     26            for token in yaml.scan(data, Loader=yaml.CLoader): 
    2727                ext_tokens.append(token) 
    2828            self.failUnlessEqual(len(tokens), len(ext_tokens)) 
     
    4343            raise 
    4444 
    45     def _testExtParser(self, test_name, data_filename, canonical_filename): 
     45    def _testCParser(self, test_name, data_filename, canonical_filename, Loader=yaml.Loader): 
    4646        data = file(data_filename, 'r').read() 
    47         events = list(yaml.parse(data)) 
     47        events = list(yaml.parse(data, Loader=Loader)) 
    4848        ext_events = [] 
    4949        try: 
    50             for event in yaml.parse(data, Loader=yaml.ExtLoader): 
     50            for event in yaml.parse(data, Loader=yaml.CLoader): 
    5151                ext_events.append(event) 
    5252                #print "EVENT:", event 
     
    6262                if hasattr(event, 'value'): 
    6363                    self.failUnlessEqual(event.value, ext_event.value) 
     64                if hasattr(event, 'explicit'): 
     65                    self.failUnlessEqual(event.explicit, ext_event.explicit) 
     66                if hasattr(event, 'version'): 
     67                    self.failUnlessEqual(event.version, ext_event.version) 
     68                if hasattr(event, 'tags'): 
     69                    self.failUnlessEqual(event.tags, ext_event.tags) 
    6470        except: 
    6571            print 
     
    7076            raise 
    7177 
    72 TestExtLoader.add_tests('testExtScanner', '.data', '.canonical') 
    73 TestExtLoader.add_tests('testExtScannerFileInput', '.data', '.canonical') 
    74 TestExtLoader.add_tests('testExtParser', '.data', '.canonical') 
     78TestCLoader.add_tests('testCScanner', '.data', '.canonical') 
     79TestCLoader.add_tests('testCScannerFileInput', '.data', '.canonical') 
     80TestCLoader.add_tests('testCParser', '.data', '.canonical') 
     81 
     82class TestCEmitter(test_appliance.TestAppliance): 
     83 
     84    def _testCEmitter(self, test_name, data_filename, canonical_filename, Loader=yaml.Loader): 
     85        data1 = file(data_filename, 'r').read() 
     86        events = list(yaml.parse(data1, Loader=Loader)) 
     87        data2 = yaml.emit(events, Dumper=yaml.CDumper) 
     88        ext_events = [] 
     89        try: 
     90            for event in yaml.parse(data2): 
     91                ext_events.append(event) 
     92            self.failUnlessEqual(len(events), len(ext_events)) 
     93            for event, ext_event in zip(events, ext_events): 
     94                self.failUnlessEqual(event.__class__, ext_event.__class__) 
     95                if hasattr(event, 'anchor'): 
     96                    self.failUnlessEqual(event.anchor, ext_event.anchor) 
     97                if hasattr(event, 'tag'): 
     98                    if not (event.tag in ['!', None] and ext_event.tag in ['!', None]): 
     99                        self.failUnlessEqual(event.tag, ext_event.tag) 
     100                if hasattr(event, 'implicit'): 
     101                    self.failUnlessEqual(event.implicit, ext_event.implicit) 
     102                if hasattr(event, 'value'): 
     103                    self.failUnlessEqual(event.value, ext_event.value) 
     104                if hasattr(event, 'explicit'): 
     105                    self.failUnlessEqual(event.explicit, ext_event.explicit) 
     106                if hasattr(event, 'version'): 
     107                    self.failUnlessEqual(event.version, ext_event.version) 
     108                if hasattr(event, 'tags'): 
     109                    self.failUnlessEqual(event.tags, ext_event.tags) 
     110        except: 
     111            print 
     112            print "DATA1:" 
     113            print data1 
     114            print "DATA2:" 
     115            print data2 
     116            print "EVENTS:", events 
     117            print "EXT_EVENTS:", ext_events 
     118            raise 
     119 
     120TestCEmitter.add_tests('testCEmitter', '.data', '.canonical') 
     121 
     122yaml.BaseLoader = yaml.CBaseLoader 
     123yaml.SafeLoader = yaml.CSafeLoader 
     124yaml.Loader = yaml.CLoader 
     125yaml.BaseDumper = yaml.CBaseDumper 
     126yaml.SafeDumper = yaml.CSafeDumper 
     127yaml.Dumper = yaml.CDumper 
     128old_scan = yaml.scan 
     129def scan(stream, Loader=yaml.CLoader): 
     130    return old_scan(stream, Loader) 
     131yaml.scan = scan 
     132old_parse = yaml.parse 
     133def parse(stream, Loader=yaml.CLoader): 
     134    return old_parse(stream, Loader) 
     135yaml.parse = parse 
     136old_compose = yaml.compose 
     137def compose(stream, Loader=yaml.CLoader): 
     138    return old_compose(stream, Loader) 
     139yaml.compose = compose 
     140old_compose_all = yaml.compose_all 
     141def compose_all(stream, Loader=yaml.CLoader): 
     142    return old_compose_all(stream, Loader) 
     143yaml.compose_all = compose_all 
     144old_load_all = yaml.load_all 
     145def load_all(stream, Loader=yaml.CLoader): 
     146    return old_load_all(stream, Loader) 
     147yaml.load_all = load_all 
     148old_load = yaml.load 
     149def load(stream, Loader=yaml.CLoader): 
     150    return old_load(stream, Loader) 
     151yaml.load = load 
     152def safe_load_all(stream): 
     153    return yaml.load_all(stream, yaml.CSafeLoader) 
     154yaml.safe_load_all = safe_load_all 
     155def safe_load(stream): 
     156    return yaml.load(stream, yaml.CSafeLoader) 
     157yaml.safe_load = safe_load 
     158old_emit = yaml.emit 
     159def emit(events, stream=None, Dumper=yaml.CDumper, **kwds): 
     160    return old_emit(events, stream, Dumper, **kwds) 
     161yaml.emit = emit 
     162old_serialize_all = yaml.serialize_all 
     163def serialize_all(nodes, stream=None, Dumper=yaml.CDumper, **kwds): 
     164    return old_serialize_all(nodes, stream, Dumper, **kwds) 
     165yaml.serialize_all = serialize_all 
     166old_serialize = yaml.serialize 
     167def serialize(node, stream, Dumper=yaml.CDumper, **kwds): 
     168    return old_serialize(node, stream, Dumper, **kwds) 
     169yaml.serialize = serialize 
     170old_dump_all = yaml.dump_all 
     171def dump_all(documents, stream=None, Dumper=yaml.CDumper, **kwds): 
     172    return old_dump_all(documents, stream, Dumper, **kwds) 
     173yaml.dump_all = dump_all 
     174old_dump = yaml.dump 
     175def dump(data, stream=None, Dumper=yaml.CDumper, **kwds): 
     176    return old_dump(data, stream, Dumper, **kwds) 
     177yaml.dump = dump 
     178def safe_dump_all(documents, stream=None, **kwds): 
     179    return yaml.dump_all(documents, stream, yaml.CSafeDumper, **kwds) 
     180yaml.safe_dump_all = safe_dump_all 
     181def safe_dump(data, stream=None, **kwds): 
     182    return yaml.dump(data, stream, yaml.CSafeDumper, **kwds) 
     183yaml.safe_dump = safe_dump 
     184 
     185from test_yaml import * 
    75186 
    76187def main(module='__main__'): 
Note: See TracChangeset for help on using the changeset viewer.