Revision: 3315
Author: jprantan
Date: Tue May 18 04:14:11 2010
Log: Integrated HTML reader to use populator.
http://code.google.com/p/robotframework/source/detail?r=3315
Modified:
/trunk/src/robot/parsing/htmlreader.py
/trunk/utest/parsing/test_htmlreader.py
=======================================
--- /trunk/src/robot/parsing/htmlreader.py Fri Mar 12 04:32:45 2010
+++ /trunk/src/robot/parsing/htmlreader.py Tue May 18 04:14:11 2010
@@ -17,6 +17,7 @@
from htmlentitydefs import entitydefs
from robot import utils
+from populator import TestDataPopulator
extra_entitydefs = {'nbsp': ' ', 'apos': "'", 'tilde': '~'}
@@ -42,8 +43,8 @@
'br_start' : self.br_start,
'meta_start' : self.meta_start }
- def read(self, htmlfile, rawdata):
- self.data = rawdata
+ def read(self, htmlfile, datafile):
+ self.populator = TestDataPopulator(datafile)
self.state = self.IGNORE
self.current_row = None
self.current_cell = None
@@ -53,7 +54,7 @@
# if the same instance of our HtmlParser is reused. Currently it's
# used only once so there's no problem.
self.close()
- return self.data
+ self.populator.eof()
def handle_starttag(self, tag, attrs):
handler = self._handlers.get(tag+'_start')
@@ -130,14 +131,14 @@
if self.state == self.INITIAL:
if len(self.current_row) > 0:
table_name = self.current_row[0]
- if self.data.start_table(table_name):
+ if self.populator.start_table(table_name):
self.state = self.PROCESS
else:
self.state = self.IGNORE
else:
self.state = self.IGNORE
elif self.state == self.PROCESS:
- self.data.add_row(self.current_row)
+ self.populator.add(self.current_row)
self.current_row = None
def td_start(self, attrs=None):
=======================================
--- /trunk/utest/parsing/test_htmlreader.py Fri Mar 12 04:32:45 2010
+++ /trunk/utest/parsing/test_htmlreader.py Tue May 18 04:14:11 2010
@@ -4,13 +4,14 @@
from robot.parsing.htmlreader import HtmlReader
from robot.utils.asserts import *
+from robot.parsing.populator import TestDataPopulator
VALID_TABLES = [ "Variable", "Setting", "Test Case", "Test
Suite", "Keyword" ]
ROW_TEMPLATE = '<tr><td>%s</td><td>%s</td><td>%s</td></tr>'
-class TestDataMock:
+class PopulatorMock:
def __init__(self):
self.tables = {}
@@ -25,7 +26,7 @@
self.current = None
return False
- def add_row(self, cells):
+ def add(self, cells):
self.tables[self.current].append(cells)
@@ -33,7 +34,7 @@
def setUp(self):
self.reader = HtmlReader()
- self.reader.data = TestDataMock()
+ self.reader.populator = PopulatorMock()
def test_initial_state(self):
self.reader.state = self.reader.IGNORE
@@ -47,7 +48,7 @@
self.reader.feed('<table>')
self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
assert_equals(self.reader.state, self.reader.PROCESS)
- assert_equals(self.reader.data.current, name)
+ assert_equals(self.reader.populator.current, name)
self.reader.feed('</table>')
assert_equals(self.reader.state, self.reader.IGNORE)
@@ -56,10 +57,10 @@
self.reader.feed('<table>')
self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
assert_equals(self.reader.state, self.reader.IGNORE)
- assert_none(self.reader.data.current)
+ assert_none(self.reader.populator.current)
self.reader.feed(ROW_TEMPLATE % ('This', 'row', 'is ignored'))
assert_equals(self.reader.state, self.reader.IGNORE)
- assert_equals(len(self.reader.data.tables.values()), 0)
+ assert_equals(len(self.reader.populator.tables.values()), 0)
self.reader.feed('</table>')
assert_equals(self.reader.state, self.reader.IGNORE)
@@ -71,7 +72,7 @@
self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
self.reader.feed(ROW_TEMPLATE % inp)
self.reader.feed('</table>')
- assert_equals(self.reader.data.tables[name], [ exp ])
+ assert_equals(self.reader.populator.tables[name], [ exp ])
def test_processing(self):
self._row_processing(ROW_TEMPLATE)
@@ -101,7 +102,7 @@
assert_equals(self.reader.state, self.reader.PROCESS)
self.reader.feed('</table>')
assert_equals(self.reader.state, self.reader.IGNORE)
- assert_equals(self.reader.data.tables[name], row_data)
+ assert_equals(self.reader.populator.tables[name], row_data)
class TestEntityAndCharRefs(unittest.TestCase):
@@ -175,13 +176,13 @@
def test_encoding_and_entityrefs(self):
reader = HtmlReader()
- reader.data = TestDataMock()
+ reader.populator = PopulatorMock()
reader.feed('<meta content="text/html; charset=utf-8" />')
reader.feed('<table><tr><td>Setting</td></tr>')
reader.feed('<tr><td>äiti')
assert_equals(reader.current_cell, [u'\xe4', u'iti'])
reader.feed('</tr>')
- assert_equals(reader.data.tables['Setting'][0], [u'\xe4iti'])
+ assert_equals(reader.populator.tables['Setting'][0], [u'\xe4iti'])
if __name__ == '__main__':