コード例 #1
0
 def testGarbage(self):
     gc.collect()
     source = []
     parser = _syck.Parser(source)
     source.append(parser)
     del source, parser
     self.assertEqual(gc.collect(), 2)
コード例 #2
0
class TestValuesAndSources(unittest.TestCase, EqualStructure):
    def testValues1(self):
        self._testValues(COMPARE1)

    def testValues2(self):
        self._testValues(COMPARE2)

    def testValues3(self):
        self._testValues(COMPARE3)

    def testFileValues1(self):
        self._testFileValues(COMPARE1)

    def testFileValues2(self):
        self._testFileValues(COMPARE2)

    def testFileValues3(self):
        self._testFileValues(COMPARE3)

    def testNonsense(self):
        parser = _syck.Parser(None)
        self.assertRaises(AttributeError, lambda: parser.parse())

    def testCallMeNot(self):
        class Source:
            def __init__(self):
                self.parser = None

            def read(self, size=None):
                if self.parser:
                    self.parser.parse()
                    return

        source = Source()
        parser = _syck.Parser(source)
        source.parser = parser
        self.assertRaises(RuntimeError, lambda: parser.parse())

    def testAbsoluteHorror(self):
        class Source:
            def __init__(self):
                self.parser = None

            def read(self, size=None):
                if self.parser:
                    self.parser = None
                return ''

        source = Source()
        parser = _syck.Parser(source)
        source.parser = parser
        del parser
        self.assertEqual(None, source.parser.parse())

    def _testValues(self, (source, structure)):
        parser = _syck.Parser(source)
        document = parser.parse()
        self.assertEqualStructure(document, structure)
コード例 #3
0
 def testErrorLocation(self):
     source, line, column = INVALID
     parser = _syck.Parser(source)
     try:
         parser.parse()
         raise Exception
     except _syck.error, e:
         self.assertEqual(e.args[1], line)
         self.assertEqual(e.args[2], column)
コード例 #4
0
 def testSyckBugWithComplexKeys(self):
     broken = 0
     for key in COMPLEX_ITEMS:
         for value in COMPLEX_ITEMS:
             node = _syck.Map({key: value})
             emitter = _syck.Emitter(StringIO.StringIO())
             emitter.emit(node)
             parser = _syck.Parser(emitter.output.getvalue())
             self.assertEqual(strip(node), strip(parser.parse()))
コード例 #5
0
 def _testTyping(self, implicit_typing, taguri_expansion):
     parser = _syck.Parser(IMPLICIT_TYPING[0], implicit_typing,
                           taguri_expansion)
     for node, (tag, explicit) in zip(parser.parse().value,
                                      IMPLICIT_TYPING[1]):
         if tag is not None and taguri_expansion:
             tag = 'tag:yaml.org,2002:%s' % tag
         if implicit_typing or explicit:
             self.assertEqual(node.tag, tag)
         else:
             self.assertEqual(node.tag, None)
