MCPcopy
hub / github.com/pytest-dev/pytest / Checkers

Class Checkers

src/_pytest/_py/path.py:41–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39
40
41class Checkers:
42 _depend_on_existence = "exists", "link", "dir", "file"
43
44 def __init__(self, path):
45 self.path = path
46
47 def dotfile(self):
48 return self.path.basename.startswith(".")
49
50 def ext(self, arg):
51 if not arg.startswith("."):
52 arg = "." + arg
53 return self.path.ext == arg
54
55 def basename(self, arg):
56 return self.path.basename == arg
57
58 def basestarts(self, arg):
59 return self.path.basename.startswith(arg)
60
61 def relto(self, arg):
62 return self.path.relto(arg)
63
64 def fnmatch(self, arg):
65 return self.path.fnmatch(arg)
66
67 def endswith(self, arg):
68 return str(self.path).endswith(arg)
69
70 def _evaluate(self, kw):
71 from .._code.source import getrawcode
72
73 for name, value in kw.items():
74 invert = False
75 meth = None
76 try:
77 meth = getattr(self, name)
78 except AttributeError:
79 if name[:3] == "not":
80 invert = True
81 try:
82 meth = getattr(self, name[3:])
83 except AttributeError:
84 pass
85 if meth is None:
86 raise TypeError(f"no {name!r} checker available for {self.path!r}")
87 try:
88 if getrawcode(meth).co_argcount > 1:
89 if (not meth(value)) ^ invert:
90 return False
91 else:
92 if bool(value) ^ bool(meth()) ^ invert:
93 return False
94 except (error.ENOENT, error.ENOTDIR, error.EBUSY):
95 # EBUSY feels not entirely correct,
96 # but its kind of necessary since ENOMEDIUM
97 # is not accessible in python
98 for name in self._depend_on_existence:

Callers 1

checkMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected