1
1
from __future__ import division , absolute_import , print_function
2
2
3
3
import os
4
+ import shlex
4
5
from tempfile import mkstemp
5
6
6
7
from numpy .testing import *
38
39
'version' : '0.1' , 'name' : 'foo' }
39
40
40
41
10000
class TestLibraryInfo (TestCase ):
42
+
43
+ def assertLexEqual (self , str1 , str2 ):
44
+ # Use shlex.split for comparison because it is above quotes
45
+ # eg: shlex.split("'abc'") == shlex.split("abc")
46
+ return shlex .split (str1 ) == shlex .split (str2 )
47
+
41
48
def test_simple (self ):
42
49
fd , filename = mkstemp ('foo.ini' )
43
50
try :
@@ -48,10 +55,10 @@ def test_simple(self):
48
55
os .close (fd )
49
56
50
57
out = read_config (pkg )
51
- self .assertTrue (out .cflags () == simple_d ['cflags' ])
52
- self .assertTrue (out .libs () == simple_d ['libflags' ])
53
- self .assertTrue (out .name == simple_d ['name' ])
54
- self .assertTrue (out .version == simple_d ['version' ])
58
+ self .assertLexEqual (out .cflags (), simple_d ['cflags' ])
59
+ self .assertLexEqual (out .libs (), simple_d ['libflags' ])
60
+ self .assertEqual (out .name , simple_d ['name' ])
61
+ self .assertEqual (out .version , simple_d ['version' ])
55
62
finally :
56
63
os .remove (filename )
57
64
@@ -65,13 +72,13 @@ def test_simple_variable(self):
65
72
os .close (fd )
66
73
67
74
out = read_config (pkg )
68
- self .assertTrue (out .cflags () == simple_variable_d ['cflags' ])
69
- self .assertTrue (out .libs () == simple_variable_d ['libflags' ])
70
- self .assertTrue (out .name == simple_variable_d ['name' ])
71
- self .assertTrue (out .version == simple_variable_d ['version' ])
75
+ self .assertLexEqual (out .cflags (), simple_variable_d ['cflags' ])
76
+ self .assertLexEqual (out .libs (), simple_variable_d ['libflags' ])
77
+ self .assertEqual (out .name , simple_variable_d ['name' ])
78
+ self .assertEqual (out .version , simple_variable_d ['version' ])
72
79
73
80
out .vars ['prefix' ] = '/Users/david'
74
- self .assertTrue (out .cflags () == '-I/Users/david/include' )
81
+ self .assertLexEqual (out .cflags (), '-I/Users/david/include' )
75
82
finally :
76
83
os .remove (filename )
77
84
@@ -88,6 +95,28 @@ def test_simple_cflags(self):
88
95
self .assertTrue (d ['include_dirs' ] == ['/usr/include' ])
89
96
self .assertTrue (d ['macros' ] == ['FOO' ])
90
97
98
+ def test_quotes_cflags (self ):
99
+ d = parse_flags ("-I'/usr/foo bar/include' -DFOO" )
100
+ self .assertTrue (d ['include_dirs' ] == ['/usr/foo bar/include' ])
101
+ self .assertTrue (d ['macros' ] == ['FOO' ])
102
+
103
+ d = parse_flags ("-I/usr/'foo bar'/include -DFOO" )
104
+ self .assertTrue (d ['include_dirs' ] == ['/usr/foo bar/include' ])
105
+ self .assertTrue (d ['macros' ] == ['FOO' ])
106
+
107
+ d = parse_flags ("'-I/usr/foo bar'/include -DFOO" )
108
+ self .assertTrue (d ['include_dirs' ] == ['/usr/foo bar/include' ])
109
+ self .assertTrue (d ['macros' ] == ['FOO' ])
110
+
111
+ def test_escaping_cflags (self ):
112
+ d = parse_flags ("-I/usr/foo\\ bar/include -DFOO" )
113
+ self .assertTrue (d ['include_dirs' ] == ['/usr/foo bar/include' ])
114
+ self .assertTrue (d ['macros' ] == ['FOO' ])
115
+
116
+ d = parse_flags (r"-I/usr/foo\ bar/include -DFOO" )
117
+ self .assertTrue (d ['include_dirs' ] == ['/usr/foo bar/include' ])
118
+ self .assertTrue (d ['macros' ] == ['FOO' ])
119
+
91
120
def test_simple_lflags (self ):
92
121
d = parse_flags ("-L/usr/lib -lfoo -L/usr/lib -lbar" )
93
122
self .assertTrue (d ['library_dirs' ] == ['/usr/lib' , '/usr/lib' ])
@@ -96,3 +125,31 @@ def test_simple_lflags(self):
96
125
d = parse_flags ("-L /usr/lib -lfoo -L/usr/lib -lbar" )
97
126
self .assertTrue (d ['library_dirs' ] == ['/usr/lib' , '/usr/lib' ])
98
127
self .assertTrue (d ['libraries' ] == ['foo' , 'bar' ])
128
+
129
+ def test_quotes_lflags (self ):
130
+ d = parse_flags ("-L'/usr/foo bar' -lfoo -L/usr/lib -lbar" )
131
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar' , '/usr/lib' ])
132
+
133
+ d = parse_flags ("-L/usr/'foo bar' -lfoo -L/usr/lib -lbar" )
134
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar' , '/usr/lib' ])
135
+
136
+ d = parse_flags ("\" -L/usr/foo bar\" -lfoo -L/usr/lib -lbar" )
137
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar' , '/usr/lib' ])
138
+
139
+ d = parse_flags ("\" -L/usr/foo bar/baz buz\" -lfoo -L/usr/lib -lbar" )
140
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar/baz buz' , '/usr/lib' ])
141
+
142
+ def test_escaping_lflags (self ):
143
+ d = parse_flags ("-L/usr/foo\\ bar -lfoo -L/usr/lib -lbar" )
144
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar' , '/usr/lib' ])
145
+
146
+ d = parse_flags (r"-L/usr/foo\ bar -lfoo -L/usr/lib -lbar" )
147
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo bar' , '/usr/lib' ])
148
+
149
+ def test_odd_characters_lflags (self ):
150
+ # tab in directory name
151
+ d = parse_flags ('-L/usr/"foo\t bar" -lfoo -L/usr/lib -lbar' )
152
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo\t bar' , '/usr/lib' ])
153
+
154
+ d = parse_flags ("-L/usr/foo\\ \t bar -lfoo -L/usr/lib -lbar" )
155
+ self .assertTrue (d ['library_dirs' ] == ['/usr/foo\t bar' , '/usr/lib' ])
0 commit comments