Merge pull request #6202 from linw1995/fix_getmodpath

Fix incorrect result of getmodpath method.
This commit is contained in:
Anthony Sottile 2019-11-18 15:14:52 -08:00 committed by GitHub
commit eeeb19626b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 4 deletions

View File

@ -262,6 +262,7 @@ Virgil Dupras
Vitaly Lashmanov Vitaly Lashmanov
Vlad Dragos Vlad Dragos
Volodymyr Piskun Volodymyr Piskun
Wei Lin
Wil Cooley Wil Cooley
William Lee William Lee
Wim Glenn Wim Glenn

View File

@ -0,0 +1 @@
Fix incorrect result of ``getmodpath`` method.

View File

@ -285,8 +285,7 @@ class PyobjMixin(PyobjContext):
break break
parts.append(name) parts.append(name)
parts.reverse() parts.reverse()
s = ".".join(parts) return ".".join(parts)
return s.replace(".[", "[")
def reportinfo(self): def reportinfo(self):
# XXX caching? # XXX caching?

View File

@ -685,6 +685,8 @@ class Test_genitems:
def test_example_items1(self, testdir): def test_example_items1(self, testdir):
p = testdir.makepyfile( p = testdir.makepyfile(
""" """
import pytest
def testone(): def testone():
pass pass
@ -693,19 +695,24 @@ class Test_genitems:
pass pass
class TestY(TestX): class TestY(TestX):
pass @pytest.mark.parametrize("arg0", [".["])
def testmethod_two(self, arg0):
pass
""" """
) )
items, reprec = testdir.inline_genitems(p) items, reprec = testdir.inline_genitems(p)
assert len(items) == 3 assert len(items) == 4
assert items[0].name == "testone" assert items[0].name == "testone"
assert items[1].name == "testmethod_one" assert items[1].name == "testmethod_one"
assert items[2].name == "testmethod_one" assert items[2].name == "testmethod_one"
assert items[3].name == "testmethod_two[.[]"
# let's also test getmodpath here # let's also test getmodpath here
assert items[0].getmodpath() == "testone" assert items[0].getmodpath() == "testone"
assert items[1].getmodpath() == "TestX.testmethod_one" assert items[1].getmodpath() == "TestX.testmethod_one"
assert items[2].getmodpath() == "TestY.testmethod_one" assert items[2].getmodpath() == "TestY.testmethod_one"
# PR #6202: Fix incorrect result of getmodpath method. (Resolves issue #6189)
assert items[3].getmodpath() == "TestY.testmethod_two[.[]"
s = items[0].getmodpath(stopatmodule=False) s = items[0].getmodpath(stopatmodule=False)
assert s.endswith("test_example_items1.testone") assert s.endswith("test_example_items1.testone")