def test_link_sorting_wheels_with_build_tags(self) -> None: """Verify build tags affect sorting.""" links = [ InstallationCandidate( "simplewheel", "2.0", Link("simplewheel-2.0-1-py2.py3-none-any.whl"), ), InstallationCandidate( "simplewheel", "2.0", Link("simplewheel-2.0-py2.py3-none-any.whl"), ), InstallationCandidate( "simplewheel", "1.0", Link("simplewheel-1.0-py2.py3-none-any.whl"), ), ] candidate_evaluator = CandidateEvaluator.create("my-project") sort_key = candidate_evaluator._sort_key results = sorted(links, key=sort_key, reverse=True) results2 = sorted(reversed(links), key=sort_key, reverse=True) assert links == results, results assert links == results2, results2
def test_evaluate_link__match(self, url: str, expected_version: str) -> None: """Test that 'pytest' archives match for 'pytest'""" link = Link(url) evaluator = self.make_test_link_evaluator(formats=["source", "binary"]) actual = evaluator.evaluate_link(link) assert actual == (LinkType.candidate, expected_version)
def test_evaluate_link__substring_fails(self, url: str, expected_msg: str) -> None: """Test that 'pytest<something> archives won't match for 'pytest'.""" link = Link(url) evaluator = self.make_test_link_evaluator(formats=["source", "binary"]) actual = evaluator.evaluate_link(link) assert actual == (False, expected_msg)
def test_link_sorting(self) -> None: """ Test link sorting """ links = [ InstallationCandidate("simple", "2.0", Link("simple-2.0.tar.gz")), InstallationCandidate( "simple", "1.0", Link("simple-1.0-pyT-none-TEST.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0-pyT-TEST-any.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0-pyT-none-any.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0.tar.gz"), ), ] valid_tags = [ Tag("pyT", "none", "TEST"), Tag("pyT", "TEST", "any"), Tag("pyT", "none", "any"), ] specifier = SpecifierSet() evaluator = CandidateEvaluator( "my-project", supported_tags=valid_tags, specifier=specifier, ) sort_key = evaluator._sort_key results = sorted(links, key=sort_key, reverse=True) results2 = sorted(reversed(links), key=sort_key, reverse=True) assert links == results, results assert links == results2, results2
def test_link_sorting(self): """ Test link sorting """ links = [ InstallationCandidate("simple", "2.0", Link('simple-2.0.tar.gz')), InstallationCandidate( "simple", "1.0", Link('simple-1.0-pyT-none-TEST.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0-pyT-TEST-any.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0-pyT-none-any.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0.tar.gz'), ), ] valid_tags = [ Tag('pyT', 'none', 'TEST'), Tag('pyT', 'TEST', 'any'), Tag('pyT', 'none', 'any'), ] specifier = SpecifierSet() evaluator = CandidateEvaluator( 'my-project', supported_tags=valid_tags, specifier=specifier, ) sort_key = evaluator._sort_key results = sorted(links, key=sort_key, reverse=True) results2 = sorted(reversed(links), key=sort_key, reverse=True) assert links == results, results assert links == results2, results2
def test_evaluate_link__substring_fails( self, url: str, link_type: LinkType, fail_reason: str, ) -> None: """Test that 'pytest<something> archives won't match for 'pytest'.""" link = Link(url) evaluator = self.make_test_link_evaluator(formats=["source", "binary"]) actual = evaluator.evaluate_link(link) assert actual == (link_type, fail_reason)
def test_build_tag_is_less_important_than_other_tags(self) -> None: links = [ InstallationCandidate( "simple", "1.0", Link("simple-1.0-1-py3-abi3-linux_x86_64.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0-2-py3-abi3-linux_i386.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0-2-py3-any-none.whl"), ), InstallationCandidate( "simple", "1.0", Link("simple-1.0.tar.gz"), ), ] valid_tags = [ Tag("py3", "abi3", "linux_x86_64"), Tag("py3", "abi3", "linux_i386"), Tag("py3", "any", "none"), ] evaluator = CandidateEvaluator( "my-project", supported_tags=valid_tags, specifier=SpecifierSet(), ) sort_key = evaluator._sort_key results = sorted(links, key=sort_key, reverse=True) results2 = sorted(reversed(links), key=sort_key, reverse=True) assert links == results, results assert links == results2, results2
def test_build_tag_is_less_important_than_other_tags(self): links = [ InstallationCandidate( "simple", "1.0", Link('simple-1.0-1-py3-abi3-linux_x86_64.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0-2-py3-abi3-linux_i386.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0-2-py3-any-none.whl'), ), InstallationCandidate( "simple", '1.0', Link('simple-1.0.tar.gz'), ), ] valid_tags = [ Tag('py3', 'abi3', 'linux_x86_64'), Tag('py3', 'abi3', 'linux_i386'), Tag('py3', 'any', 'none'), ] evaluator = CandidateEvaluator( 'my-project', supported_tags=valid_tags, specifier=SpecifierSet(), ) sort_key = evaluator._sort_key results = sorted(links, key=sort_key, reverse=True) results2 = sorted(reversed(links), key=sort_key, reverse=True) assert links == results, results assert links == results2, results2
def test_process_project_url(data): project_name = 'simple' index_url = data.index_url('simple') project_url = Link('{}/{}'.format(index_url, project_name)) finder = make_test_finder(index_urls=[index_url]) link_evaluator = finder.make_link_evaluator(project_name) actual = finder.process_project_url( project_url, link_evaluator=link_evaluator, ) assert len(actual) == 1 package_link = actual[0] assert package_link.name == 'simple' assert str(package_link.version) == '1.0'
def test_process_project_url(data: TestData) -> None: project_name = "simple" index_url = data.index_url("simple") project_url = Link(f"{index_url}/{project_name}") finder = make_test_finder(index_urls=[index_url]) link_evaluator = finder.make_link_evaluator(project_name) actual = finder.process_project_url( project_url, link_evaluator=link_evaluator, ) assert len(actual) == 1 package_link = actual[0] assert package_link.name == "simple" assert str(package_link.version) == "1.0"
def test_evaluate_link__match(self, url, expected_version): """Test that 'pytest' archives match for 'pytest'""" link = Link(url) evaluator = self.make_test_link_evaluator(formats=['source', 'binary']) actual = evaluator.evaluate_link(link) assert actual == (True, expected_version)