22
22
import argparse
23
23
import os
24
24
import 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
25
36
26
37
try :
27
38
import unittest
28
39
except ImportError :
29
40
import unittest2 as unittest
30
41
42
+ import six
43
+
31
44
from gitlab import cli
32
45
import gitlab .v4 .cli
33
46
@@ -48,9 +61,11 @@ class TestClass(object):
48
61
self .assertEqual ("class" , cli .cls_to_what (Class ))
49
62
50
63
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 " )
54
69
self .assertEqual (test .exception .code , 1 )
55
70
56
71
def test_parse_value (self ):
@@ -73,8 +88,14 @@ def test_parse_value(self):
73
88
self .assertEqual (ret , 'content' )
74
89
os .unlink (temp_path )
75
90
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 )
78
99
79
100
def test_base_parser (self ):
80
101
parser = cli ._get_base_parser ()
0 commit comments