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