5 new revisions:

Revision: 51879c172c6a
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Tue Dec 17 12:53:47 2013 UTC
Log:      Refactored conf/settings.py: property for console logger...
http://code.google.com/p/robotframework/source/detail?r=51879c172c6a

Revision: 14df19997d45
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Thu Dec 19 14:22:45 2013 UTC
Log: Do logger registration in TestSuite model if called with only keyword ...
http://code.google.com/p/robotframework/source/detail?r=14df19997d45

Revision: 14f9c1bf2095
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Thu Dec 19 14:28:22 2013 UTC
Log: Refactor unit test: separate useful super class for tests that test ru...
http://code.google.com/p/robotframework/source/detail?r=14f9c1bf2095

Revision: 96e5065ce436
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Fri Dec 20 13:35:36 2013 UTC
Log:      Added unit tests....
http://code.google.com/p/robotframework/source/detail?r=96e5065ce436

Revision: 3b374a0cfa45
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Fri Dec 20 13:36:00 2013 UTC
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=3b374a0cfa45

==============================================================================
Revision: 51879c172c6a
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Tue Dec 17 12:53:47 2013 UTC
Log:      Refactored conf/settings.py: property for console logger

Update issue 1605

Status: started
http://code.google.com/p/robotframework/source/detail?r=51879c172c6a

Modified:
 /src/robot/conf/settings.py
 /src/robot/rebot.py
 /src/robot/run.py

=======================================
--- /src/robot/conf/settings.py Tue Nov  5 12:56:02 2013 UTC
+++ /src/robot/conf/settings.py Tue Dec 17 12:53:47 2013 UTC
@@ -434,6 +434,15 @@
         return (self['SkipTeardownOnExit'] or
any(mode == 'skipteardownonexit' for mode in self['RunMode']))

