def test_get_best_candidate__no_candidates(self): """ Test passing an empty list. """ evaluator = CandidateEvaluator() actual = evaluator.get_best_candidate([]) assert actual is None
def test_get_best_candidate__all_yanked(self, caplog): """ Test all candidates yanked. """ candidates = [ self.make_mock_candidate('1.0', yanked_reason='bad metadata #1'), # Put the best candidate in the middle, to test sorting. self.make_mock_candidate('3.0', yanked_reason='bad metadata #3'), self.make_mock_candidate('2.0', yanked_reason='bad metadata #2'), ] expected_best = candidates[1] evaluator = CandidateEvaluator() actual = evaluator.get_best_candidate(candidates) assert actual is expected_best assert str(actual.version) == '3.0' # Check the log messages. assert len(caplog.records) == 1 record = caplog.records[0] assert record.levelname == 'WARNING' assert record.message == ( 'The candidate selected for download or install is a yanked ' "version: 'mypackage' candidate " '(version 3.0 at https://example.com/pkg-3.0.tar.gz)\n' 'Reason for being yanked: bad metadata #3' )
def test_get_best_candidate__yanked_reason( self, caplog, yanked_reason, expected_reason, ): """ Test the log message with various reason strings. """ candidates = [ self.make_mock_candidate('1.0', yanked_reason=yanked_reason), ] evaluator = CandidateEvaluator(allow_yanked=True) actual = evaluator.get_best_candidate(candidates) assert str(actual.version) == '1.0' assert len(caplog.records) == 1 record = caplog.records[0] assert record.levelname == 'WARNING' expected_message = ( 'The candidate selected for download or install is a yanked ' "version: 'mypackage' candidate " '(version 1.0 at https://example.com/pkg-1.0.tar.gz)\n' 'Reason for being yanked: ') + expected_reason assert record.message == expected_message
def test_get_best_candidate__best_yanked_but_not_all(self, caplog): """ Test the best candidates being yanked, but not all. """ candidates = [ self.make_mock_candidate('4.0', yanked_reason='bad metadata #4'), # Put the best candidate in the middle, to test sorting. self.make_mock_candidate('2.0'), self.make_mock_candidate('3.0', yanked_reason='bad metadata #3'), self.make_mock_candidate('1.0'), ] expected_best = candidates[1] evaluator = CandidateEvaluator() actual = evaluator.get_best_candidate(candidates) assert actual is expected_best assert str(actual.version) == '2.0' # Check the log messages. assert len(caplog.records) == 0