1import pytest 2 3from piptools.repositories import LocalRequirementsRepository 4from piptools.utils import key_from_ireq 5 6 7@pytest.mark.parametrize( 8 ("input", "pins", "expected"), 9 ( 10 (tup) 11 for tup in [ 12 # Add Flask to an existing requirements.in, using --no-upgrade 13 ( 14 ["flask", "jinja2", "werkzeug"], 15 [ 16 # The requirements.txt from a previous round 17 "jinja2==2.7.3", 18 "markupsafe==0.23", 19 "werkzeug==0.6", 20 ], 21 [ 22 # Add flask and upgrade werkzeug from incompatible 0.6 23 "flask==0.10.1", 24 "itsdangerous==0.24 (from flask==0.10.1)", 25 "werkzeug==0.10.4", 26 # Other requirements are unchanged from 27 # the original requirements.txt 28 "jinja2==2.7.3", 29 "markupsafe==0.23 (from jinja2==2.7.3)", 30 ], 31 ) 32 ] 33 ), 34) 35def test_no_upgrades(base_resolver, repository, from_line, input, pins, expected): 36 input = [from_line(line) for line in input] 37 existing_pins = {} 38 for line in pins: 39 ireq = from_line(line) 40 existing_pins[key_from_ireq(ireq)] = ireq 41 local_repository = LocalRequirementsRepository(existing_pins, repository) 42 output = base_resolver( 43 input, prereleases=False, repository=local_repository 44 ).resolve() 45 output = {str(line) for line in output} 46 assert output == {str(line) for line in expected} 47