+    @property
+    def console_logger_config(self):
+        return {
+            'width':   self['MonitorWidth'],
+            'colors':  self['MonitorColors'],
+            'markers': self['MonitorMarkers'],
+            'stdout':  self['StdOut'],
+            'stderr':  self['StdErr']
+        }

 class RebotSettings(_BaseSettings):
     _extra_cli_opts = {'Output'            : ('output', None),
@@ -495,3 +504,11 @@
     def _resolve_background_colors(self):
         colors = self['ReportBackground']
return {'pass': colors[0], 'nonCriticalFail': colors[1], 'fail': colors[2]}
+
+    @property
+    def console_logger_config(self):
+        return {
+            'colors':  self['MonitorColors'],
+            'stdout':  self['StdOut'],
+            'stderr':  self['StdErr']
+        }
=======================================
--- /src/robot/rebot.py Thu Nov  7 13:51:45 2013 UTC
+++ /src/robot/rebot.py Tue Dec 17 12:53:47 2013 UTC
@@ -314,9 +314,7 @@

     def main(self, datasources, **options):
         settings = RebotSettings(options)
-        LOGGER.register_console_logger(colors=settings['MonitorColors'],
-                                       stdout=settings['StdOut'],
-                                       stderr=settings['StdErr'])
+        LOGGER.register_console_logger(**settings.console_logger_config)
         LOGGER.disable_message_cache()
         rc = ResultWriter(*datasources).write_results(settings)
         if rc < 0:
=======================================
--- /src/robot/run.py   Thu Nov  7 13:51:45 2013 UTC
+++ /src/robot/run.py   Tue Dec 17 12:53:47 2013 UTC
@@ -389,11 +389,7 @@

     def main(self, datasources, **options):
         settings = RobotSettings(options)
-        LOGGER.register_console_logger(width=settings['MonitorWidth'],
-                                       colors=settings['MonitorColors'],
-                                       markers=settings['MonitorMarkers'],
-                                       stdout=settings['StdOut'],
-                                       stderr=settings['StdErr'])
+        LOGGER.register_console_logger(**settings.console_logger_config)
         LOGGER.info('Settings:\n%s' % unicode(settings))
         suite = TestSuiteBuilder(settings['SuiteNames'],
                                  settings['WarnOnSkipped'],

==============================================================================
Revision: 14df19997d45
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Thu Dec 19 14:22:45 2013 UTC
Log: Do logger registration in TestSuite model if called with only keyword arguments.

Update issue 1605
http://code.google.com/p/robotframework/source/detail?r=14df19997d45

Modified:
 /src/robot/running/model.py

=======================================
--- /src/robot/running/model.py Fri Sep  6 07:59:35 2013 UTC
+++ /src/robot/running/model.py Thu Dec 19 14:22:45 2013 UTC
@@ -178,7 +178,9 @@
         """
         STOP_SIGNAL_MONITOR.start()
         IMPORTER.reset()
-        settings = settings or RobotSettings(options)
+        if not settings:
+            settings = RobotSettings(options)
+ LOGGER.register_console_logger(**settings.console_logger_config)
         pyloggingconf.initialize(settings['LogLevel'])
         init_global_variables(settings)
         output = Output(settings)

==============================================================================
Revision: 14f9c1bf2095
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Thu Dec 19 14:28:22 2013 UTC
Log: Refactor unit test: separate useful super class for tests that test running.

Update issue 1605
Separate `Base` class from test_run_and_rebot.py to `RunningTestCase`.
http://code.google.com/p/robotframework/source/detail?r=14f9c1bf2095

Added:
 /utest/resources/runningtestcase.py
Modified:
 /utest/api/test_run_and_rebot.py
 /utest/run_utests.py

=======================================
--- /dev/null
+++ /utest/resources/runningtestcase.py Thu Dec 19 14:28:22 2013 UTC
@@ -0,0 +1,56 @@
+import sys
+from os import remove
+from os.path import exists
+import unittest
+from StringIO import StringIO
+
+
+class RunningTestCase(unittest.TestCase):
+
+    remove_files = []
+
+    def setUp(self):
+        self.orig__stdout__ = sys.__stdout__
+        self.orig__stderr__ = sys.__stderr__
+        self.orig_stdout = sys.stdout
+        self.orig_stderr = sys.stderr
+        sys.__stdout__ = StringIO()
+        sys.__stderr__ = StringIO()
+        sys.stdout = StringIO()
+        sys.stderr = StringIO()
+        self._remove_files()
+
+    def tearDown(self):
+        sys.__stdout__ = self.orig__stdout__
+        sys.__stderr__ = self.orig__stderr__
+        sys.stdout = self.orig_stdout
+        sys.stderr = self.orig_stderr
+        self._remove_files()
+
+    def _assert_outputs(self, stdout=None, stderr=None):
+        self._assert_output(sys.__stdout__, stdout)
+        self._assert_output(sys.__stderr__, stderr)
+        self._assert_output(sys.stdout, None)
+        self._assert_output(sys.stderr, None)
+
+    def _assert_output(self, stream, expected):
+        output = stream.getvalue()
+        if expected:
+            self._assert_output_contains(output, expected)
+        else:
+            self._assert_no_output(output)
+
+    def _assert_no_output(self, output):
+        if output:
+ raise AssertionError('Expected output to be empty:\n%s' % output)
+
+    def _assert_output_contains(self, output, expected):
+        for content, count in expected:
+            if output.count(content) != count:
+                raise AssertionError("'%s' not %d times in output:\n%s"
+                                     % (content, count, output))
+
+    def _remove_files(self):
+        for path in self.remove_files:
+            if exists(path):
+                remove(path)
=======================================
--- /utest/api/test_run_and_rebot.py    Wed Sep 11 06:36:59 2013 UTC
+++ /utest/api/test_run_and_rebot.py    Thu Dec 19 14:28:22 2013 UTC
@@ -2,12 +2,13 @@
 import sys
 import tempfile
 from os.path import abspath, dirname, join, exists, curdir
-from os import remove, chdir
+from os import chdir
 from StringIO import StringIO

 from robot.utils.asserts import assert_equals, assert_true
 from robot.running import namespace
 from robot import run, rebot
+from resources.runningtestcase import RunningTestCase

 ROOT = dirname(dirname(dirname(abspath(__file__))))
 TEMP = tempfile.gettempdir()
@@ -35,54 +36,11 @@
         return ''.join(self._buffer)


-class Base(unittest.TestCase):
-
-    def setUp(self):
-        self.orig__stdout__ = sys.__stdout__
-        self.orig__stderr__ = sys.__stderr__
-        self.orig_stdout = sys.stdout
-        self.orig_stderr = sys.stderr
-        sys.__stdout__ = StringIO()
-        sys.__stderr__ = StringIO()
-        sys.stdout = StringIO()
-        sys.stderr = StringIO()
-        if exists(LOG_PATH):
-            remove(LOG_PATH)
-
-    def tearDown(self):
-        sys.__stdout__ = self.orig__stdout__
-        sys.__stderr__ = self.orig__stderr__
-        sys.stdout = self.orig_stdout
-        sys.stderr = self.orig_stderr
-
-    def _assert_outputs(self, stdout=None, stderr=None):
-        self._assert_output(sys.__stdout__, stdout)
-        self._assert_output(sys.__stderr__, stderr)
-        self._assert_output(sys.stdout, None)
-        self._assert_output(sys.stderr, None)
-
-    def _assert_output(self, stream, expected):
-        output = stream.getvalue()
-        if expected:
-            self._assert_output_contains(output, expected)
-        else:
-            self._assert_no_output(output)
-
-    def _assert_no_output(self, output):
-        if output:
- raise AssertionError('Expected output to be empty:\n%s' % output)
-
-    def _assert_output_contains(self, output, expected):
-        for content, count in expected:
-            if output.count(content) != count:
-                raise AssertionError("'%s' not %d times in output:\n%s"
-                                     % (content, count, output))
-
-
-class TestRun(Base):
+class TestRun(RunningTestCase):
     data = join(ROOT, 'atest', 'testdata', 'misc', 'pass_and_fail.txt')
warn = join(ROOT, 'atest', 'testdata', 'misc', 'warnings_and_errors.txt')
     nonex = join(TEMP, 'non-existing-file-this-is.txt')
+    remove_files = [LOG_PATH]

     def test_run_once(self):
         assert_equals(run(self.data, outputdir=TEMP, report='none'), 1)
@@ -128,9 +86,10 @@
         self._assert_outputs([('FAIL', 0)])


-class TestRebot(Base):
+class TestRebot(RunningTestCase):
     data = join(ROOT, 'atest', 'testdata', 'rebot', 'created_normal.xml')
     nonex = join(TEMP, 'non-existing-file-this-is.xml')
+    remove_files = [LOG_PATH]

     def test_run_once(self):
         assert_equals(rebot(self.data, outputdir=TEMP, report='NONE'), 1)
@@ -195,7 +154,7 @@
         assert_equals(rc, 1)


-class TestRelativeImportsFromPythonpath(Base):
+class TestRelativeImportsFromPythonpath(RunningTestCase):
     _data = join(abspath(dirname(__file__)), 'import_test.txt')

     def setUp(self):
=======================================
--- /utest/run_utests.py        Thu Jul  7 17:50:07 2011 UTC
+++ /utest/run_utests.py        Thu Dec 19 14:28:22 2013 UTC
@@ -20,8 +20,8 @@


 base = os.path.abspath(os.path.normpath(os.path.split(sys.argv[0])[0]))
-for path in ["../src", "../src/robot/libraries", "../src/robot",
-             "../atest/testresources/testlibs" ]:
+for path in ['../src', '../src/robot/libraries', '../src/robot',
+             '../atest/testresources/testlibs', 'resources' ]:
     path = os.path.join(base, path.replace('/', os.sep))
     if path not in sys.path:
         sys.path.insert(0, path)

==============================================================================
Revision: 96e5065ce436
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Fri Dec 20 13:35:36 2013 UTC
Log:      Added unit tests.

Update issue 1605

Added tests for suite.run() respecting given stdout and stderr.
http://code.google.com/p/robotframework/source/detail?r=96e5065ce436

Modified:
 /src/robot/running/model.py
 /utest/resources/runningtestcase.py
 /utest/run_utests.py
 /utest/running/test_running.py

=======================================
--- /src/robot/running/model.py Thu Dec 19 14:22:45 2013 UTC
+++ /src/robot/running/model.py Fri Dec 20 13:35:36 2013 UTC
@@ -176,11 +176,11 @@
more examples, including how to construct executable test suites and
         how to create logs and reports based on the execution results.
         """
-        STOP_SIGNAL_MONITOR.start()
-        IMPORTER.reset()
         if not settings:
             settings = RobotSettings(options)
LOGGER.register_console_logger(**settings.console_logger_config)
+        STOP_SIGNAL_MONITOR.start()
+        IMPORTER.reset()
         pyloggingconf.initialize(settings['LogLevel'])
         init_global_variables(settings)
         output = Output(settings)
=======================================
--- /utest/resources/runningtestcase.py Thu Dec 19 14:28:22 2013 UTC
+++ /utest/resources/runningtestcase.py Fri Dec 20 13:35:36 2013 UTC
@@ -36,7 +36,8 @@
     def _assert_output(self, stream, expected):
         output = stream.getvalue()
         if expected:
-            self._assert_output_contains(output, expected)
+            for content, count in expected:
+                self._assert_output_contains(output, content, count)
         else:
             self._assert_no_output(output)

@@ -44,11 +45,10 @@
         if output:
raise AssertionError('Expected output to be empty:\n%s' % output)

-    def _assert_output_contains(self, output, expected):
-        for content, count in expected:
-            if output.count(content) != count:
-                raise AssertionError("'%s' not %d times in output:\n%s"
-                                     % (content, count, output))
+    def _assert_output_contains(self, output, content, count):
+        if output.count(content) != count:
+            raise AssertionError("'%s' not %d times in output:\n%s"
+                                 % (content, count, output))

     def _remove_files(self):
         for path in self.remove_files:
=======================================
--- /utest/run_utests.py        Thu Dec 19 14:28:22 2013 UTC
+++ /utest/run_utests.py        Fri Dec 20 13:35:36 2013 UTC
@@ -21,7 +21,7 @@

 base = os.path.abspath(os.path.normpath(os.path.split(sys.argv[0])[0]))
 for path in ['../src', '../src/robot/libraries', '../src/robot',
-             '../atest/testresources/testlibs', 'resources' ]:
+             '../atest/testresources/testlibs' ]:
     path = os.path.join(base, path.replace('/', os.sep))
     if path not in sys.path:
         sys.path.insert(0, path)
=======================================
--- /utest/running/test_running.py      Thu Jun  6 10:12:53 2013 UTC
+++ /utest/running/test_running.py      Fri Dec 20 13:35:36 2013 UTC
@@ -1,15 +1,17 @@
+import sys
 import unittest
+
 from StringIO import StringIO
 from os.path import abspath, dirname, normpath, join

 from robot.utils.asserts import assert_equals
 from robot.running import TestSuite, TestSuiteBuilder
+from resources.runningtestcase import RunningTestCase


 CURDIR = dirname(abspath(__file__))
 DATADIR = normpath(join(CURDIR, '..', '..', 'atest', 'testdata', 'misc'))

-
 def run(suite, **kwargs):
     result = suite.run(output='NONE', stdout=StringIO(), stderr=StringIO(),
                        **kwargs)
@@ -163,5 +165,29 @@
                         'Also parent suite teardown failed:\nTop level')


