65 def ValidateOutput(self, stdout, stderr, result):
68 class CallWrapper(object):
70 Small wrapper class to dynamically bind some default arguments
74 def __init__(self, callable, extra_args={}):
75 self.callable = callable
76 self.extra_args = extra_args
80 from inspect
import getargspec
82 self.args_order = getargspec(callable)[0]
88 for param
in inspect.signature(callable).parameters.values()
89 if param.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD
93 if self.args_order[0] ==
"self":
94 del self.args_order[0]
96 def __call__(self, *args, **kwargs):
98 positional = self.args_order[: len(args)]
100 kwargs = dict(kwargs)
101 for a
in self.extra_args:
104 if a
not in positional
and a
not in kwargs:
105 kwargs[a] = self.extra_args[a]
106 return self.callable(*args, **kwargs)
109 stdout_ref = self._expandReferenceFileName(self.reference)
110 stderr_ref = self._expandReferenceFileName(self.error_reference)
116 "causes": self.causes,
117 "reference": stdout_ref,
118 "error_reference": stderr_ref,
119 "findReferenceBlock": CallWrapper(
120 self.findReferenceBlock,
121 {
"stdout": stdout,
"result": result,
"causes": self.causes},
123 "validateWithReference": CallWrapper(
124 self.validateWithReference,
129 "causes": self.causes,
132 "validateJSONWithReference": CallWrapper(
133 self.validateJSONWithReference,
136 "causes": self.causes,
139 "countErrorLines": CallWrapper(
140 self.countErrorLines,
141 {
"stdout": stdout,
"result": result,
"causes": self.causes},
143 "checkTTreesSummaries": CallWrapper(
144 self.CheckTTreesSummaries,
145 {
"stdout": stdout,
"result": result,
"causes": self.causes},
147 "checkHistosSummaries": CallWrapper(
148 self.CheckHistosSummaries,
149 {
"stdout": stdout,
"result": result,
"causes": self.causes},
153 exec(self.validator, globals(), exported_symbols)
154 return result, self.causes
156 return super(QMTTest, self).ValidateOutput(stdout, stderr, result)