2 new revisions:
Revision: 69124fca8424
Author: Robot Framework Developers <[email protected]>
Date: Mon Jan 30 01:51:32 2012
Log: tsvformatter: escape tabs
http://code.google.com/p/robotframework/source/detail?r=69124fca8424
Revision: 6ffe7211fd22
Author: Robot Framework Developers <[email protected]>
Date: Mon Jan 30 03:07:55 2012
Log: writer: always align last column, rstrip in space separated format
http://code.google.com/p/robotframework/source/detail?r=6ffe7211fd22
==============================================================================
Revision: 69124fca8424
Author: Robot Framework Developers <[email protected]>
Date: Mon Jan 30 01:51:32 2012
Log: tsvformatter: escape tabs
http://code.google.com/p/robotframework/source/detail?r=69124fca8424
Modified:
/src/robot/writer/formatters.py
/utest/writer/test_formatters.py
=======================================
--- /src/robot/writer/formatters.py Mon Jan 30 01:38:08 2012
+++ /src/robot/writer/formatters.py Mon Jan 30 01:51:32 2012
@@ -70,7 +70,14 @@
return ['*%s*' % cell for cell in table.header]
def _format_row(self, row, table=None):
- return self._pad(self._escape_consecutive_whitespace(row))
+ return self._pad(self._escape(row))
+
+ def _escape(self, row):
+ return self._escape_consecutive_whitespace(
+ self._escape_tabs(row))
+
+ def _escape_tabs(self, row):
+ return [c.replace('\t', '\\t') for c in row]
def _pad(self, row):
row = [cell.replace('\n', ' ') for cell in row]
=======================================
--- /utest/writer/test_formatters.py Mon Jan 30 01:38:08 2012
+++ /utest/writer/test_formatters.py Mon Jan 30 01:51:32 2012
@@ -45,9 +45,13 @@
def setUp(self):
self._formatter = TsvFormatter(6)
+
def test_replacing_newlines(self):
assert_equals(self._formatter._format_row(['so\nme'])[0], 'so me')
+ def test_escaping_tabs(self):
+
assert_equals(self._formatter._format_row(['so\tme'])[0], 'so\\tme')
+
def test_escaping_consecutive_spaces(self):
assert_equals(self._formatter._format_row(['so me'])[0], 'so \
me')
==============================================================================
Revision: 6ffe7211fd22
Author: Robot Framework Developers <[email protected]>
Date: Mon Jan 30 03:07:55 2012
Log: writer: always align last column, rstrip in space separated format
http://code.google.com/p/robotframework/source/detail?r=6ffe7211fd22
Added:
/utest/writer/test_filewriters.py
Modified:
/src/robot/writer/aligners.py
/src/robot/writer/filewriters.py
/src/robot/writer/formatters.py
/utest/writer/test_formatters.py
=======================================
--- /dev/null
+++ /utest/writer/test_filewriters.py Mon Jan 30 03:07:55 2012
@@ -0,0 +1,29 @@
+import unittest
+from StringIO import StringIO
+
+from robot.parsing import TestCaseFile
+from robot.parsing.model import TestCaseTable
+from robot.utils.asserts import assert_equals
+
+
+class TestSpaceSeparatedWriter(unittest.TestCase):
+
+ def test_end_of_line_whitespace_is_removed(self):
+ output = StringIO()
+ self._create_test_case_file().save(output=output)
+ expected = '''
+*** test case *** some and other
+A test
+ A kw an arg'''.strip()
+ for exp, act in zip(expected.splitlines(),
output.getvalue().splitlines()):
+ assert_equals(repr(exp), repr(act))
+
+ def _create_test_case_file(self):
+ data = TestCaseFile(source='foo.txt')
+ table = TestCaseTable(data)
+ data.testcase_table = table
+ table.set_header(['test case', 'some', 'and other'])
+ test = table.add('A test')
+ test.add_step(['A kw', 'an arg'])
+ return data
+
=======================================
--- /src/robot/writer/aligners.py Mon Jan 30 01:38:08 2012
+++ /src/robot/writer/aligners.py Mon Jan 30 03:07:55 2012
@@ -15,23 +15,19 @@
class _Aligner(object):
- def __init__(self, widths, align_last_column=False):
+ def __init__(self, widths):
self._widths = widths
- self._align_last_column = align_last_column
def align_rows(self, rows):
return [self.align_row(r) for r in rows]
def align_row(self, row):
- for index, col in enumerate(row[:self._last_aligned_column(row)]):
+ for index, col in enumerate(row):
if len(self._widths) <= index:
break
row[index] = row[index].ljust(self._widths[index])
return row
- def _last_aligned_column(self, row):
- return len(row) if self._align_last_column else -1
-
class FirstColumnAligner(_Aligner):
@@ -41,15 +37,15 @@
class ColumnAligner(_Aligner):
- def __init__(self, first_column_width, table, align_last_column):
- self._first_column_width = first_column_width
- _Aligner.__init__(self, self._count_justifications(table),
- align_last_column)
-
- def _count_justifications(self, table):
- result = [self._first_column_width] + [len(h) for h in
table.header[1:]]
+ def __init__(self, first_column_width, table):
+ _Aligner.__init__(self, self._count_widths(first_column_width,
table))
+
+ def _count_widths(self, first_column_width, table):
+ result = [first_column_width] + [len(h) for h in table.header[1:]]
for element in table:
for step in element:
+ if not step.is_set():
+ continue
for index, col in enumerate(step.as_list()):
index += 1
if len(result) <= index:
=======================================
--- /src/robot/writer/filewriters.py Mon Jan 30 01:38:08 2012
+++ /src/robot/writer/filewriters.py Mon Jan 30 03:07:55 2012
@@ -81,7 +81,7 @@
_formatter = TxtFormatter(column_count=8)
def _write_row(self, row):
- line = self._separator.join(row) + self._line_separator
+ line = self._separator.join(row).rstrip() + self._line_separator
self._output.write(self._encode(line))
=======================================
--- /src/robot/writer/formatters.py Mon Jan 30 01:51:32 2012
+++ /src/robot/writer/formatters.py Mon Jan 30 03:07:55 2012
@@ -87,7 +87,6 @@
class TxtFormatter(_DataFileFormatter):
_test_or_keyword_name_width = 18
_setting_and_variable_name_width = 14
- _align_last_column = False
def _format_row(self, row, table=None):
row = self._escape(row)
@@ -100,12 +99,15 @@
if table and table.type in ['setting', 'variable']:
return
FirstColumnAligner(self._setting_and_variable_name_width)
if self._should_align_columns(table):
- return ColumnAligner(self._test_or_keyword_name_width, table,
- self._align_last_column)
+ return ColumnAligner(self._test_or_keyword_name_width, table)
return None
def _header_for(self, table):
- return ['*** %s ***' % table.header[0]] + table.header[1:]
+ header = ['*** %s ***' % table.header[0]] + table.header[1:]
+ aligner = self._aligner_for(table)
+ if aligner:
+ return aligner.align_row(header)
+ return header
def _should_split_rows(self, table):
if self._should_align_columns(table):
@@ -123,7 +125,6 @@
class PipeFormatter(TxtFormatter):
- _align_last_column = True
def _escape(self, row):
row = self._format_empty_cells(row)
=======================================
--- /utest/writer/test_formatters.py Mon Jan 30 01:51:32 2012
+++ /utest/writer/test_formatters.py Mon Jan 30 03:07:55 2012
@@ -24,7 +24,6 @@
['Force Tags ', 'f \\ 1'])
-
class TestPipeFormatter(unittest.TestCase):
def test_escaping_pipes(self):