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):

Reply via email to