2222import argparse
2323import os
2424import tempfile
25+ try :
26+ from contextlib import redirect_stderr # noqa: H302
27+ except ImportError :
28+ from contextlib import contextmanager # noqa: H302
29+ import sys
30+
31+ @contextmanager
32+ def redirect_stderr (new_target ):
33+ old_target , sys .stderr = sys .stderr , new_target
34+ yield
35+ sys .stderr = old_target
2536
2637try :
2738 import unittest
2839except ImportError :
2940 import unittest2 as unittest
3041
42+ import six
43+
3144from gitlab import cli
3245import gitlab .v4 .cli
3346
@@ -48,9 +61,11 @@ class TestClass(object):
4861 self .assertEqual ("class" , cli .cls_to_what (Class ))
4962
5063 def test_die (self ):
51- with self .assertRaises (SystemExit ) as test :
52- cli .die ("foobar" )
53-
64+ fl = six .StringIO ()
65+ with redirect_stderr (fl ):
66+ with self .assertRaises (SystemExit ) as test :
67+ cli .die ("foobar" )
68+ self .assertEqual (fl .getvalue (), "foobar\n " )
5469 self .assertEqual (test .exception .code , 1 )
5570
5671 def test_parse_value (self ):
@@ -73,8 +88,14 @@ def test_parse_value(self):
7388 self .assertEqual (ret , 'content' )
7489 os .unlink (temp_path )
7590
76- with self .assertRaises (SystemExit ):
77- cli ._parse_value ('@/thisfileprobablydoesntexist' )
91+ fl = six .StringIO ()
92+ with redirect_stderr (fl ):
93+ with self .assertRaises (SystemExit ) as exc :
94+ cli ._parse_value ('@/thisfileprobablydoesntexist' )
95+ self .assertEqual (fl .getvalue (),
96+ "[Errno 2] No such file or directory:"
97+ " '/thisfileprobablydoesntexist'\n " )
98+ self .assertEqual (exc .exception .code , 1 )
7899
79100 def test_base_parser (self ):
80101 parser = cli ._get_base_parser ()
0 commit comments