move nodekeywords to the mark structures
This commit is contained in:
parent
c9b9d796e6
commit
45b6b7df92
|
@ -1,4 +1,4 @@
|
||||||
from collections import namedtuple
|
from collections import namedtuple, MutableMapping as MappingMixin
|
||||||
import warnings
|
import warnings
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
import inspect
|
import inspect
|
||||||
|
@ -328,3 +328,39 @@ class MarkGenerator(object):
|
||||||
|
|
||||||
|
|
||||||
MARK_GEN = MarkGenerator()
|
MARK_GEN = MarkGenerator()
|
||||||
|
|
||||||
|
|
||||||
|
class NodeKeywords(MappingMixin):
|
||||||
|
def __init__(self, node):
|
||||||
|
self.node = node
|
||||||
|
self.parent = node.parent
|
||||||
|
self._markers = {node.name: True}
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
try:
|
||||||
|
return self._markers[key]
|
||||||
|
except KeyError:
|
||||||
|
if self.parent is None:
|
||||||
|
raise
|
||||||
|
return self.parent.keywords[key]
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
self._markers[key] = value
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
raise ValueError("cannot delete key in keywords dict")
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
seen = set(self._markers)
|
||||||
|
if self.parent is not None:
|
||||||
|
seen.update(self.parent.keywords)
|
||||||
|
return iter(seen)
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.__iter__())
|
||||||
|
|
||||||
|
def keys(self):
|
||||||
|
return list(self)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<NodeKeywords for node %s>" % (self.node, )
|
|
@ -1,5 +1,4 @@
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
from collections import MutableMapping as MappingMixin
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
@ -7,7 +6,7 @@ import py
|
||||||
import attr
|
import attr
|
||||||
|
|
||||||
import _pytest
|
import _pytest
|
||||||
|
from _pytest.mark.structures import NodeKeywords
|
||||||
|
|
||||||
SEP = "/"
|
SEP = "/"
|
||||||
|
|
||||||
|
@ -66,42 +65,6 @@ class _CompatProperty(object):
|
||||||
return getattr(__import__('pytest'), self.name)
|
return getattr(__import__('pytest'), self.name)
|
||||||
|
|
||||||
|
|
||||||
class NodeKeywords(MappingMixin):
|
|
||||||
def __init__(self, node):
|
|
||||||
self.node = node
|
|
||||||
self.parent = node.parent
|
|
||||||
self._markers = {node.name: True}
|
|
||||||
|
|
||||||
def __getitem__(self, key):
|
|
||||||
try:
|
|
||||||
return self._markers[key]
|
|
||||||
except KeyError:
|
|
||||||
if self.parent is None:
|
|
||||||
raise
|
|
||||||
return self.parent.keywords[key]
|
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
|
||||||
self._markers[key] = value
|
|
||||||
|
|
||||||
def __delitem__(self, key):
|
|
||||||
raise ValueError("cannot delete key in keywords dict")
|
|
||||||
|
|
||||||
def __iter__(self):
|
|
||||||
seen = set(self._markers)
|
|
||||||
if self.parent is not None:
|
|
||||||
seen.update(self.parent.keywords)
|
|
||||||
return iter(seen)
|
|
||||||
|
|
||||||
def __len__(self):
|
|
||||||
return len(self.__iter__())
|
|
||||||
|
|
||||||
def keys(self):
|
|
||||||
return list(self)
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return "<NodeKeywords for node %s>" % (self.node, )
|
|
||||||
|
|
||||||
|
|
||||||
class Node(object):
|
class Node(object):
|
||||||
""" base class for Collector and Item the test collection tree.
|
""" base class for Collector and Item the test collection tree.
|
||||||
Collector subclasses have children, Items are terminal nodes."""
|
Collector subclasses have children, Items are terminal nodes."""
|
||||||
|
|
Loading…
Reference in New Issue