def test_check_warning(self, mock_docker, mock__call_pypi_json_api): mock_docker.return_value = MockDockerClient() expected_list_output = [{ 'name': 'six', 'version': '1.2.3', 'latest_version': '1.2.4', }] expected_dependency_info = { 'six': { 'installed_version': '1.2.3', 'installed_version_time': '2018-05-10T15:00:00', 'latest_version': '1.2.4', 'current_time': '2018-06-13T16:13:33.744591', 'latest_version_time': '2018-06-13T18:29:51', 'is_latest': False } } mock_datetime = mock.Mock() mock_now = mock.Mock() mock_now.isoformat.return_value = '2018-06-13T16:13:33.744591' mock_datetime.datetime.now.return_value = mock_now patch = mock.patch('pip_checker.datetime', mock_datetime) mock__call_pypi_json_api.return_value = { 'releases': { '1.2.4': [ { 'upload_time': '2018-06-13T18:29:51', }, ], '1.2.3': [ { 'upload_time': '2018-05-10T15:00:00', } ], }, } with patch: check_result = pip_checker.check( pip_command=[ self._fake_pip_path, '--check-returncode=1', '--check-output=bad-check', '--freeze-output=six==1.2.3\n', '--list-output={}'.format( json.dumps(expected_list_output)) ], packages=['six']) expected_check_result = pip_checker.PipCheckResult( packages=['six'], result_type=pip_checker.PipCheckResultType.CHECK_WARNING, result_text='bad-check', dependency_info=expected_dependency_info) self.assertEqual( check_result, expected_check_result)
def test_success_with_clean(self, mock__call_pypi_json_api): expected_list_output = [{ 'name': 'six', 'version': '1.2.3', 'latest_version': '1.2.4', }] expected_dependency_info = { 'six': { 'installed_version': '1.2.3', 'installed_version_time': '2018-05-10T15:00:00', 'latest_version': '1.2.4', 'current_time': '2018-06-13T16:13:33.744591', 'latest_version_time': '2018-06-13T18:29:51', 'is_latest': False } } mock_datetime = mock.Mock() mock_now = mock.Mock() mock_now.isoformat.return_value = '2018-06-13T16:13:33.744591' mock_datetime.datetime.now.return_value = mock_now patch = mock.patch('pip_checker.datetime', mock_datetime) mock__call_pypi_json_api.return_value = { 'releases': { '1.2.4': [ { 'upload_time': '2018-06-13T18:29:51', }, ], '1.2.3': [{ 'upload_time': '2018-05-10T15:00:00', }], }, } with patch: check_result = pip_checker.check(pip_command=[ self._fake_pip_path, '--expected-install-args=-U,six', '--uninstall-returncode=0', '--freeze-output=six==1.2.3\n', '--list-output={}'.format(json.dumps(expected_list_output)) ], packages=['six'], clean=True) expected_check_result = pip_checker.PipCheckResult( packages=['six'], result_type=pip_checker.PipCheckResultType.SUCCESS, result_text=None, dependency_info=expected_dependency_info) self.assertEqual(check_result, expected_check_result)
def test_install_failure(self): check_result = pip_checker.check(pip_command=[ self._fake_pip_path, '--expected-install-args=-U,six', '--install-returncode=1', '--install-output=bad-install' ], packages=['six']) self.assertEqual( check_result, pip_checker.PipCheckResult( packages=['six'], result_type=pip_checker.PipCheckResultType.INSTALL_ERROR, result_text='bad-install', dependency_info=None))