def _get_fnp_save( self, exp_got: Union["got", "exp"], options: "LazyChecker", suffix: Optional[str], ): """ get the save path """ try: subber = Subber( options, { "filename": self.lazy_filename, "suffix": suffix, "classname": self.__class__.__name__, "exp_got": exp_got, }, # the lower priority the TestCase instance the less probability # of name clashes self, ) # calculating the directory path t_dirname = self._lazy_get_t_dirname(exp_got, subber) if t_dirname is None: return None _litd = t_dirname.split(os.path.sep) _litd = self._handle_dirname_extras(_litd) _lid = ["/"] + [fill_template(t_, subber) for t_ in _litd] dirname = os.path.join(*_lid) # calculating the filename t_basename = self.T_FILENAME _litb = t_basename.split() _lib = [fill_template(t_, subber) for t_ in _litb] basename = ".".join([i_ for i_ in _lib if i_]) basename = basename.replace(" ", "_") basename = basename.replace("/", "_") if not os.path.isdir(dirname): os.makedirs(dirname) return os.path.join(dirname, basename) # pragma: no cover pylint: disable=unused-variable, broad-except except (Exception, ) as e: if cpdb(): pdb.set_trace() raise
def test(self, testee, exp, got, message, name=None): try: if message is None: message = fill_template( "%(name)s exp:%(exp)s<>%(got)s:got", locals(), self, {"name": name or self}, ) if isinstance(exp, (int, str)): exp = [exp] exp = [int(exp) for exp in exp] got = int(got) testee.assertTrue(got in exp, message) except (AssertionError, ) as e: # pragma: no cover raise except (Exception, ) as e: # pragma: no cover pylint: disable=unused-variable, broad-except if cpdb(): pdb.set_trace() raise
def test(self, testee, exp, got, message, name=None): try: if exp is undefined: raise ValueError("exp is undefined") if message is None: message = fill_template( "%(name)s exp:%(exp)s<>%(got)s:got", locals(), self, {"name": name or self}, ) # correcting for unspecified scalars if not isinstance(exp, list) and isinstance(got, list) and len(got) == 1: got = first(got) testee.assertEqual(exp, got, message) # except (AssertionError,) as e: # pragma: no cover # raise except ( Exception, ) as e: # pragma: no cover pylint: disable=unused-variable, broad-except if cpdb(): pdb.set_trace() raise
def test_regex(self, testee, exp, got, message, name=None): try: if message is None: message = fill_template( "%(name)s pattern:%(pattern)s:does not match:%(got)s:got", locals(), exp, self, {"name": name or self}, ) if not isinstance(got, (list, set)): testee.assertTrue(exp.search(str(got)), message) else: for igot in got: hit = exp.search(str(igot)) if hit is None: message = f"validation:{name or ''} failure: data:'{str(igot)}': does not match regex:'{exp.pattern}':" testee.fail(message) except ( Exception, ) as e: # pragma: no cover pylint: disable=unused-variable, broad-except if cpdb(): pdb.set_trace() raise
def __repr__(self): try: filters = sorted(self.filters.keys()) # pragma: no cover pylint: disable=unused-variable except (Exception, ) as e: filters = self.filters sub = dict( id_="id=%s" % id(self) if verbose else "", name=self.__class__.__name__, filters=filters, ) tmpl = "%(name)s[%(id_)s] filters=%(filters)s" # % (sub, self) return fill_template(tmpl, sub, self, RescueDict())
def check(self, name: str, testee: "LazyMixin", exp: Any, sources: dict): """ """ try: source_ = self.get_source(testee, **sources) try: got = self.get_value(source_) # pragma: no cover pylint: disable=unused-variable except (KeyError, AttributeError) as e: logger.warning( "%s.validation error: could not access data in source %s" % (self, e) ) # pdb.set_trace() got = undefined t_message = getattr(self, "t_message", None) message = ( fill_template(t_message, locals(), testee, self) if t_message else None ) if isinstance(exp, type_regex_hack): self.test_regex(testee, exp, got, message, name=name) elif not callable(exp): self.test(testee, exp, got, message, name=name) return got else: exp(testee=testee, got=got, validator=self) return got except (AssertionError,) as e: # pragma: no cover raise except ( Exception, ) as e: # pragma: no cover pylint: disable=unused-variable, broad-except if cpdb(): pdb.set_trace() raise