Skip to content

Commit 8eb6c41

Browse files
committed
Take a filename in find_missing_reqs as progress towards removing a bad monkeypatch
1 parent 8c09f5e commit 8eb6c41

File tree

2 files changed

+44
-22
lines changed

2 files changed

+44
-22
lines changed

pip_check_reqs/find_missing_reqs.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
log = logging.getLogger(__name__)
2020

2121

22-
def find_missing_reqs(options):
22+
def find_missing_reqs(options, requirements_filename):
2323
# 1. find files used by imports in the code (as best we can without
2424
# executing)
2525
used_modules = common.find_imported_modules(options)
@@ -58,10 +58,11 @@ def find_missing_reqs(options):
5858

5959
# 4. compare with requirements.txt
6060
explicit = set()
61-
for requirement in parse_requirements('requirements.txt',
62-
session=PipSession()):
63-
import pdb; pdb.set_trace()
64-
log.debug('found requirement: %s', requirement.requirement)
61+
for requirement in parse_requirements(
62+
requirements_filename,
63+
session=PipSession(),
64+
):
65+
log.debug('found requirement: %s', requirement.name)
6566
explicit.add(canonicalize_name(requirement.name))
6667

6768
return [(name, used[name]) for name in used if name not in explicit]
@@ -126,7 +127,11 @@ def main():
126127

127128
log.info('using pip_check_reqs-%s from %s', __version__, __file__)
128129

129-
missing = find_missing_reqs(options)
130+
requirements_filename = 'requirements.txt'
131+
missing = find_missing_reqs(
132+
options=options,
133+
requirements_filename=requirements_filename,
134+
)
130135

131136
if missing:
132137
log.warning('Missing requirements:')

tests/test_find_missing_reqs.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import collections
44
import logging
55
import optparse
6+
from pathlib import Path
67

78
import pytest
89
import pretend
@@ -36,7 +37,7 @@ def parse_args(self):
3637
return FakeOptParse
3738

3839

39-
def test_find_missing_reqs(monkeypatch):
40+
def test_find_missing_reqs(monkeypatch, tmp_path: Path):
4041
imported_modules = dict(spam=common.FoundModule('spam',
4142
'site-spam/spam.py',
4243
[('ham.py', 1)]),
@@ -63,18 +64,15 @@ def test_find_missing_reqs(monkeypatch):
6364
monkeypatch.setattr(find_missing_reqs, 'search_packages_info',
6465
pretend.call_recorder(lambda x: packages_info))
6566

66-
fake_requirements_file_contents = dedent(
67-
"""\
68-
spam
69-
"""
70-
)
71-
FakeReq = collections.namedtuple('FakeReq', [])
72-
requirements = [FakeReq()]
73-
monkeypatch.setattr(
74-
find_missing_reqs, 'parse_requirements',
75-
pretend.call_recorder(lambda a, session=None: requirements))
67+
fake_requirements_file = tmp_path / 'requirements.txt'
68+
fake_requirements_file.write_text('spam')
7669

77-
result = list(find_missing_reqs.find_missing_reqs(None))
70+
result = list(
71+
find_missing_reqs.find_missing_reqs(
72+
options=None,
73+
requirements_filename=str(fake_requirements_file),
74+
)
75+
)
7876
assert result == [('shrub', [imported_modules['shrub']])]
7977

8078

@@ -83,10 +81,25 @@ def test_main_failure(monkeypatch, caplog, fake_opts):
8381

8482
caplog.set_level(logging.WARN)
8583

84+
def fake_find_missing_reqs(options, requirements_filename):
85+
return [
86+
(
87+
'missing',
88+
[
89+
common.FoundModule(
90+
'missing',
91+
'missing.py',
92+
[('location.py', 1)],
93+
)
94+
]
95+
)
96+
]
97+
8698
monkeypatch.setattr(
87-
find_missing_reqs, 'find_missing_reqs', lambda x: [('missing', [
88-
common.FoundModule('missing', 'missing.py', [('location.py', 1)])
89-
])])
99+
find_missing_reqs,
100+
'find_missing_reqs',
101+
fake_find_missing_reqs,
102+
)
90103

91104
with pytest.raises(SystemExit) as excinfo:
92105
find_missing_reqs.main()
@@ -144,7 +157,11 @@ def parse_args(self):
144157

145158
monkeypatch.setattr(optparse, 'OptionParser', FakeOptParse)
146159

147-
monkeypatch.setattr(find_missing_reqs, 'find_missing_reqs', lambda x: [])
160+
monkeypatch.setattr(
161+
find_missing_reqs,
162+
'find_missing_reqs',
163+
lambda options, requirements_filename: [],
164+
)
148165
find_missing_reqs.main()
149166

150167
for event in [(logging.DEBUG, 'debug'), (logging.INFO, 'info'),

0 commit comments

Comments
 (0)