Edgewall Software

Ticket #368: genshi_HTML_PI_with_tests.diff

File genshi_HTML_PI_with_tests.diff, 1.8 KB (added by Neil Muller, 11 years ago)

Patch with extra tests

  • genshi/tests/input.py

     
    177177        self.assertEqual('php', target)
    178178        self.assertEqual('echo "Foobar"', data)
    179179
     180    def test_processing_instruction_no_data_1(self):
     181        text = u'<?foo ?>'
     182        events = list(HTMLParser(StringIO(text)))
     183        kind, (target, data), pos = events[0]
     184        self.assertEqual(Stream.PI, kind)
     185        self.assertEqual('foo', target)
     186        self.assertEqual('', data)
     187
     188    def test_processing_instruction_no_data_1(self):
     189        text = u'<?experiment>...<?/experiment>'
     190        events = list(HTMLParser(StringIO(text)))
     191        kind, (target, data), pos = events[0]
     192        self.assertEqual(Stream.PI, kind)
     193        self.assertEqual('experiment', target)
     194        self.assertEqual('', data)
     195        kind, (target, data), pos = events[2]
     196        self.assertEqual('/experiment', target)
     197        self.assertEqual('', data)
     198
    180199    def test_xmldecl(self):
    181200        text = '<?xml version="1.0" ?><root />'
    182201        events = list(XMLParser(StringIO(text)))
  • genshi/input.py

     
    401401        self._enqueue(TEXT, text)
    402402
    403403    def handle_pi(self, data):
    404         target, data = data.split(None, 1)
    405404        if data.endswith('?'):
    406405            data = data[:-1]
     406        try:
     407            target, data = data.split(None, 1)
     408        except ValueError:
     409            # PI with no data
     410            target = data
     411            data = ''
    407412        self._enqueue(PI, (target.strip(), data.strip()))
    408413
    409414    def handle_comment(self, text):