コード例 #6
0
 def testDocuments(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(EXAMPLE)
     emitter.emit(EXAMPLE)
     emitter.emit(EXAMPLE)
     parser = _syck.Parser(emitter.output.getvalue())
     self.assertEqual(strip(EXAMPLE), strip(parser.parse()))
     self.assertEqual(strip(EXAMPLE), strip(parser.parse()))
     self.assertEqual(strip(EXAMPLE), strip(parser.parse()))
     self.assert_(not parser.eof)
     parser.parse()
     self.assert_(parser.eof)
コード例 #7
0
 def testTags(self):
     document = _syck.Seq()
     for tag in TAGS:
         document.value.append(_syck.Scalar('foo', tag=tag))
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(document)
     parser = _syck.Parser(emitter.output.getvalue())
     document = parser.parse()
     self.assertEqual(len(document.value), len(TAGS))
     for index in range(len(document.value)):
         node = document.value[index]
         self.assertEqual(node.tag, TAGS[index])
コード例 #8
0
    def testCallMeNot(self):
        class Source:
            def __init__(self):
                self.parser = None

            def read(self, size=None):
                if self.parser:
                    self.parser.parse()
                    return

        source = Source()
        parser = _syck.Parser(source)
        source.parser = parser
        self.assertRaises(RuntimeError, lambda: parser.parse())
コード例 #9
0
 def testAttributes(self):
     parser = _syck.Parser(EXAMPLE)
     self.assertEqual(type(parser), _syck.Parser)
     self.assertEqual(parser.source, EXAMPLE)
     self.assertEqual(parser.implicit_typing, True)
     self.assertEqual(parser.taguri_expansion, True)
     self.assertEqual(parser.eof, False)
     node = parser.parse()
     self.assert_(isinstance(node, _syck.Node))
     self.assertEqual(parser.source, EXAMPLE)
     self.assertEqual(parser.implicit_typing, True)
     self.assertEqual(parser.taguri_expansion, True)
     self.assertEqual(parser.eof, False)
     self.assertEqual(parser.parse(), None)
     self.assertEqual(parser.eof, True)
コード例 #10
0
 def _testDocuments(self, source, length):
     parser = _syck.Parser(source)
     actual_length = 0
     while True:
         document = parser.parse()
         if parser.eof:
             self.assertEqual(document, None)
             break
         actual_length += 1
     self.assertEqual(actual_length, length)
     self.assertEqual(parser.parse(), None)
     self.assert_(parser.eof)
     self.assertEqual(parser.parse(), None)
     self.assert_(parser.eof)
     self.assert_(parser.eof)
コード例 #11
0
    def testAbsoluteHorror(self):
        class Source:
            def __init__(self):
                self.parser = None

            def read(self, size=None):
                if self.parser:
                    self.parser = None
                return ''

        source = Source()
        parser = _syck.Parser(source)
        source.parser = parser
        del parser
        self.assertEqual(None, source.parser.parse())
コード例 #12
0
 def testSyckBugWithTrailingSpace(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(_syck.Scalar('foo ', tag="tag:yaml.org,2002:str"))
     parser = _syck.Parser(emitter.output.getvalue())
     self.assertEqual(parser.parse().value, 'foo ')
コード例 #13
0
 def testAliases(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(ALIASES)
     parser = _syck.Parser(emitter.output.getvalue())
     node = parser.parse()
     self.assert_(node.value[0] is node.value[1])
コード例 #14
0
 def testComplexExample(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(COMPLEX_EXAMPLE)
     parser = _syck.Parser(emitter.output.getvalue())
     node = parser.parse()
     self.assertEqual(strip(COMPLEX_EXAMPLE), strip(node))
コード例 #15
0
 def testPairs(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(PAIRS)
     parser = _syck.Parser(emitter.output.getvalue())
     node = parser.parse()
     self.assertEqual(strip(PAIRS), strip(node))
コード例 #16
0
 def testLeaks(self):
     parser = _syck.Parser(LEAKS)
     node = parser.parse()
     dummy = []
     self.checkLeaks(node, dummy)
コード例 #17
0
 def testAliases(self):
     parser = _syck.Parser(ALIASES)
     node = parser.parse()
     self.assert_(node.value[0] is node.value[1])
コード例 #18
0
 def testRecursive(self):
     parser = _syck.Parser(RECURSIVE)
     self.assertRaises(TypeError, lambda: parser.parse())
コード例 #19
0
 def _testTree(self, tree):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(tree)
     #print emitter.output.getvalue()
     parser = _syck.Parser(emitter.output.getvalue())
     self.assertEqual(strip(tree), strip(parser.parse()))
コード例 #20
0
 def testNonsense(self):
     parser = _syck.Parser(None)
     self.assertRaises(AttributeError, lambda: parser.parse())
コード例 #21
0
 def testError(self):
     parser = _syck.Parser(INVALID[0])
     self.assertRaises(_syck.error, lambda: parser.parse())
コード例 #22
0
 def testExplicitTyping(self):
     parser = _syck.Parser(EXPLICIT_TYPING[0])
     for node, tag in zip(parser.parse().value, EXPLICIT_TYPING[1]):
         self.assertEqual(node.tag, tag)
コード例 #23
0
                    self.parser = None
                return ''

        source = Source()
        parser = _syck.Parser(source)
        source.parser = parser
        del parser
        self.assertEqual(None, source.parser.parse())

    def _testValues(self, (source, structure)):
        parser = _syck.Parser(source)
        document = parser.parse()
        self.assertEqualStructure(document, structure)

    def _testFileValues(self, (source, structure)):
        parser = _syck.Parser(StringIO.StringIO(source))
        document = parser.parse()
        self.assertEqualStructure(document, structure)


class TestDocuments(unittest.TestCase):
    def testDocuments0(self):
        self._testDocuments(DOCUMENTS0, 0)

    def testDocuments1(self):
        self._testDocuments(DOCUMENTS1, 1)

    def testDocuments2(self):
        self._testDocuments(DOCUMENTS2, 2)

    def testDocuments3(self):