def test_register_feedstock_token_with_proviers_notoken( github_actions_mock, azure_mock, travis_mock, circle_mock, drone_mock, drone, circle, azure, travis, github_actions, clobber, ): user = "******" project = "bar" with pytest.raises(RuntimeError) as e: register_feedstock_token_with_proviers( user, project, drone=drone, circle=circle, travis=travis, azure=azure, github_actions=github_actions, clobber=clobber, ) assert "No token" in str(e.value) drone_mock.assert_not_called() circle_mock.assert_not_called() travis_mock.assert_not_called() azure_mock.assert_not_called() github_actions_mock.assert_not_called()
def test_register_feedstock_token_with_proviers_error( azure_mock, travis_mock, circle_mock, drone_mock, provider, ): user = "******" project = "bar-feedstock" pth = os.path.expanduser("~/.conda-smithy/foo_bar-feedstock.token") if provider == "drone": drone_mock.side_effect = ValueError("blah") if provider == "circle": circle_mock.side_effect = ValueError("blah") if provider == "travis": travis_mock.side_effect = ValueError("blah") if provider == "azure": azure_mock.side_effect = ValueError("blah") try: generate_and_write_feedstock_token(user, project) feedstock_token, _ = read_feedstock_token(user, project) with pytest.raises(RuntimeError) as e: register_feedstock_token_with_proviers( user, project, drone_endpoints=[drone_default_endpoint]) assert "on %s" % provider in str(e.value) finally: if os.path.exists(pth): os.remove(pth)
def test_register_feedstock_token_with_proviers( azure_mock, travis_mock, circle_mock, drone_mock, drone, circle, travis, azure, clobber, ): user = "******" project = "bar" pth = os.path.expanduser("~/.conda-smithy/foo_bar.token") try: generate_and_write_feedstock_token(user, project) feedstock_token, _ = read_feedstock_token(user, project) register_feedstock_token_with_proviers( user, project, drone=drone, circle=circle, travis=travis, azure=azure, clobber=clobber, ) if drone: drone_mock.assert_called_once_with(user, project, feedstock_token, clobber) else: drone_mock.assert_not_called() if circle: circle_mock.assert_called_once_with(user, project, feedstock_token, clobber) else: circle_mock.assert_not_called() if travis: travis_mock.assert_called_once_with(user, project, feedstock_token, clobber) else: travis_mock.assert_not_called() if azure: azure_mock.assert_called_once_with(user, project, feedstock_token, clobber) else: azure_mock.assert_not_called() finally: if os.path.exists(pth): os.remove(pth)
def __call__(self, args): from conda_smithy.feedstock_tokens import ( register_feedstock_token_with_proviers, register_feedstock_token, feedstock_token_exists, ) from conda_smithy.ci_register import drone_default_endpoint drone_endpoints = args.drone_endpoints if drone_endpoints is None: drone_endpoints = [drone_default_endpoint] owner = args.user or args.organization repo = os.path.basename(os.path.abspath(args.feedstock_directory)) if args.token_repo is None: token_repo = ( "https://${GITHUB_TOKEN}@github.com/%s/feedstock-tokens" % owner) else: token_repo = args.token_repo if feedstock_token_exists(owner, repo, token_repo): raise RuntimeError("Token for repo %s/%s already exists!" % (owner, repo)) print("Registering the feedstock tokens. Can take up to ~30 seconds.") # do all providers first register_feedstock_token_with_proviers( owner, repo, drone=args.drone, circle=args.circle, travis=args.travis, azure=args.azure, github_actions=args.github_actions, drone_endpoints=drone_endpoints, ) # then if that works do the github repo register_feedstock_token(owner, repo, token_repo) print("Successfully registered the feedstock token!")