+class TestCustomStreams(RunningTestCase):
+
+    def test_stdout_and_stderr(self):
+        self._run()
+        self._assert_output(sys.__stdout__,
+                            [('T1', 1),
+                             ('1 critical test, 1 passed, 0 failed', 1)])
+        self._assert_output(sys.__stderr__, [('hello world', 1)])
+
+    def test_custom_stdout_and_stderr(self):
+        custom_stdout, custom_stderr = StringIO(), StringIO()
+        self._run(custom_stdout, custom_stderr)
+        self._assert_normal_stdout_stderr_are_empty()
+        self._assert_output(custom_stdout, [('T1', 1)])
+        self._assert_output(custom_stderr, [('hello world', 1)])
+
+    def _run(self, stdout=None, stderr=None):
+        suite = TestSuite(name='Suite')
+ suite.tests.create(name='T1').keywords.create('Log', args=['hello world', 'WARN'])
+        suite.run(stdout=stdout, stderr=stderr)
+
+    def _assert_normal_stdout_stderr_are_empty(self):
+        self._assert_outputs()
+
 if __name__ == '__main__':
     unittest.main()

==============================================================================
Revision: 3b374a0cfa45
Branch:   default
Author:   Tatu Kairi <tatu.ka...@gmail.com>
Date:     Fri Dec 20 13:36:00 2013 UTC
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=3b374a0cfa45


--

--- You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to robotframework-commit+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to