1
- from .model import apply_mark
1
+ from .model import apply_mark , MarkDecorator
2
2
3
3
4
4
def _marked (func , mark ):
@@ -13,19 +13,22 @@ def _marked(func, mark):
13
13
return mark .args == func_mark .args and mark .kwargs == func_mark .kwargs
14
14
15
15
16
+ def get_marks (obj ):
17
+ try :
18
+ maybe_mark = obj .pytestmark
19
+ except AttributeError :
20
+ return []
21
+ else :
22
+ if isinstance (maybe_mark , list ):
23
+ return maybe_mark
24
+ elif isinstance (maybe_mark , MarkDecorator ):
25
+ return [maybe_mark .mark ]
26
+ else :
27
+ raise TypeError ('%r is not a mark' % (maybe_mark ,))
28
+
29
+
16
30
def transfer_markers (funcobj , cls , mod ):
17
- # XXX this should rather be code in the mark plugin or the mark
18
- # plugin should merge with the python plugin.
19
31
for holder in (cls , mod ):
20
- try :
21
- pytestmark = holder .pytestmark
22
- except AttributeError :
23
- continue
24
- if isinstance (pytestmark , list ):
25
- for mark in pytestmark :
26
-
27
- if not _marked (funcobj , mark ):
28
- apply_mark (mark = mark , obj = funcobj )
29
- else :
30
- if not _marked (funcobj , pytestmark ):
31
- apply_mark (mark = pytestmark , obj = funcobj )
32
+ for mark in get_marks (holder ):
33
+ if not _marked (funcobj , mark ):
34
+ apply_mark (mark = mark , obj = funcobj )
0 commit comments