On Wed, Jul 20, 2016 at 6:31 PM Floris Bruynooghe [email protected]
<http://mailto:[email protected]> wrote:

On 20 July 2016 at 21:50, holger krekel <[email protected]> wrote:
> > On Wed, Jul 20, 2016 at 16:15 +0000, Bruno Oliveira wrote:
> >> Hi Ronny,
> >>
> >> AFAIK there’s no simple way to workaround it, correct? For example, I
> >> believe there might be code out there using pytest.config as a
> conditional
> >> in a pytest.mark.skipif decorator. In this case the change is not a
> simple
> >> find/replace.
> >
> > You can use string-evaluation to get access to pytest's config:
> >
> >     @pytest.mark.skipif("config.option.something == 'none'")
> >     ...
>
> I'm probably with Bruno on this, seems like we might break too many test
> suites.
>
I took a look and it seems the code involved is just this piece in main.py:

def pytest_configure(config):
    pytest.config = config # compatibiltiy

If that’s the case, I would rather officially deprecate it and keep it
around a little more since those two lines are not really hurting
maintenance. :).

Any ideas on how to only issue a warning if the object is actually
accessed? I thought something like this could do the trick:

    class _DeprecatedConfig(object):

        def __init__(self, config):
            self.__config = config
            self.__warned = False

        def __getattr__(self, attr):
            result = getattr(self, self.__config)
            if not self.__warned:
                self.__config.warn('pytest.config usage has been
deprecated and will be removed in 4.0')
                self.__warned = True
            return result

    def pytest_configure(config):
        pytest.config = _DeprecatedConfig(config)

What do you guys think?
​
_______________________________________________
pytest-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pytest-dev

Reply via email to