annotate test/pytest_patcher.py @ 8531:4fe0d14cf915

chore(build): bump actions/upload-artifact from 6.0.0 to 7.0.0. #84
author John Rouillard <rouilj@ieee.org>
date Tue, 10 Mar 2026 22:52:54 -0400
parents 1c94afabb2cb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5109
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
1 """
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
2 The following code was taken from:
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
3
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
4 https://github.com/pytest-dev/pytest/issues/568#issuecomment-216569420
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
5
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
6 to resolve a bug with using pytest.mark.skip(). Once the bug is resolved in
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
7 pytest this file can be removed along with all the wrapper mark_class()
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
8 references in the other test files.
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
9 """
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
10 import types
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
11
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
12
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
13 def mark_class(marker):
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
14 '''Workaround for https://github.com/pytest-dev/pytest/issues/568'''
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
15 def copy_func(f):
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
16 try:
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
17 return types.FunctionType(f.__code__, f.__globals__,
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
18 name=f.__name__, argdefs=f.__defaults__,
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
19 closure=f.__closure__)
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
20 except AttributeError:
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
21 return types.FunctionType(f.func_code, f.func_globals,
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
22 name=f.func_name,
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
23 argdefs=f.func_defaults,
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
24 closure=f.func_closure)
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
25
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
26 def mark(cls):
5111
1c94afabb2cb Fix mark_class decorator to work in all cases
John Kristensen <john@jerrykan.com>
parents: 5109
diff changeset
27 if isinstance(cls, types.FunctionType):
1c94afabb2cb Fix mark_class decorator to work in all cases
John Kristensen <john@jerrykan.com>
parents: 5109
diff changeset
28 return marker(copy_func(cls))
1c94afabb2cb Fix mark_class decorator to work in all cases
John Kristensen <john@jerrykan.com>
parents: 5109
diff changeset
29
5109
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
30 for method in dir(cls):
5111
1c94afabb2cb Fix mark_class decorator to work in all cases
John Kristensen <john@jerrykan.com>
parents: 5109
diff changeset
31 if method.startswith('test'):
5109
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
32 f = copy_func(getattr(cls, method))
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
33 setattr(cls, method, marker(f))
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
34 return cls
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents:
diff changeset
35 return mark

Roundup Issue Tracker: http://roundup-tracker.org/