3 new revisions:

Revision: 0e4147336114
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:29:46 2013 UTC
Log:      small utest cleanup
http://code.google.com/p/robotframework/source/detail?r=0e4147336114

Revision: 9da56dde6f48
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:43:57 2013 UTC
Log: TestSuite.run() and LOGGER: utest and fix for registering console logg...
http://code.google.com/p/robotframework/source/detail?r=9da56dde6f48

Revision: e904d0491d2b
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:49:22 2013 UTC
Log: LOGGER: allow instantiating w/o registering console logger, updated co...
http://code.google.com/p/robotframework/source/detail?r=e904d0491d2b

==============================================================================
Revision: 0e4147336114
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:29:46 2013 UTC
Log:      small utest cleanup
http://code.google.com/p/robotframework/source/detail?r=0e4147336114

Modified:
 /utest/running/test_running.py

=======================================
--- /utest/running/test_running.py      Mon Dec 23 12:47:26 2013 UTC
+++ /utest/running/test_running.py      Mon Dec 23 13:29:46 2013 UTC
@@ -170,27 +170,29 @@
     def test_stdout_and_stderr(self):
         self._run()
         self._assert_output(sys.__stdout__,
-                            [('T1', 1),
+                            [('My Suite', 2), ('My Test', 1),
                              ('1 critical test, 1 passed, 0 failed', 1)])
-        self._assert_output(sys.__stderr__, [('hello world', 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)
+        stdout, stderr = StringIO(), StringIO()
+        self._run(stdout, stderr)
         self._assert_normal_stdout_stderr_are_empty()
-        self._assert_output(custom_stdout, [('T1', 1)])
-        self._assert_output(custom_stderr, [('hello world', 1)])
+        self._assert_output(stdout, [('My Suite', 2), ('My Test', 1)])
+        self._assert_output(stderr, [('Hello, world!', 1)])

     def test_same_custom_stdout_and_stderr(self):
-        custom_output = StringIO()
-        self._run(custom_output, custom_output)
+        output = StringIO()
+        self._run(output, output)
         self._assert_normal_stdout_stderr_are_empty()
-        self._assert_output(custom_output, [('T1', 1), ('hello world', 1)])
+        self._assert_output(output, [('My Suite', 2), ('My Test', 1),
+                                     ('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 _run(self, stdout=None, stderr=None, **options):
+        suite = TestSuite(name='My Suite')
+        suite.variables.create('${MESSAGE}', 'Hello, world!')
+ suite.tests.create(name='My Test').keywords.create('Log', args=['${MESSAGE}', 'WARN'])
+        suite.run(stdout=stdout, stderr=stderr, **options)

     def _assert_normal_stdout_stderr_are_empty(self):
         self._assert_outputs()

==============================================================================
Revision: 9da56dde6f48
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:43:57 2013 UTC
Log: TestSuite.run() and LOGGER: utest and fix for registering console logger multiple times

Update issue 1605
Added a test for running tests multiple times with different stdout/stderr and noticed that it didn't work. The problem as in LOGGER that didn't handle reigstering/unregistering console loggers too well.
http://code.google.com/p/robotframework/source/detail?r=9da56dde6f48

Modified:
 /src/robot/output/logger.py
 /utest/running/test_running.py

=======================================
--- /src/robot/output/logger.py Thu Jun  6 14:00:44 2013 UTC
+++ /src/robot/output/logger.py Mon Dec 23 13:43:57 2013 UTC
@@ -37,18 +37,13 @@
     def __init__(self):
         self._loggers = LoggerCollection()
         self._message_cache = []
-        self._register_console_logger()
-        self._console_logger_disabled = False
+        self._console_logger = None
         self._started_keywords = 0
+        self.register_console_logger()

     def disable_message_cache(self):
         self._message_cache = None

-    def disable_automatic_console_logger(self):
-        if not self._console_logger_disabled:
-            self._console_logger_disabled = True
-            return self._loggers.remove_first_regular_logger()
-
     def register_logger(self, *loggers):
         for log in loggers:
             logger = self._loggers.register_regular_logger(log)
@@ -69,13 +64,23 @@

def register_console_logger(self, width=78, colors='AUTO', markers='AUTO',
                                 stdout=None, stderr=None):
-        self.disable_automatic_console_logger()
- self._register_console_logger(width, colors, markers, stdout, stderr)
+        logger = CommandLineMonitor(width, colors, markers, stdout, stderr)
+        if self._console_logger:
+            self._loggers.unregister_logger(self._console_logger)
+        self._console_logger = logger
+        self._loggers.register_regular_logger(logger)

- def _register_console_logger(self, width=78, colors='AUTO', markers='AUTO',
-                                 stdout=None, stderr=None):
- monitor = CommandLineMonitor(width, colors, markers, stdout, stderr)
-        self._loggers.register_regular_logger(monitor)
+    def unregister_console_logger(self):
+        if not self._console_logger:
+            return None
+        logger = self._console_logger
+        self._loggers.unregister_logger(logger)
+        self._console_logger = None
+        return logger
+
+    # TODO: Remove in RF 2.9. Not used outside utests since 2.8.4 but may
+    # be used by external tools. Need to check that before removal.
+    disable_automatic_console_logger = unregister_console_logger

     def register_file_logger(self, path=None, level='INFO'):
         if not path:
@@ -175,6 +180,7 @@
         self._context_changing_loggers.append(_LoggerProxy(logger))
         return self._context_changing_loggers[-1]

+    # TODO: Remove in RF 2.9. Doesn't seem to be used anywhere since 2.8.4.
     def remove_first_regular_logger(self):
         return self._regular_loggers.pop(0)

=======================================
--- /utest/running/test_running.py      Mon Dec 23 13:29:46 2013 UTC
+++ /utest/running/test_running.py      Mon Dec 23 13:43:57 2013 UTC
@@ -188,6 +188,23 @@
         self._assert_output(output, [('My Suite', 2), ('My Test', 1),
                                      ('Hello, world!', 1)])

+    def test_run_multiple_times_with_different_stdout_and_stderr(self):
+        stdout, stderr = StringIO(), StringIO()
+        self._run(stdout, stderr)
+        self._assert_normal_stdout_stderr_are_empty()
+        self._assert_output(stdout, [('My Suite', 2), ('My Test', 1)])
+        self._assert_output(stderr, [('Hello, world!', 1)])
+        stdout.close(); stderr.close()
+        output = StringIO()
+        self._run(output, output, variable='MESSAGE:Hi, again!')
+        self._assert_normal_stdout_stderr_are_empty()
+        self._assert_output(output, [('My Suite', 2), ('My Test', 1),
+ ('Hi, again!', 1), ('Hello, world!', 0)])
+        output.close()
+        self._run(variable='MESSAGE:Last hi!')
+ self._assert_output(sys.__stdout__, [('My Suite', 2), ('My Test', 1)]) + self._assert_output(sys.__stderr__, [('Last hi!', 1), ('Hello, world!', 0)])
+
     def _run(self, stdout=None, stderr=None, **options):
         suite = TestSuite(name='My Suite')
         suite.variables.create('${MESSAGE}', 'Hello, world!')
@@ -197,5 +214,6 @@
     def _assert_normal_stdout_stderr_are_empty(self):
         self._assert_outputs()

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

==============================================================================
Revision: e904d0491d2b
Branch:   default
Author:   Pekka Klärck
Date:     Mon Dec 23 13:49:22 2013 UTC
Log: LOGGER: allow instantiating w/o registering console logger, updated console logger disabling tests to use new unregister_console_logger method
http://code.google.com/p/robotframework/source/detail?r=e904d0491d2b

Modified:
 /src/robot/output/logger.py
 /utest/output/test_logger.py

=======================================
--- /src/robot/output/logger.py Mon Dec 23 13:43:57 2013 UTC
+++ /src/robot/output/logger.py Mon Dec 23 13:49:22 2013 UTC
@@ -34,12 +34,13 @@
     to get errors/warnings into console is using 'register_console_logger'.
     """

-    def __init__(self):
+    def __init__(self, register_console_logger=True):
         self._loggers = LoggerCollection()
         self._message_cache = []
         self._console_logger = None
         self._started_keywords = 0
-        self.register_console_logger()
+        if register_console_logger:
+            self.register_console_logger()

     def disable_message_cache(self):
         self._message_cache = None
=======================================
--- /utest/output/test_logger.py        Fri Feb 24 13:50:50 2012 UTC
+++ /utest/output/test_logger.py        Mon Dec 23 13:49:22 2013 UTC
@@ -38,8 +38,7 @@
 class TestLogger(unittest.TestCase):

     def setUp(self):
-        self.logger = Logger()
-        self.logger.disable_automatic_console_logger()
+        self.logger = Logger(register_console_logger=False)

     def test_write_to_one_logger(self):
         logger = LoggerMock(('Hello, world!', 'INFO'))
@@ -143,26 +142,26 @@

     def test_automatic_console_logger_can_be_disabled(self):
         logger = Logger()
-        logger.disable_automatic_console_logger()
+        logger.unregister_console_logger()
         assert_equals(logger._loggers.all_loggers(), [])

def test_automatic_console_logger_can_be_disabled_after_registering_logger(self):
         logger = Logger()
         mock = LoggerMock()
         logger.register_logger(mock)
-        logger.disable_automatic_console_logger()
+        logger.unregister_console_logger()
         self._number_of_registered_loggers_should_be(1, logger)
assert_true(logger._loggers.all_loggers()[0].message.im_class is LoggerMock)

     def test_disabling_automatic_logger_multiple_times_has_no_effect(self):
         logger = Logger()
-        logger.disable_automatic_console_logger()
+        logger.unregister_console_logger()
         self._number_of_registered_loggers_should_be(0, logger)
-        logger.disable_automatic_console_logger()
-        logger.disable_automatic_console_logger()
+        logger.unregister_console_logger()
+        logger.unregister_console_logger()
         self._number_of_registered_loggers_should_be(0, logger)
         logger.register_logger(LoggerMock())
-        logger.disable_automatic_console_logger()
+        logger.unregister_console_logger()
         self._number_of_registered_loggers_should_be(1, logger)

def test_registering_console_logger_disables_automatic_console_logger(self):

--

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