Пример #1
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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())
Пример #6
0
    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