11#!/usr/bin/env python
22
33import unittest
4+ import sys
45
56from robotremoteserver import RobotRemoteServer
67
@@ -14,16 +15,24 @@ def passing_keyword(self):
1415 pass
1516 def failing_keyword (self , exception , message = 'Hello, world!' ):
1617 raise exception (message )
18+ def logging_keyword (self , stdout , stderr ):
19+ if stdout :
20+ sys .stdout .write (stdout )
21+ if stderr :
22+ sys .stderr .write (stderr )
23+ self .streams = (sys .stdout , sys .stderr )
1724 def _not_included (self ):
1825 """Starts with an underscore"""
1926 not_included = "Not a method or function"
2027 not_included_2 = NonServingRemoteServer # Callable but not method/function
2128
2229class HybridLibrary :
30+ def __init__ (self ):
31+ self .library = StaticLibrary ()
2332 def get_keyword_names (self ):
24- return [n for n in dir (StaticLibrary ) if n .endswith ('_keyword' )]
33+ return [n for n in dir (self . library ) if n .endswith ('_keyword' )]
2534 def __getattr__ (self , name ):
26- return getattr (StaticLibrary () , name )
35+ return getattr (self . library , name )
2736 def not_included (self ):
2837 """Not returned by get_keyword_names"""
2938
@@ -36,8 +45,8 @@ def setUp(self):
3645
3746 def test_get_keyword_names (self ):
3847 self .assertEquals (self .server .get_keyword_names (),
39- ['failing_keyword' , 'passing_keyword ' ,
40- 'stop_remote_server' ])
48+ ['failing_keyword' , 'logging_keyword ' ,
49+ 'passing_keyword' , ' stop_remote_server' ])
4150
4251 def test_run_passing_keyword (self ):
4352 self .assertEquals (self .server .run_keyword ('passing_keyword' , []),
@@ -61,6 +70,21 @@ def test_return_only_exception_name_if_no_error_message(self):
6170 self .assertEquals (ret ['status' ], 'FAIL' )
6271 self .assertEquals (ret ['error' ], exception .__name__ )
6372
73+ def test_logging_to_stdout (self ):
74+ ret = self .server .run_keyword ('logging_keyword' , ['out' , '' ])
75+ self .assertEquals (ret ['output' ], 'out' )
76+ self .assertTrue (all (s .closed for s in self .library .streams ))
77+
78+ def test_logging_to_stderr (self ):
79+ ret = self .server .run_keyword ('logging_keyword' , ['' , 'err' ])
80+ self .assertEquals (ret ['output' ], 'err' )
81+ self .assertTrue (all (s .closed for s in self .library .streams ))
82+
83+ def test_logging_to_stdout_and_stderr (self ):
84+ ret = self .server .run_keyword ('logging_keyword' , ['out' , 'err' ])
85+ self .assertEquals (ret ['output' ], 'out\n *INFO* err' )
86+ self .assertTrue (all (s .closed for s in self .library .streams ))
87+
6488
6589class TestHybridApi (TestStaticApi ):
6690 library = HybridLibrary ()
0 commit comments