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.