예제 #1
0
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()
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
    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!")