Revision: 02bbf579dc76
Author:   Mikko Korpela <[email protected]>
Date:     Thu Dec  1 06:13:27 2011
Log:      more robust tests for reporting
http://code.google.com/p/robotframework/source/detail?r=02bbf579dc76

Modified:
 /utest/reporting/test_reporting.py

=======================================
--- /utest/reporting/test_reporting.py  Thu Dec  1 04:32:24 2011
+++ /utest/reporting/test_reporting.py  Thu Dec  1 06:13:27 2011
@@ -2,43 +2,17 @@
 from os.path import abspath

 from robot.conf import RebotSettings
-from robot.reporting.builders import LogBuilder, ReportBuilder, XUnitBuilder, OutputBuilder
+from robot.reporting.builders import LogBuilder, ReportBuilder
 from robot.reporting.resultwriter import ResultWriter
 from robot.output import LOGGER

 import resources
+from robot.utils.asserts import assert_true
+

 LOGGER.disable_automatic_console_logger()


-def set_write_log_mock():
-    results = {'log_path': None}
-    def write_log(self, path, *args):
-        results['log_path'] = path
-    LogBuilder._write_file = write_log
-    return results
-
-def set_write_report_mock():
-    results = {'report_path': None}
-    def write_report(self, path, *args):
-        results['report_path'] = path
-    ReportBuilder._write_file = write_report
-    return results
-
-def set_write_xunit_mock():
-    results = {'xunit_path': None}
-    def build_xunit(self, path):
-        results['xunit_path'] = path
-    XUnitBuilder.build = build_xunit
-    return results
-
-def set_write_output_mock():
-    results = {'output_path': None}
-    def build_output(self, path):
-        results['output_path'] = path
-    OutputBuilder.build = build_output
-    return results
-
 def set_write_split_test_mock():
     results = []
     def _write_split_log(self, index, keywords, strings, name):
@@ -47,7 +21,7 @@
     return results


-class TestReporting(unittest.TestCase):
+class TestReporting(unittest.TestCase, ResultWriter):

     def setUp(self):
         self._settings = RebotSettings()
@@ -85,40 +59,55 @@
             'TimestampOutputs': None,
             'OutputDir': '.',
         }
-        self._log_results = set_write_log_mock()
-        self._report_results = set_write_report_mock()
-        self._xunit_results = set_write_xunit_mock()
+        self._log_result = None
+        self._report_result = None
+        self._xunit_result = None
         self._split_test_names = set_write_split_test_mock()
-        self._output_results = set_write_output_mock()
-        self._reporter = ResultWriter(self._settings)
+        self._output_result = None
+        self._logs_splitted = False
+
+    def _write_xunit(self, result, xunit):
+        self._xunit_result = xunit
+
+    def _write_output(self, result, output):
+        self._output_result = output
+
+    def _write_report(self, result, report, config):
+        self._report_result = report
+
+    def _write_log(self, result, log, config):
+        self._log_result = log
+        if result.js_model.split_results:
+            self._logs_splitted = True

     def test_generate_report_and_log(self):
         self._settings._opts['Log'] = 'log.html'
         self._settings._opts['Report'] = 'report.html'
-        self._reporter.write_results(resources.GOLDEN_OUTPUT)
+        self.write_results(resources.GOLDEN_OUTPUT)
         self._assert_expected_log('log.html')
         self._assert_expected_report('report.html')

     def test_no_generation(self):
-        self._reporter.write_results(resources.GOLDEN_OUTPUT)
+        self.write_results(resources.GOLDEN_OUTPUT)
         self._assert_no_log()
         self._assert_no_report()

     def test_only_log(self):
         self._settings._opts['Log'] = 'only-log.html'
-        self._reporter.write_results(resources.GOLDEN_OUTPUT)
+        self.write_results(resources.GOLDEN_OUTPUT)
         self._assert_expected_log('only-log.html')
         self._assert_no_report()
+        assert_true(not self._logs_splitted)

     def test_only_report(self):
         self._settings._opts['Report'] = 'reports-only.html'
-        self._reporter.write_results(resources.GOLDEN_OUTPUT)
+        self.write_results(resources.GOLDEN_OUTPUT)
         self._assert_no_log()
         self._assert_expected_report('reports-only.html')

     def test_only_xunit(self):
         self._settings._opts['XUnitFile'] = 'xunitfile-only.xml'
-        self._reporter.write_results(resources.GOLDEN_OUTPUT)
+        self.write_results(resources.GOLDEN_OUTPUT)
         self._assert_no_log()
         self._assert_no_report()
         self._assert_expected_xunit('xunitfile-only.xml')
@@ -126,23 +115,21 @@
     def test_split_tests(self):
         self._settings._opts['SplitLog'] = True
         self._settings._opts['Log'] = '/tmp/foo/log.bar.html'
-        self._write_results(resources.GOLDEN_OUTPUT)
-        expected = ['/tmp/foo/log.bar-%d.js' % i for i in range(1, 5)]
-        self.assertEquals(self._split_test_names, expected)
+        self.write_results(resources.GOLDEN_OUTPUT)
+        assert_true(self._logs_splitted)

     def _assert_expected_log(self, expected_file_name):
         if expected_file_name:
             expected_file_name = abspath(expected_file_name)
- self.assertEquals(self._log_results['log_path'], expected_file_name)
+        self.assertEquals(self._log_result, expected_file_name)

     def _assert_expected_report(self, expected_file_name):
         if expected_file_name:
             expected_file_name = abspath(expected_file_name)
- self.assertEquals(self._report_results['report_path'], expected_file_name)
+        self.assertEquals(self._report_result, expected_file_name)

     def _assert_expected_xunit(self, expected_file_name):
-        self.assertEquals(self._xunit_results['xunit_path'],
-                          abspath(expected_file_name))
+        self.assertEquals(self._xunit_result, abspath(expected_file_name))

     def _assert_no_log(self):
         self._assert_expected_log(None)
@@ -150,30 +137,20 @@
     def _assert_no_report(self):
         self._assert_expected_report(None)

-    def _assert_no_data_model_generation(self):
-        self.assertEquals(len(self._datamodel_generations), 0)
-
-    def _assert_data_model_generated_once(self):
-        self.assertEquals(len(self._datamodel_generations), 1)
-
-    def _write_results(self, *sources):
-        self._reporter.write_results(*sources)
-
     def test_multiple_outputs(self):
         self._settings['Log'] = 'log.html'
         self._settings['Report'] = 'report.html'
- self._write_results(resources.GOLDEN_OUTPUT, resources.GOLDEN_OUTPUT2) + self.write_results(resources.GOLDEN_OUTPUT, resources.GOLDEN_OUTPUT2)
         self._assert_expected_log('log.html')
         self._assert_expected_report('report.html')

     def test_output_generation(self):
         self._settings['Output'] = 'ouz.xml'
- self._write_results(resources.GOLDEN_OUTPUT, resources.GOLDEN_OUTPUT2) + self.write_results(resources.GOLDEN_OUTPUT, resources.GOLDEN_OUTPUT2)
         self._assert_expected_output('ouz.xml')

     def _assert_expected_output(self, expected_file_name):
-        self.assertEquals(self._output_results['output_path'],
-                          abspath(expected_file_name))
+        self.assertEquals(self._output_result, abspath(expected_file_name))

 if __name__ == '__main__':
     unittest.main()

Reply via email to