4
4
from textwrap import dedent
5
5
from pymake import main , PymakeKeyError , PymakeTypeError
6
6
7
+ dn = path .dirname
8
+ fname = path .join (dn (dn (dn (path .abspath (__file__ )))),
9
+ "examples" , "Makefile" ).replace ('\\ ' , '/' )
10
+
7
11
8
12
def _sh (* cmd , ** kwargs ):
9
13
return subprocess .Popen (cmd , stdout = subprocess .PIPE ,
10
14
** kwargs ).communicate ()[0 ].decode ('utf-8' )
11
15
12
16
13
- # WARNING: this should be the last test as it messes with sys.stdin, argv
14
17
def test_main ():
15
18
"""Test execution"""
16
- dn = path .dirname
17
- fname = path .join (dn (dn (dn (path .abspath (__file__ )))),
18
- "examples" , "Makefile" ).replace ('\\ ' , '/' )
19
19
res = _sh (sys .executable , '-c' , dedent ('''\
20
20
from pymake import main; import sys
21
21
sys.argv = ["", "-f", "''' + fname + '''"]
@@ -27,12 +27,15 @@ def test_main():
27
27
assert ("hello world" in res )
28
28
29
29
# semi-fake test which gets coverage:
30
- _SYS = sys .stdin , sys .argv
31
-
30
+ _SYS = sys .argv
32
31
sys .argv = ['' , '-f' , fname ]
33
32
main ()
33
+ sys .argv = _SYS
34
+
34
35
36
+ def test_invalid_alias ():
35
37
"""Test invalid alias"""
38
+ _SYS = sys .argv
36
39
sys .argv = ['' , '-f' , fname , 'foo' ]
37
40
try :
38
41
main ()
@@ -41,21 +44,37 @@ def test_main():
41
44
raise
42
45
else :
43
46
raise PymakeKeyError ('foo' )
47
+ sys .argv = _SYS
44
48
49
+
50
+ def test_multi_target ():
45
51
"""Test various targets"""
52
+ _SYS = sys .argv
46
53
for trg in ['circle' , 'empty' , 'one' ]:
47
54
sys .argv = ['' , '-s' , '-f' , fname , trg ]
48
55
main ()
56
+ sys .argv = _SYS
57
+
49
58
59
+ def test_print_data_base ():
50
60
"""Test --print-data-base with errors"""
61
+ _SYS = sys .argv
51
62
sys .argv = ['' , '-s' , '-p' , '-f' , fname , 'err' ]
52
63
main ()
64
+ sys .argv = _SYS
53
65
66
+
67
+ def test_just_print ():
54
68
"""Test --just-print with errors"""
69
+ _SYS = sys .argv
55
70
sys .argv = ['' , '-s' , '-n' , '-f' , fname , 'err' ]
56
71
main ()
72
+ sys .argv = _SYS
73
+
57
74
75
+ def test_ignore_errors ():
58
76
"""Test --ignore-errors"""
77
+ _SYS = sys .argv
59
78
sys .argv = ['' , '-s' , '-f' , fname , 'err' ]
60
79
try :
61
80
main ()
@@ -66,14 +85,16 @@ def test_main():
66
85
67
86
sys .argv = ['' , '-s' , '-i' , '-f' , fname , 'err' ]
68
87
main ()
88
+ sys .argv = _SYS
69
89
90
+
91
+ def test_help_version ():
70
92
"""Test help and version"""
93
+ _SYS = sys .argv
71
94
for i in ('-h' , '--help' , '-v' , '--version' ):
72
95
sys .argv = ['' , i ]
73
96
try :
74
97
main ()
75
98
except SystemExit :
76
99
pass
77
-
78
- # clean up
79
- sys .stdin , sys .argv = _SYS
100
+ sys .argv = _SYS
0 commit comments