mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Make sure warnings are not shown if a property is executed, fixes #1383
This commit is contained in:
@@ -4,6 +4,7 @@ import types
|
||||
import sys
|
||||
import operator as op
|
||||
from collections import namedtuple
|
||||
import warnings
|
||||
|
||||
from jedi._compatibility import unicode, is_py3, builtins, \
|
||||
py_version, force_unicode
|
||||
@@ -350,6 +351,10 @@ class DirectObjectAccess(object):
|
||||
|
||||
def getattr_paths(self, name, default=_sentinel):
|
||||
try:
|
||||
# Make sure no warnings are printed here, this is autocompletion,
|
||||
# warnings should not be shown. See also GH #1383.
|
||||
with warnings.catch_warnings(record=True):
|
||||
warnings.simplefilter("always")
|
||||
return_obj = getattr(self._obj, name)
|
||||
except Exception as e:
|
||||
if default is _sentinel:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Tests of ``jedi.api.Interpreter``.
|
||||
"""
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -197,6 +198,20 @@ def test_getitem_side_effects():
|
||||
_assert_interpreter_complete('foo["asdf"].upper', locals(), ['upper'])
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stacklevel', [1, 2])
|
||||
@pytest.mark.filterwarnings("error")
|
||||
def test_property_warnings(stacklevel):
|
||||
class Foo3:
|
||||
@property
|
||||
def prop(self):
|
||||
# Possible side effects here, should therefore not call this.
|
||||
warnings.warn("foo", DeprecationWarning, stacklevel=stacklevel)
|
||||
return ''
|
||||
|
||||
foo = Foo3()
|
||||
_assert_interpreter_complete('foo.prop.uppe', locals(), ['upper'])
|
||||
|
||||
|
||||
@pytest.fixture(params=[False, True])
|
||||
def allow_descriptor_access_or_not(request, monkeypatch):
|
||||
monkeypatch.setattr(jedi.Interpreter, '_allow_descriptor_getattr_default', request.param)
|
||||
|
||||
Reference in New Issue
Block a user