Return similarly named, non-submodule modules

In our setuptools integration command, we were attempting to avoid
checking each submodule in the packages list. This was done without
recognizing that two modules may start with the same prefix, e.g.,

- foo
- foo_bar
- foo_biz

In this case, we only ever checked ``foo``. By appending a '.' to the
end of each package name, we avoid this since we only care about
deduplicating submodules, e.g.,

- foo
- foo.sub
- foo.sub.sub

Closes #295
This commit is contained in:
Ian Cordasco 2017-01-22 15:00:48 -06:00
parent c1f9dc7241
commit 9f8dfd924a
No known key found for this signature in database
GPG key ID: 656D3395E4A9791A
2 changed files with 35 additions and 1 deletions

View file

@ -66,7 +66,7 @@ class Flake8(setuptools.Command):
if package_directory.startswith(seen_package_directories):
continue
seen_package_directories += (package_directory,)
seen_package_directories += (package_directory + '.',)
yield package_directory
def module_files(self):

View file

@ -0,0 +1,34 @@
"""Module containing tests for the setuptools command integration."""
import pytest
from setuptools import dist
from flake8.main import setuptools_command
@pytest.fixture
def distribution():
"""Create a setuptools Distribution object."""
return dist.Distribution({
'name': 'foo',
'packages': [
'foo',
'foo.bar',
'foo_biz',
],
})
@pytest.fixture
def command(distribution):
"""Create an instance of Flake8's setuptools command."""
return setuptools_command.Flake8(distribution)
def test_package_files_removes_submodules(command):
"""Verify that we collect all package files."""
package_files = list(command.package_files())
assert sorted(package_files) == [
'foo',
'foo_biz',
]