@@ -26,7 +26,18 @@ def extension_module(name):
26
26
if extension_module (n ):
27
27
extension_module_names .extend ([f'{ n } .{ i } ' for i in getattr (function_stubs , n ).__all__ ])
28
28
29
- all_names = function_stubs .__all__ + extension_module_names
29
+
30
+ params = []
31
+ for name in function_stubs .__all__ :
32
+ marks = []
33
+ if extension_module (name ):
34
+ marks .append (pytest .mark .xp_extension (name ))
35
+ params .append (pytest .param (name , marks = marks ))
36
+ for name in extension_module_names :
37
+ ext = name .split ('.' )[0 ]
38
+ mark = pytest .mark .xp_extension (ext )
39
+ params .append (pytest .param (name , marks = [mark ]))
40
+
30
41
31
42
def array_method (name ):
32
43
return stub_module (name ) == 'array_object'
@@ -130,7 +141,7 @@ def example_argument(arg, func_name, dtype):
130
141
else :
131
142
raise RuntimeError (f"Don't know how to test argument { arg } . Please update test_signatures.py" )
132
143
133
- @pytest .mark .parametrize ('name' , all_names )
144
+ @pytest .mark .parametrize ('name' , params )
134
145
def test_has_names (name ):
135
146
if extension_module (name ):
136
147
assert hasattr (mod , name ), f'{ mod_name } is missing the { name } extension'
@@ -146,7 +157,7 @@ def test_has_names(name):
146
157
else :
147
158
assert hasattr (mod , name ), f"{ mod_name } is missing the { function_category (name )} function { name } ()"
148
159
149
- @pytest .mark .parametrize ('name' , all_names )
160
+ @pytest .mark .parametrize ('name' , params )
150
161
def test_function_positional_args (name ):
151
162
# Note: We can't actually test that positional arguments are
152
163
# positional-only, as that would require knowing the argument name and
@@ -223,7 +234,7 @@ def test_function_positional_args(name):
223
234
# NumPy ufuncs raise ValueError instead of TypeError
224
235
raises ((TypeError , ValueError ), lambda : mod_func (* args [:n ]), f"{ name } () should not accept { n } positional arguments" )
225
236
226
- @pytest .mark .parametrize ('name' , all_names )
237
+ @pytest .mark .parametrize ('name' , params )
227
238
def test_function_keyword_only_args (name ):
228
239
if extension_module (name ):
229
240
return
0 commit comments