4 new revisions:

Revision: f09052c6bbfa
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:26:24 2012
Log:      tidy: support resource and init files
http://code.google.com/p/robotframework/source/detail?r=f09052c6bbfa

Revision: 26e78c5640b5
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:28:56 2012
Log:      single file tests for tidy
http://code.google.com/p/robotframework/source/detail?r=26e78c5640b5

Revision: 74c988aac1b3
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:33:45 2012
Log:      test_importter: fixed case normalization in OSX
http://code.google.com/p/robotframework/source/detail?r=74c988aac1b3

Revision: db971dd1721a
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:36:34 2012
Log:      test_serializer: removed tests that are now part of atest
http://code.google.com/p/robotframework/source/detail?r=db971dd1721a

==============================================================================
Revision: f09052c6bbfa
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:26:24 2012
Log:      tidy: support resource and init files
http://code.google.com/p/robotframework/source/detail?r=f09052c6bbfa

Modified:
 /src/robot/tidy.py

=======================================
--- /src/robot/tidy.py  Thu Jan 12 23:11:36 2012
+++ /src/robot/tidy.py  Fri Jan 13 04:26:24 2012
@@ -23,12 +23,14 @@

  python -m robot.tidy -f txt mytests.html  # Creates mytets.txt
 """
-
+import os
 import sys
 from StringIO import StringIO

-from robot import utils, DataError
-from robot.parsing import TestData
+from robot import utils
+from robot.errors import DataError
+from robot.parsing import TestCaseFile, ResourceFile, TestDataDirectory
+from robot.parsing.populators import FromFilePopulator

 def _exit(message, status):
     print message
@@ -44,10 +46,18 @@
         _exit(unicode(err), 1)

 def _create_datafile(source):
+    if os.path.splitext(os.path.basename(source))[0] == '__init__':
+        data = TestDataDirectory()
+        data.initfile = source
+        FromFilePopulator(data).populate(source)
+        return data
     try:
-        return TestData(source=source)
+        return TestCaseFile(source=source).populate()
     except DataError, err:
-        _exit("Invalid data source '%s': %s" % (source, unicode(err)), 1)
+        try:
+            return ResourceFile(source=source).populate()
+        except DataError:
+ _exit("Invalid data source '%s': %s" % (source, unicode(err)), 1)


 if __name__ == '__main__':

==============================================================================
Revision: 26e78c5640b5
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:28:56 2012
Log:      single file tests for tidy
http://code.google.com/p/robotframework/source/detail?r=26e78c5640b5

Added:
 /atest/robot/tidy/TidyLib.py
 /atest/robot/tidy/tidy.txt
 /atest/testdata/tidy/__init__.txt
 /atest/testdata/tidy/golden.html
 /atest/testdata/tidy/golden.tsv
 /atest/testdata/tidy/golden.txt
 /atest/testdata/tidy/golden_pipes.txt
 /atest/testdata/tidy/golden_pipes_resource.txt
 /atest/testdata/tidy/golden_resource.html
 /atest/testdata/tidy/golden_resource.tsv
 /atest/testdata/tidy/golden_resource.txt

=======================================
--- /dev/null
+++ /atest/robot/tidy/TidyLib.py        Fri Jan 13 04:28:56 2012
@@ -0,0 +1,38 @@
+from __future__ import with_statement
+import os
+from os.path import abspath, dirname, join
+from subprocess import call, STDOUT
+import tempfile
+from robot.utils.asserts import assert_equals
+
+ROBOT_SRC = join(dirname(abspath(__file__)), '..', '..', '..', 'src')
+
+
+class TidyLib(object):
+
+    def __init__(self, interpreter):
+        self._cmd = [interpreter, '-m', 'robot.tidy']
+
+    def run_tidy_and_return_output(self, input, options):
+        options = options.split(' ') if options else []
+        with tempfile.TemporaryFile() as output:
+            rc = call(self._cmd + options + [self._path(input)],
+                      stdout=output, stderr=STDOUT,
+                      env={'PYTHONPATH': ROBOT_SRC})
+            output.seek(0)
+            content = output.read()
+            if rc:
+                raise RuntimeError(content)
+            return content
+
+    def _path(self, path):
+        return path.replace('/', os.sep)
+
+    def run_tidy_and_check_result(self, input, options, expected):
+        result = self.run_tidy_and_return_output(input, options)
+        self._assert_result(result, open(self._path(expected)).read())
+
+    def _assert_result(self, result, expected):
+        for line1, line2 in zip(result.split(), expected.split()):
+            msg = "\n%s\n!=\n%s\n" % (result, expected)
+            assert_equals(repr(unicode(line1)), repr(unicode(line2)), msg)
=======================================
--- /dev/null
+++ /atest/robot/tidy/tidy.txt  Fri Jan 13 04:28:56 2012
@@ -0,0 +1,35 @@
+*** Settings ***
+Force Tags        pybot    jybot
+Library           TidyLib.py    ${INTERPRETER}
+Library           OperatingSystem
+
+*** Variables ***
+${DATADIR}        ${CURDIR}/../../testdata/tidy
+
+*** Test cases ***
+Tidying single test case file
+    [Template]    Run tidy with golden file and check result
+    ${EMPTY}    ${DATADIR}/golden.txt
+    --use-pipes    ${DATADIR}/golden_pipes.txt
+    --format tsv    ${DATADIR}/golden.tsv
+    --format html    ${DATADIR}/golden.html
+
+Tidying single resource case file
+    [Template]    Run tidy with golden resource file and check result
+    ${EMPTY}    ${DATADIR}/golden_resource.txt
+    --use-pipes    ${DATADIR}/golden_pipes_resource.txt
+    --format tsv    ${DATADIR}/golden_resource.tsv
+    --format html    ${DATADIR}/golden_resource.html
+
+Tidying single init file
+ Run tidy and check result ${DATADIR}/__init__.txt ${EMPTY} ${DATADIR}/__init__.txt
+
+*** Keywords ***
+Run tidy with golden file and check result
+    [Arguments]    ${options}    ${expected_result_file}
+ Run tidy and check result ${DATADIR}/golden.txt ${options} ${expected_result_file}
+
+Run tidy with golden resource file and check result
+    [Arguments]    ${options}    ${expected_result_file}
+ Run tidy and check result ${DATADIR}/golden_resource.txt ${options} ${expected_result_file}
+
=======================================
--- /dev/null
+++ /atest/testdata/tidy/__init__.txt   Fri Jan 13 04:28:56 2012
@@ -0,0 +1,6 @@
+*** Settings ***
+Force Tags        tag1    tag2
+
+*** Variables ***
+MyVar             val1    val2    val3    val4    val5    val6    val6
+...               val7    val8    val9    # var comment
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden.html    Fri Jan 13 04:28:56 2012
@@ -0,0 +1,337 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <style type="text/css">
+        html {
+            font-family: Arial,Helvetica,sans-serif;
+            background-color: white;
+            color: black;
+        }
+        table {
+            border-collapse: collapse;
+            empty-cells: show;
+            margin: 1em 0em;
+            border: 1px solid black;
+        }
+        th, td {
+            border: 1px solid black;
+            padding: 0.1em 0.2em;
+            height: 1.5em;
+            width: 12em;
+        }
+        td.colspan4, th.colspan4 {
+            width: 48em;
+        }
+        td.colspan3, th.colspan3 {
+            width: 36em;
+        }
+        td.colspan2, th.colspan2 {
+            width: 24em;
+        }
+        th {
+            background-color: rgb(192, 192, 192);
+            color: black;
+            height: 1.7em;
+            font-weight: bold;
+            text-align: center;
+            letter-spacing: 0.1em;
+        }
+        td.name {
+            background-color: rgb(240, 240, 240);
+            letter-spacing: 0.1em;
+        }
+        td.name, th.name {
+            width: 10em;
+        }
+    </style>
+    <title>Golden</title>
+</head>
+<body>
+<h1>Golden</h1>
+<table border="1" id="setting">
+    <tr>
+        <th class="name" colspan="5">Settings</th>
+    </tr>
+    <tr>
+        <td class="name">Library</td>
+        <td>MyLibrary</td>
+        <td>argument</td>
+        <td>WITH NAME</td>
+        <td>My Alias</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td># My library comment</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name">Variables</td>
+        <td>MyVariables</td>
+        <td>args</td>
+        <td>args 2</td>
+        <td>args 3</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 4</td>
+        <td>args 5</td>
+        <td>args 6</td>
+        <td>args 7</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 8</td>
+        <td>args 9</td>
+        <td>args 10</td>
+        <td>args 11</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 12</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name">Resource</td>
+        <td>MyResource args that are part of the name</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<table border="1" id="variable">
+    <tr>
+        <th class="name" colspan="5">Variables</th>
+    </tr>
+    <tr>
+        <td class="name">MyVar</td>
+        <td>val1</td>
+        <td>val2</td>
+        <td>val3</td>
+        <td>val4</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>val5</td>
+        <td>val6</td>
+        <td>val6</td>
+        <td>val7</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>val8</td>
+        <td>val9</td>
+        <td># var comment</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<table border="1" id="testcase">
+    <tr>
+        <th class="name" colspan="5">Test Cases</th>
+    </tr>
+    <tr>
+        <td class="name"><a name="test_My Test Case">My Test Case</a></td>
+        <td>[Documentation]</td>
+ <td class="colspan3" colspan="3">This is a long comment that spans several columns</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My TC Step 1</td>
+        <td>my step arg</td>
+        <td># step 1 comment</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My TC Step 2</td>
+        <td>my step 2 arg</td>
+        <td>second \ arg</td>
+        <td># step 2 comment</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>[Teardown]</td>
+        <td>1 minute</td>
+        <td>args</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"><a name="test_Another Test">Another Test</a></td>
+        <td>No Operation</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<table border="1" id="keyword">
+    <tr>
+        <th class="name" colspan="5">Keywords</th>
+    </tr>
+    <tr>
+        <td class="name"><a name="keyword_My Keyword">My Keyword</a></td>
+        <td>[Documentation]</td>
+        <td>Documentation</td>
+        <td># Comment for doc</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td># Comment row</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td># Comment row 2</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My Step 1</td>
+        <td>args</td>
+        <td>args 2</td>
+        <td>args 3</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>args 4</td>
+        <td>args 5</td>
+        <td>args 6</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>args 7</td>
+        <td>args 8</td>
+        <td>args 9</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td># step 1 comment</td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>: FOR</td>
+        <td>${param1}</td>
+        <td>${param2}</td>
+        <td>IN</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>${data 1}</td>
+        <td>${data 2}</td>
+        <td>${data 3}</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>${data 4}</td>
+        <td>${data 5}</td>
+        <td>${data 6}</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>Loop Step</td>
+        <td>args</td>
+        <td>args 2</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 3</td>
+        <td>args 4</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 5</td>
+        <td>args 6</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 7</td>
+        <td>args 8</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 9</td>
+        <td># loop step comment</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>Loop Step 2</td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My Step 2</td>
+        <td>my step 2 arg</td>
+        <td>second arg</td>
+        <td># step 2 comment</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>[Return]</td>
+        <td>args 1</td>
+        <td>args 2</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+</body>
+</html>
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden.tsv     Fri Jan 13 04:28:56 2012
@@ -0,0 +1,34 @@
+*Settings*
+Library        MyLibrary       argument        WITH NAME       My Alias        
# My library comment
+Variables      MyVariables     args    args 2  args 3  args 4  args 5  args 6
+...    args 7  args 8  args 9  args 10 args 11 args 12
+Resource       MyResource args that are part of the name
+
+*Variables*
+MyVar  val1    val2    val3    val4    val5    val6    val6
+...    val7    val8    val9    # var comment
+
+*Test Cases*
+My Test Case
+       [Documentation] This is a long comment that spans several columns
+       My TC Step 1    my step arg     # step 1 comment
+       My TC Step 2    my step 2 arg   second \ arg    # step 2 comment
+       [Teardown]      1 minute        args
+
+Another Test
+       No Operation
+*Keywords*
+My Keyword
+       [Documentation] Documentation   # Comment for doc
+       # Comment row
+       # Comment row 2
+       My Step 1       args    args 2  args 3  args 4  args 5  args 6
+       ...     args 7  args 8  args 9  # step 1 comment
+       : FOR   ${param1}       ${param2}       IN      ${data 1}       ${data 
2}       ${data 3}
+       ...     ${data 4}       ${data 5}       ${data 6}
+               Loop Step       args    args 2  args 3  args 4  args 5
+               ...     args 6  args 7  args 8  args 9  # loop step comment
+               Loop Step 2
+       My Step 2       my step 2 arg   second arg      # step 2 comment
+       [Return]        args 1  args 2
+
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden.txt     Fri Jan 13 04:28:56 2012
@@ -0,0 +1,34 @@
+*** Settings ***
+Library MyLibrary argument WITH NAME My Alias # My library comment +Variables MyVariables args args 2 args 3 args 4 args 5 args 6 +... args 7 args 8 args 9 args 10 args 11 args 12
+Resource          MyResource args that are part of the name
+
+*** Variables ***
+MyVar             val1    val2    val3    val4    val5    val6    val6
+...               val7    val8    val9    # var comment
+
+*** Test Cases ***
+My Test Case
+    [Documentation]    This is a long comment that spans several columns
+    My TC Step 1    my step arg    # step 1 comment
+    My TC Step 2    my step 2 arg    second \ arg    # step 2 comment
+    [Teardown]    1 minute    args
+
+Another Test
+    No Operation
+
+*** Keywords ***
+My Keyword
+    [Documentation]    Documentation    # Comment for doc
+    # Comment row
+    # Comment row 2
+    My Step 1    args    args 2    args 3    args 4    args 5    args 6
+    ...    args 7    args 8    args 9    # step 1 comment
+ : FOR ${param1} ${param2} IN ${data 1} ${data 2} ${data 3}
+    ...    ${data 4}    ${data 5}    ${data 6}
+    \    Loop Step    args    args 2    args 3    args 4    args 5
+    \    ...    args 6    args 7    args 8    args 9    # loop step comment
+    \    Loop Step 2
+    My Step 2    my step 2 arg    second arg    # step 2 comment
+    [Return]    args 1    args 2
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden_pipes.txt       Fri Jan 13 04:28:56 2012
@@ -0,0 +1,34 @@
+| *** Settings *** |
+| Library | MyLibrary | argument | WITH NAME | My Alias | # My library comment | +| Variables | MyVariables | args | args 2 | args 3 | args 4 | args 5 | args 6 |
+| ...            | args 7 | args 8 | args 9 | args 10 | args 11 | args 12 |
+| Resource       | MyResource args that are part of the name |
+
+| *** Variables *** |
+| MyVar          | val1 | val2 | val3 | val4 | val5 | val6 | val6 |
+| ...            | val7 | val8 | val9 | # var comment |
+
+| *** Test Cases *** |
+| My Test Case |
+| | [Documentation] | This is a long comment that spans several columns |
+|    | My TC Step 1 | my step arg | # step 1 comment |
+|    | My TC Step 2 | my step 2 arg | second \ arg | # step 2 comment |
+|    | [Teardown] | 1 minute | args |
+
+ | Another Test |
+ |    | No Operation |
+
+| *** Keywords *** |
+| My Keyword |
+|    | [Documentation] | Documentation | # Comment for doc |
+|    | # Comment row |
+|    | # Comment row 2 |
+|    | My Step 1 | args | args 2 | args 3 | args 4 | args 5 | args 6 |
+|    | ... | args 7 | args 8 | args 9 | # step 1 comment |
+| | : FOR | ${param1} | ${param2} | IN | ${data 1} | ${data 2} | ${data 3} |
+|    | ... | ${data 4} | ${data 5} | ${data 6} |
+|    |    | Loop Step | args | args 2 | args 3 | args 4 | args 5 |
+|    |    | ... | args 6 | args 7 | args 8 | args 9 | # loop step comment |
+|    |    | Loop Step 2 |
+|    | My Step 2 | my step 2 arg | second arg | # step 2 comment |
+|    | [Return] | args 1 | args 2 |
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden_pipes_resource.txt      Fri Jan 13 04:28:56 2012
@@ -0,0 +1,24 @@
+| *** Settings *** |
+| Library | MyLibrary | argument | WITH NAME | My Alias | # My library comment | +| Variables | MyVariables | args | args 2 | args 3 | args 4 | args 5 | args 6 |
+| ...            | args 7 | args 8 | args 9 | args 10 | args 11 | args 12 |
+| Resource       | MyResource args that are part of the name |
+
+| *** Variables *** |
+| MyVar          | val1 | val2 | val3 | val4 | val5 | val6 | val6 |
+| ...            | val7 | val8 | val9 | # var comment |
+
+| *** Keywords *** |
+| My Keyword |
+|    | [Documentation] | Documentation | # Comment for doc |
+|    | # Comment row |
+|    | # Comment row 2 |
+|    | My Step 1 | args | args 2 | args 3 | args 4 | args 5 | args 6 |
+|    | ... | args 7 | args 8 | args 9 | # step 1 comment |
+| | : FOR | ${param1} | ${param2} | IN | ${data 1} | ${data 2} | ${data 3} |
+|    | ... | ${data 4} | ${data 5} | ${data 6} |
+|    |    | Loop Step | args | args 2 | args 3 | args 4 | args 5 |
+|    |    | ... | args 6 | args 7 | args 8 | args 9 | # loop step comment |
+|    |    | Loop Step 2 |
+|    | My Step 2 | my step 2 arg | second arg | # step 2 comment |
+|    | [Return] | args 1 | args 2 |
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden_resource.html   Fri Jan 13 04:28:56 2012
@@ -0,0 +1,285 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <style type="text/css">
+        html {
+            font-family: Arial,Helvetica,sans-serif;
+            background-color: white;
+            color: black;
+        }
+        table {
+            border-collapse: collapse;
+            empty-cells: show;
+            margin: 1em 0em;
+            border: 1px solid black;
+        }
+        th, td {
+            border: 1px solid black;
+            padding: 0.1em 0.2em;
+            height: 1.5em;
+            width: 12em;
+        }
+        td.colspan4, th.colspan4 {
+            width: 48em;
+        }
+        td.colspan3, th.colspan3 {
+            width: 36em;
+        }
+        td.colspan2, th.colspan2 {
+            width: 24em;
+        }
+        th {
+            background-color: rgb(192, 192, 192);
+            color: black;
+            height: 1.7em;
+            font-weight: bold;
+            text-align: center;
+            letter-spacing: 0.1em;
+        }
+        td.name {
+            background-color: rgb(240, 240, 240);
+            letter-spacing: 0.1em;
+        }
+        td.name, th.name {
+            width: 10em;
+        }
+    </style>
+    <title>Golden Resource</title>
+</head>
+<body>
+<h1>Golden Resource</h1>
+<table border="1" id="setting">
+    <tr>
+        <th class="name" colspan="5">Settings</th>
+    </tr>
+    <tr>
+        <td class="name">Library</td>
+        <td>MyLibrary</td>
+        <td>argument</td>
+        <td>WITH NAME</td>
+        <td>My Alias</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td># My library comment</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name">Variables</td>
+        <td>MyVariables</td>
+        <td>args</td>
+        <td>args 2</td>
+        <td>args 3</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 4</td>
+        <td>args 5</td>
+        <td>args 6</td>
+        <td>args 7</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 8</td>
+        <td>args 9</td>
+        <td>args 10</td>
+        <td>args 11</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>args 12</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name">Resource</td>
+        <td>MyResource args that are part of the name</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<table border="1" id="variable">
+    <tr>
+        <th class="name" colspan="5">Variables</th>
+    </tr>
+    <tr>
+        <td class="name">MyVar</td>
+        <td>val1</td>
+        <td>val2</td>
+        <td>val3</td>
+        <td>val4</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>val5</td>
+        <td>val6</td>
+        <td>val6</td>
+        <td>val7</td>
+    </tr>
+    <tr>
+        <td class="name">...</td>
+        <td>val8</td>
+        <td>val9</td>
+        <td># var comment</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<table border="1" id="keyword">
+    <tr>
+        <th class="name" colspan="5">Keywords</th>
+    </tr>
+    <tr>
+        <td class="name"><a name="keyword_My Keyword">My Keyword</a></td>
+        <td>[Documentation]</td>
+        <td>Documentation</td>
+        <td># Comment for doc</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td># Comment row</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td># Comment row 2</td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My Step 1</td>
+        <td>args</td>
+        <td>args 2</td>
+        <td>args 3</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>args 4</td>
+        <td>args 5</td>
+        <td>args 6</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>args 7</td>
+        <td>args 8</td>
+        <td>args 9</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td># step 1 comment</td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>: FOR</td>
+        <td>${param1}</td>
+        <td>${param2}</td>
+        <td>IN</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>${data 1}</td>
+        <td>${data 2}</td>
+        <td>${data 3}</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>...</td>
+        <td>${data 4}</td>
+        <td>${data 5}</td>
+        <td>${data 6}</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>Loop Step</td>
+        <td>args</td>
+        <td>args 2</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 3</td>
+        <td>args 4</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 5</td>
+        <td>args 6</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 7</td>
+        <td>args 8</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>...</td>
+        <td>args 9</td>
+        <td># loop step comment</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td>Loop Step 2</td>
+        <td></td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>My Step 2</td>
+        <td>my step 2 arg</td>
+        <td>second arg</td>
+        <td># step 2 comment</td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td>[Return]</td>
+        <td>args 1</td>
+        <td>args 2</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td class="name"></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+</body>
+</html>
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden_resource.tsv    Fri Jan 13 04:28:56 2012
@@ -0,0 +1,25 @@
+*Settings*
+Library        MyLibrary       argument        WITH NAME       My Alias        
# My library comment
+Variables      MyVariables     args    args 2  args 3  args 4  args 5  args 6
+...    args 7  args 8  args 9  args 10 args 11 args 12
+Resource       MyResource args that are part of the name
+
+*Variables*
+MyVar  val1    val2    val3    val4    val5    val6    val6
+...    val7    val8    val9    # var comment
+
+*Keywords*
+My Keyword
+       [Documentation] Documentation   # Comment for doc
+       # Comment row
+       # Comment row 2
+       My Step 1       args    args 2  args 3  args 4  args 5  args 6
+       ...     args 7  args 8  args 9  # step 1 comment
+       : FOR   ${param1}       ${param2}       IN      ${data 1}       ${data 
2}       ${data 3}
+       ...     ${data 4}       ${data 5}       ${data 6}
+               Loop Step       args    args 2  args 3  args 4  args 5
+               ...     args 6  args 7  args 8  args 9  # loop step comment
+               Loop Step 2
+       My Step 2       my step 2 arg   second arg      # step 2 comment
+       [Return]        args 1  args 2
+
=======================================
--- /dev/null
+++ /atest/testdata/tidy/golden_resource.txt    Fri Jan 13 04:28:56 2012
@@ -0,0 +1,24 @@
+*** Settings ***
+Library MyLibrary argument WITH NAME My Alias # My library comment +Variables MyVariables args args 2 args 3 args 4 args 5 args 6 +... args 7 args 8 args 9 args 10 args 11 args 12
+Resource          MyResource args that are part of the name
+
+*** Variables ***
+MyVar             val1    val2    val3    val4    val5    val6    val6
+...               val7    val8    val9    # var comment
+
+*** Keywords ***
+My Keyword
+    [Documentation]    Documentation    # Comment for doc
+    # Comment row
+    # Comment row 2
+    My Step 1    args    args 2    args 3    args 4    args 5    args 6
+    ...    args 7    args 8    args 9    # step 1 comment
+ : FOR ${param1} ${param2} IN ${data 1} ${data 2} ${data 3}
+    ...    ${data 4}    ${data 5}    ${data 6}
+    \    Loop Step    args    args 2    args 3    args 4    args 5
+    \    ...    args 6    args 7    args 8    args 9    # loop step comment
+    \    Loop Step 2
+    My Step 2    my step 2 arg    second arg    # step 2 comment
+    [Return]    args 1    args 2

==============================================================================
Revision: 74c988aac1b3
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:33:45 2012
Log:      test_importter: fixed case normalization in OSX
http://code.google.com/p/robotframework/source/detail?r=74c988aac1b3

Modified:
 /utest/running/test_importer.py

=======================================
--- /utest/running/test_importer.py     Tue Jan  3 06:42:40 2012
+++ /utest/running/test_importer.py     Fri Jan 13 04:33:45 2012
@@ -1,10 +1,11 @@
 import unittest
 import os
-from os.path import abspath, join, normpath, normcase
+from os.path import abspath, join

 from robot.running.importer import ImportCache
 from robot.errors import FrameworkError
 from robot.utils.asserts import assert_equals, assert_true, assert_raises
+from robot.utils import normpath


 class TestImportCache(unittest.TestCase):
@@ -49,7 +50,7 @@
         value = object()
         cache[path] = value
         assert_equals(cache[path], value)
-        assert_equals(cache._keys[0], normcase(normpath(path)))
+        assert_equals(cache._keys[0], normpath(path))

     def test_existing_non_absolute_paths_are_not_normalized(self):
         cache = ImportCache()

==============================================================================
Revision: db971dd1721a
Author:   Robot Framework Developers <[email protected]>
Date:     Fri Jan 13 04:36:34 2012
Log:      test_serializer: removed tests that are now part of atest
http://code.google.com/p/robotframework/source/detail?r=db971dd1721a

Deleted:
 /utest/writer/golden.py
 /utest/writer/test_serializer.py

=======================================
--- /utest/writer/golden.py     Tue Jan  3 05:09:21 2012
+++ /dev/null
@@ -1,473 +0,0 @@
-_txt_template = '''*** Settings ***
-Library MyLibrary argument WITH NAME My Alias # My library comment -Variables MyVariables args args 2 args 3 args 4 args 5 args 6 -... args 7 args 8 args 9 args 10 args 11 args 12
-Resource          MyResource args that are part of the name
-
-*** Variables ***
-MyVar             val1    val2    val3    val4    val5    val6    val6
-...               val7    val8    val9    # var comment
-%s
-*** Keywords ***
-My Keyword
-    [Documentation]    Documentation    # Comment for doc
-    # Comment row
-    # Comment row 2
-    My Step 1    args    args 2    args 3    args 4    args 5    args 6
-    ...    args 7    args 8    args 9    # step 1 comment
- : FOR ${param1} ${param2} IN ${data 1} ${data 2} ${data 3}
-    ...    ${data 4}    ${data 5}    ${data 6}
-    \    Loop Step    args    args 2    args 3    args 4    args 5
-    \    ...    args 6    args 7    args 8    args 9    # loop step comment
-    \    Loop Step 2
-    My Step 2    my step 2 arg    second arg    # step 2 comment
-    [Return]    args 1    args 2
-
-'''
-
-GOLDEN_TXT_RESOURCE = _txt_template % ''
-GOLDEN_TXT_TESTCASE_FILE = _txt_template % '''
-*** Test Cases ***
-My Test Case
-    [Documentation]    This is a long comment that spans several columns
-    My TC Step 1    my step arg    # step 1 comment
-    My TC Step 2    my step 2 arg    second \ arg    # step 2 comment
-    [Teardown]    1 minute    args
-
-Another Test
-    No Operation
-'''
-GOLDEN_ALIGNED_TXT_TESTCASE_FILE = _txt_template % '''
-*** Test Cases ***    header1            header2
-My Test Case [Documentation] This is a long comment that spans several columns - My TC Step 1 my step arg # step 1 comment - My TC Step 2 my step \ 2 arg second arg # step 2 comment
-                      [Teardown]         1 minute
-
-A very long named test case
-                      My step 1          This is arg
-                      My step 2          This also is arg
-
-Test with for : FOR ${i} IN RANGE 100 - \ Log ${i}
-'''
-
-_txt_pipe_template = '''| *** Settings *** |
-| Library | MyLibrary | argument | WITH NAME | My Alias | # My library comment | -| Variables | MyVariables | args | args 2 | args 3 | args 4 | args 5 | args 6 |
-| ...            | args 7 | args 8 | args 9 | args 10 | args 11 | args 12 |
-| Resource       | MyResource args that are part of the name |
-
-| *** Variables *** |
-| MyVar          | val1 | val2 | val3 | val4 | val5 | val6 | val6 |
-| ...            | val7 | val8 | val9 | # var comment |
-%s
-| *** Keywords *** |
-| My Keyword |
-|    | [Documentation] | Documentation | # Comment for doc |
-|    | # Comment row |
-|    | # Comment row 2 |
-|    | My Step 1 | args | args 2 | args 3 | args 4 | args 5 | args 6 |
-|    | ... | args 7 | args 8 | args 9 | # step 1 comment |
-| | : FOR | ${param1} | ${param2} | IN | ${data 1} | ${data 2} | ${data 3} |
-|    | ... | ${data 4} | ${data 5} | ${data 6} |
-|    |    | Loop Step | args | args 2 | args 3 | args 4 | args 5 |
-|    |    | ... | args 6 | args 7 | args 8 | args 9 | # loop step comment |
-|    |    | Loop Step 2 |
-|    | My Step 2 | my step 2 arg | second arg | # step 2 comment |
-|    | [Return] | args 1 | args 2 |
-
-'''
-
-GOLDEN_TXT_PIPE_RESOURCE = _txt_pipe_template % ''
-GOLDEN_TXT_PIPE_TESTCASE_FILE = _txt_pipe_template % '''
-| *** Test Cases *** |
-| My Test Case |
-| | [Documentation] | This is a long comment that spans several columns |
-|    | My TC Step 1 | my step arg | # step 1 comment |
-|    | My TC Step 2 | my step 2 arg | second \ arg | # step 2 comment |
-|    | [Teardown] | 1 minute | args |
-
-| Another Test |
-|    | No Operation |
-'''
-
-_tsv_template = '''*Settings*\t\t\t\t\t\t\t
-Library\tMyLibrary\targument\tWITH NAME\tMy Alias\t# My library comment\t\t
-Variables\tMyVariables\targs\targs 2\targs 3\targs 4\targs 5\targs 6
-...\targs 7\targs 8\targs 9\targs 10\targs 11\targs 12\t
-Resource\tMyResource args that are part of the name\t\t\t\t\t\t
-\t\t\t\t\t\t\t
-*Variables*\t\t\t\t\t\t\t
-MyVar\tval1\tval2\tval3\tval4\tval5\tval6\tval6
-...\tval7\tval8\tval9\t# var comment\t\t\t
-\t\t\t\t\t\t\t%s
-*Keywords*\t\t\t\t\t\t\t
-My Keyword\t\t\t\t\t\t\t
-\t[Documentation]\tDocumentation\t# Comment for doc\t\t\t\t
-\t# Comment row\t\t\t\t\t\t
-\t# Comment row 2\t\t\t\t\t\t
-\tMy Step 1\targs\targs 2\targs 3\targs 4\targs 5\targs 6
-\t...\targs 7\targs 8\targs 9\t# step 1 comment\t\t
-\t: FOR\t${param1}\t${param2}\tIN\t${data 1}\t${data 2}\t${data 3}
-\t...\t${data 4}\t${data 5}\t${data 6}\t\t\t
-\t\tLoop Step\targs\targs 2\targs 3\targs 4\targs 5
-\t\t...\targs 6\targs 7\targs 8\targs 9\t# loop step comment
-\t\tLoop Step 2\t\t\t\t\t
-\tMy Step 2\tmy step 2 arg\tsecond arg\t# step 2 comment\t\t\t
-\t[Return]\targs 1\targs 2\t\t\t\t
-\t\t\t\t\t\t\t
-'''
-
-GOLDEN_TSV_RESOURCE = _tsv_template % ''
-GOLDEN_TSV_TESTCASE_FILE = _tsv_template % '''
-*Test Cases*\t\t\t\t\t\t\t
-My Test Case\t\t\t\t\t\t\t
-\t[Documentation]\tThis is a long comment that spans several columns\t\t\t\t\t
-\tMy TC Step 1\tmy step arg\t# step 1 comment\t\t\t\t
-\tMy TC Step 2\tmy step 2 arg\tsecond \ arg\t# step 2 comment\t\t\t
-\t[Teardown]\t1 minute\targs\t\t\t\t
-\t\t\t\t\t\t\t
-Another Test\t\t\t\t\t\t\t
-\tNo Operation\t\t\t\t\t\t
-\t\t\t\t\t\t\t'''
-
-GOLDEN_HTML_TESTCASE_FILE = '''\
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<style type="text/css">
-html {
-  font-family: Arial,Helvetica,sans-serif;
-  background-color: white;
-  color: black;
-}
-table {
-  border-collapse: collapse;
-  empty-cells: show;
-  margin: 1em 0em;
-  border: 1px solid black;
-}
-th, td {
-  border: 1px solid black;
-  padding: 0.1em 0.2em;
-  height: 1.5em;
-  width: 12em;
-}
-td.colspan4, th.colspan4 {
-    width: 48em;
-}
-td.colspan3, th.colspan3 {
-    width: 36em;
-}
-td.colspan2, th.colspan2 {
-    width: 24em;
-}
-th {
-  background-color: rgb(192, 192, 192);
-  color: black;
-  height: 1.7em;
-  font-weight: bold;
-  text-align: center;
-  letter-spacing: 0.1em;
-}
-td.name {
-  background-color: rgb(240, 240, 240);
-  letter-spacing: 0.1em;
-}
-td.name, th.name {
-  width: 10em;
-}
-</style>
-<title>Here</title>
-</head>
-<body>
-<h1>Here</h1>
-<table border="1" id="setting">
-<tr>
-<th class="name" colspan="5">Settings</th>
-</tr>
-<tr>
-<td class="name">Library</td>
-<td>MyLibrary</td>
-<td>argument</td>
-<td>WITH NAME</td>
-<td>My Alias</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td># My library comment</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name">Variables</td>
-<td>MyVariables</td>
-<td>args</td>
-<td>args 2</td>
-<td>args 3</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td>args 4</td>
-<td>args 5</td>
-<td>args 6</td>
-<td>args 7</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td>args 8</td>
-<td>args 9</td>
-<td>args 10</td>
-<td>args 11</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td>args 12</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name">Resource</td>
-<td>MyResource args that are part of the name</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-</table>
-<table border="1" id="variable">
-<tr>
-<th class="name" colspan="5">Variables</th>
-</tr>
-<tr>
-<td class="name">MyVar</td>
-<td>val1</td>
-<td>val2</td>
-<td>val3</td>
-<td>val4</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td>val5</td>
-<td>val6</td>
-<td>val6</td>
-<td>val7</td>
-</tr>
-<tr>
-<td class="name">...</td>
-<td>val8</td>
-<td>val9</td>
-<td># var comment</td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-</table>
-<table border="1" id="testcase">
-<tr>
-<th class="name" colspan="5">Test Cases</th>
-</tr>
-<tr>
-<td class="name"><a name="test_My Test Case">My Test Case</a></td>
-<td>[Documentation]</td>
-<td class="colspan3" colspan="3">This is a long comment that spans several columns</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>My TC Step 1</td>
-<td>my step arg</td>
-<td># step 1 comment</td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>My TC Step 2</td>
-<td>my step 2 arg</td>
-<td>second \ arg</td>
-<td># step 2 comment</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>[Teardown]</td>
-<td>1 minute</td>
-<td>args</td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"><a name="test_Another Test">Another Test</a></td>
-<td>No Operation</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-</table>
-<table border="1" id="keyword">
-<tr>
-<th class="name" colspan="5">Keywords</th>
-</tr>
-<tr>
-<td class="name"><a name="keyword_My Keyword">My Keyword</a></td>
-<td>[Documentation]</td>
-<td>Documentation</td>
-<td># Comment for doc</td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td># Comment row</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td># Comment row 2</td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>My Step 1</td>
-<td>args</td>
-<td>args 2</td>
-<td>args 3</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>...</td>
-<td>args 4</td>
-<td>args 5</td>
-<td>args 6</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>...</td>
-<td>args 7</td>
-<td>args 8</td>
-<td>args 9</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>...</td>
-<td># step 1 comment</td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>: FOR</td>
-<td>${param1}</td>
-<td>${param2}</td>
-<td>IN</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>...</td>
-<td>${data 1}</td>
-<td>${data 2}</td>
-<td>${data 3}</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>...</td>
-<td>${data 4}</td>
-<td>${data 5}</td>
-<td>${data 6}</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>Loop Step</td>
-<td>args</td>
-<td>args 2</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>...</td>
-<td>args 3</td>
-<td>args 4</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>...</td>
-<td>args 5</td>
-<td>args 6</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>...</td>
-<td>args 7</td>
-<td>args 8</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>...</td>
-<td>args 9</td>
-<td># loop step comment</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td>Loop Step 2</td>
-<td></td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>My Step 2</td>
-<td>my step 2 arg</td>
-<td>second arg</td>
-<td># step 2 comment</td>
-</tr>
-<tr>
-<td class="name"></td>
-<td>[Return]</td>
-<td>args 1</td>
-<td>args 2</td>
-<td></td>
-</tr>
-<tr>
-<td class="name"></td>
-<td></td>
-<td></td>
-<td></td>
-<td></td>
-</tr>
-</table>
-</body>
-</html>
-'''
=======================================
--- /utest/writer/test_serializer.py    Mon Dec 19 08:11:10 2011
+++ /dev/null
@@ -1,128 +0,0 @@
-from __future__ import with_statement
-import StringIO
-import unittest
-import os
-
-from robot.parsing.model import TestCaseFile, ResourceFile
-from robot.parsing.populators import FromFilePopulator
-from robot.parsing.txtreader import TxtReader
-from robot.utils.asserts import assert_equals
-from robot.writer.serializer import Serializer
-
-from golden import (GOLDEN_TXT_RESOURCE, GOLDEN_TXT_TESTCASE_FILE,
- GOLDEN_TXT_PIPE_RESOURCE, GOLDEN_TXT_PIPE_TESTCASE_FILE,
-                    GOLDEN_TSV_RESOURCE, GOLDEN_TSV_TESTCASE_FILE,
- GOLDEN_HTML_TESTCASE_FILE, GOLDEN_ALIGNED_TXT_TESTCASE_FILE)
-
-
-def _create_testcase_file(data):
-    tcf = TestCaseFile()
-    TxtReader().read(StringIO.StringIO(data),
-                     FromFilePopulator(tcf))
-    return tcf
-
-def _create_resource_file(data):
-    res = ResourceFile()
-    TxtReader().read(StringIO.StringIO(data),
-                    FromFilePopulator(res))
-    return res
-
-TESTCASE_FILE = _create_testcase_file(GOLDEN_TXT_TESTCASE_FILE)
-ALIGNED_TESTCASE_FILE = _create_testcase_file(GOLDEN_ALIGNED_TXT_TESTCASE_FILE)
-RESOURCE_FILE = _create_resource_file(GOLDEN_TXT_RESOURCE)
-
-
-class _SerializerTest(unittest.TestCase):
-    _serializer = None
-
-    def _serialize(self, datafile, extension, pipe_separated=False,
-                   line_separator=os.linesep):
-        datafile.source = '/not/really/here.' + extension
-        output = StringIO.StringIO()
-        Serializer().serialize(datafile, output=output,
-                               pipe_separated=pipe_separated,
-                               line_separator=line_separator)
-        return output.getvalue()
-
- def _assert_serialization_with_different_line_separators(self, datafile,
-                                                             expected):
-        for linesep in '\n', '\r\n':
-            output = self._serializer(datafile, line_separator=linesep)
-            self._assert_result(output, expected, linesep)
-
-    def _assert_serialization(self, datafile, expected):
-        self._assert_result(self._serializer(datafile), expected)
-
-    def _assert_result(self, result, expected, linesep=os.linesep):
- # TODO: doesn't test linesep properly, could not get it working in Windows - for line1, line2 in zip(result.splitlines(), expected.splitlines()):
-            msg = "\n%s\n!=\n%s\n" % (result, expected)
-            assert_equals(repr(unicode(line1)), repr(unicode(line2)), msg)
-
-
-class TestTxtSerialization(_SerializerTest):
-
-    def _serializer(self, datafile, line_separator=os.linesep):
- return self._serialize(datafile, 'txt', line_separator=line_separator)
-
-    def test_serializing_txt_resource_file(self):
-        self._assert_serialization(RESOURCE_FILE, GOLDEN_TXT_RESOURCE)
-
-    def test_serializing_txt_test_case_file(self):
-        self._assert_serialization(TESTCASE_FILE, GOLDEN_TXT_TESTCASE_FILE)
-
-    def test_serializing_with_different_line_separators(self):
-        files = TESTCASE_FILE, GOLDEN_TXT_TESTCASE_FILE
-        self._assert_serialization_with_different_line_separators(*files)
-
-    def test_serializing_aligned_txt_test_case_file(self):
- self._assert_serialization(ALIGNED_TESTCASE_FILE, GOLDEN_ALIGNED_TXT_TESTCASE_FILE)
-
-
-class TestPipeTxtSerialization(_SerializerTest):
-
-    def _serializer(self, datafile, line_separator=os.linesep):
-        return self._serialize(datafile, 'txt', pipe_separated=True,
-                               line_separator=line_separator)
-
-    def test_serializer_with_txt_resource_file(self):
-        self._assert_serialization(RESOURCE_FILE, GOLDEN_TXT_PIPE_RESOURCE)
-
-    def test_serializer_with_txt_test_case_file(self):
- self._assert_serialization(TESTCASE_FILE, GOLDEN_TXT_PIPE_TESTCASE_FILE)
-
-    def test_serializer_with_different_line_separators(self):
-        files = TESTCASE_FILE, GOLDEN_TXT_PIPE_TESTCASE_FILE
-        self._assert_serialization_with_different_line_separators(*files)
-
-
-class TestTsvSerialization(_SerializerTest):
-
-    def _serializer(self, datafile, line_separator=os.linesep):
-        return self._serialize(datafile, 'tsv', pipe_separated=True,
-                               line_separator=line_separator)
-
-
-    def test_serializing_resource_file(self):
-        self._assert_serialization(RESOURCE_FILE, GOLDEN_TSV_RESOURCE)
-
-    def test_serializing_testcase_file(self):
-        self._assert_serialization(TESTCASE_FILE, GOLDEN_TSV_TESTCASE_FILE)
-
-    def test_serializing_with_different_line_separators(self):
-        files = TESTCASE_FILE, GOLDEN_TSV_TESTCASE_FILE
-        self._assert_serialization_with_different_line_separators(*files)
-
-
-class TestHTMLSerialization(_SerializerTest):
-
-    def _serializer(self, datafile):
-        result= self._serialize(datafile, 'html')
-        return result
-
-    def test_serializer_with_html_testcase_file(self):
- self._assert_serialization(TESTCASE_FILE, GOLDEN_HTML_TESTCASE_FILE)
-
-
-if __name__ == "__main__":
-    unittest.main()

Reply via email to