コード例 #1
0
def test_publish_should_not_upload_to_pypi_if_option_is_false(mocker):
    mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.ci_checks.check")
    mock_upload_pypi = mocker.patch("semantic_release.cli.upload_to_pypi")
    mock_upload_release = mocker.patch(
        "semantic_release.cli.upload_to_release")
    mocker.patch("semantic_release.cli.post_changelog", lambda *x: True)
    mocker.patch("semantic_release.cli.push_new_version", return_value=True)
    mocker.patch("semantic_release.cli.should_bump_version",
                 return_value=False)
    mocker.patch("semantic_release.cli.markdown_changelog",
                 lambda *x, **y: "CHANGES")
    mocker.patch("semantic_release.cli.update_changelog_file")
    mocker.patch("semantic_release.cli.bump_version")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.check_token", lambda: True)
    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(
            remove_dist=False,
            upload_to_pypi=False,
            upload_to_release=False,
        ),
    )
    mocker.patch("semantic_release.cli.update_changelog_file",
                 lambda *x, **y: None)

    publish()

    assert not mock_upload_pypi.called
    assert not mock_upload_release.called
コード例 #2
0
def test_publish_retry_version_fail(mocker):
    mock_get_current = mocker.patch("semantic_release.cli.get_current_version",
                                    return_value="current")
    mock_get_previous = mocker.patch(
        "semantic_release.cli.get_previous_version", return_value="previous")
    mock_get_owner_name = mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("owner", "name"),
    )
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.config.get", lambda *x: "my_branch")
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version", return_value=False)

    publish(noop=False, retry=True, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_get_previous.assert_called_once_with("current")
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with("my_branch")
    mock_should_bump_version.assert_called_once_with(
        current_version="previous",
        new_version="current",
        noop=False,
        retry=True)
コード例 #3
0
def test_publish_bad_token(mocker):
    mock_get_current = mocker.patch("semantic_release.cli.get_current_version",
                                    return_value="current")
    mock_current_release_version = mocker.patch(
        "semantic_release.cli.get_current_release_version",
        return_value="1.2.3")
    get_previous_release_version = mocker.patch(
        "semantic_release.cli.get_previous_release_version",
        return_value="previous")
    mock_get_owner_name = mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("owner", "name"),
    )
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(
            branch="my_branch",
            upload_to_repository=False,
            upload_to_release=False,
            remove_dist=False,
        ),
    )
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version")
    mock_get_token = mocker.patch("semantic_release.cli.get_token",
                                  return_value="SUPERTOKEN")
    mock_get_domain = mocker.patch("semantic_release.cli.get_domain",
                                   return_value="domain")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_check_token = mocker.patch("semantic_release.cli.check_token",
                                    return_value=False)

    publish(noop=False, retry=True, force_level=False)

    mock_get_current.assert_called_once()
    mock_current_release_version.assert_called_once()
    get_previous_release_version.assert_called_once_with("current")
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with("my_branch")
    mock_should_bump_version.assert_called_once_with(
        current_version="previous",
        new_version="current",
        current_release_version="1.2.3",
        prerelease=False,
        noop=False,
        retry=True,
    )
    mock_get_token.assert_called()
    mock_get_domain.assert_called()
    mock_push.assert_called_once_with(
        auth_token="SUPERTOKEN",
        owner="owner",
        name="name",
        branch="my_branch",
        domain="domain",
    )
    mock_check_token.assert_called_once_with()
コード例 #4
0
def test_publish_should_call_functions(mocker):
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mock_version = mocker.patch("semantic_release.cli.version", return_value=True)
    mock_log = mocker.patch("semantic_release.cli.post_changelog")
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_pypi = mocker.patch("semantic_release.cli.upload_to_pypi")
    mock_release = mocker.patch("semantic_release.cli.upload_to_release")
    mock_build_dists = mocker.patch("semantic_release.cli.build_dists")
    mock_remove_dists = mocker.patch("semantic_release.cli.remove_dists")
    mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("relekang", "python-semantic-release"),
    )
    mocker.patch("semantic_release.cli.evaluate_version_bump", lambda *x: "feature")
    mocker.patch("semantic_release.cli.generate_changelog")
    mocker.patch("semantic_release.cli.markdown_changelog", lambda *x, **y: "CHANGES")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.check_token", lambda: True)

    publish()

    assert mock_ci_check.called
    assert mock_push.called
    assert mock_remove_dists.called
    assert mock_build_dists.called
    assert mock_pypi.called
    assert mock_release.called
    assert mock_version.called
    mock_log.assert_called_once_with(
        u"relekang", "python-semantic-release", "2.0.0", "CHANGES"
    )
    mock_checkout.assert_called_once_with("master")
コード例 #5
0
def test_publish_should_run_pre_commit_if_provided(mocker):
    mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.ci_checks.check")
    mocker.patch.object(ArtifactRepo, "upload")
    mocker.patch("semantic_release.cli.upload_to_release")
    mocker.patch("semantic_release.cli.post_changelog", lambda *x: True)
    mocker.patch("semantic_release.cli.push_new_version", return_value=True)
    mocker.patch("semantic_release.cli.should_bump_version", return_value=True)
    mocker.patch("semantic_release.cli.markdown_changelog",
                 lambda *x, **y: "CHANGES")
    mocker.patch("semantic_release.cli.update_changelog_file")
    mocker.patch("semantic_release.cli.bump_version")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.check_token", lambda: True)
    run_pre_commit = mocker.patch("semantic_release.cli.run_pre_commit")
    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(
            remove_dist=False,
            upload_to_pypi=False,
            upload_to_release=False,
            pre_commit_command='echo "Hello, world."',
        ),
    )
    mocker.patch("semantic_release.cli.update_changelog_file",
                 lambda *x, **y: None)

    publish()

    assert run_pre_commit.called
コード例 #6
0
def test_publish_giterror_when_posting(mocker):
    mock_get_current = mocker.patch("semantic_release.cli.get_current_version",
                                    return_value="current")
    mock_evaluate = mocker.patch("semantic_release.cli.evaluate_version_bump",
                                 return_value="patch")
    mock_get_new = mocker.patch("semantic_release.cli.get_new_version",
                                return_value="new")
    mock_get_owner_name = mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("owner", "name"),
    )
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.config.get", return_value="my_branch")
    mocker.patch("semantic_release.cli.config.getboolean", return_value=False)
    mock_version = mocker.patch("semantic_release.cli.version")
    mock_get_token = mocker.patch("semantic_release.cli.get_token",
                                  return_value="SUPERTOKEN")
    mock_get_domain = mocker.patch("semantic_release.cli.get_domain",
                                   return_value="domain")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_check_token = mocker.patch("semantic_release.cli.check_token",
                                    return_value=True)
    mock_generate = mocker.patch("semantic_release.cli.generate_changelog",
                                 return_value="super changelog")
    mock_markdown = mocker.patch("semantic_release.cli.markdown_changelog",
                                 return_value="super md changelog")
    mock_post = mocker.patch("semantic_release.cli.post_changelog",
                             mock.Mock(side_effect=GitError()))

    publish(noop=False, retry=False, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_evaluate.assert_called_once_with("current", False)
    mock_get_new.assert_called_once_with("current", "patch")
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with("my_branch")
    mock_version.assert_called_once_with(noop=False,
                                         retry=False,
                                         force_level=False)
    mock_get_token.assert_called_once_with()
    mock_get_domain.assert_called_once_with()
    mock_push.assert_called_once_with(
        auth_token="SUPERTOKEN",
        owner="owner",
        name="name",
        branch="my_branch",
        domain="domain",
    )
    mock_check_token.assert_called_once_with()
    mock_generate.assert_called_once_with("current", "new")
    mock_markdown.assert_called_once_with("new",
                                          "super changelog",
                                          header=False)
    mock_post.assert_called_once_with("owner", "name", "new",
                                      "super md changelog")
コード例 #7
0
def test_publish_giterror_when_posting(mocker):
    mock_get_current = mocker.patch('semantic_release.cli.get_current_version',
                                    return_value='current')
    mock_evaluate = mocker.patch('semantic_release.cli.evaluate_version_bump',
                                 return_value='patch')
    mock_get_new = mocker.patch('semantic_release.cli.get_new_version',
                                return_value='new')
    mock_get_owner_name = mocker.patch(
        'semantic_release.cli.get_repository_owner_and_name',
        return_value=('owner', 'name'))
    mock_ci_check = mocker.patch('semantic_release.ci_checks.check')
    mock_checkout = mocker.patch('semantic_release.cli.checkout')
    mocker.patch('semantic_release.cli.config.get', return_value='my_branch')
    mocker.patch('semantic_release.cli.config.getboolean', return_value=False)
    mock_version = mocker.patch('semantic_release.cli.version')
    mock_get_token = mocker.patch('semantic_release.cli.get_token',
                                  return_value='SUPERTOKEN')
    mock_get_domain = mocker.patch('semantic_release.cli.get_domain',
                                   return_value='domain')
    mock_push = mocker.patch('semantic_release.cli.push_new_version')
    mock_check_token = mocker.patch('semantic_release.cli.check_token',
                                    return_value=True)
    mock_generate = mocker.patch('semantic_release.cli.generate_changelog',
                                 return_value='super changelog')
    mock_markdown = mocker.patch('semantic_release.cli.markdown_changelog',
                                 return_value='super md changelog')
    mock_post = mocker.patch('semantic_release.cli.post_changelog',
                             mock.Mock(side_effect=GitError()))

    publish(noop=False, retry=False, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_evaluate.assert_called_once_with('current', False)
    mock_get_new.assert_called_once_with('current', 'patch')
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with('my_branch')
    mock_version.assert_called_once_with(noop=False,
                                         retry=False,
                                         force_level=False)
    mock_get_token.assert_called_once_with()
    mock_get_domain.assert_called_once_with()
    mock_push.assert_called_once_with(auth_token='SUPERTOKEN',
                                      owner='owner',
                                      name='name',
                                      branch='my_branch',
                                      domain='domain')
    mock_check_token.assert_called_once_with()
    mock_generate.assert_called_once_with('current', 'new')
    mock_markdown.assert_called_once_with('new',
                                          'super changelog',
                                          header=False)
    mock_post.assert_called_once_with('owner', 'name', 'new',
                                      'super md changelog')
コード例 #8
0
def test_publish_should_skip_build_when_command_is_empty(mocker):
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version", return_value=True)
    mock_log = mocker.patch("semantic_release.cli.post_changelog")
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mocker.patch.dict(
        "os.environ",
        {
            "REPOSITORY_USERNAME": "******",
            "REPOSITORY_PASSWORD": "******",
        },
    )
    mock_repository = mocker.patch.object(ArtifactRepo, "upload")
    mock_release = mocker.patch("semantic_release.cli.upload_to_release")
    mock_build_dists = mocker.patch("semantic_release.cli.build_dists")
    mock_remove_dists = mocker.patch("semantic_release.cli.remove_dists")
    mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("relekang", "python-semantic-release"),
    )
    mocker.patch("semantic_release.cli.evaluate_version_bump",
                 lambda *x: "feature")
    mocker.patch("semantic_release.cli.generate_changelog")
    mocker.patch("semantic_release.cli.markdown_changelog",
                 lambda *x, **y: "CHANGES")
    mocker.patch("semantic_release.cli.update_changelog_file")
    mocker.patch("semantic_release.cli.bump_version")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.check_token", lambda: True)

    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(build_command="", ),
    )

    publish()

    assert mock_ci_check.called
    assert mock_push.called
    assert not mock_remove_dists.called
    assert not mock_build_dists.called
    assert mock_repository.called
    assert mock_release.called
    assert mock_should_bump_version.called
    mock_log.assert_called_once_with("relekang", "python-semantic-release",
                                     "2.0.0", "CHANGES")
    mock_checkout.assert_called_once_with("master")
コード例 #9
0
def test_publish_should_call_functions_with_custom_pypi_glob_patterns(mocker):
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version", return_value=True
    )
    mock_log = mocker.patch("semantic_release.cli.post_changelog")
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_pypi = mocker.patch("semantic_release.cli.upload_to_pypi")
    mock_release = mocker.patch("semantic_release.cli.upload_to_release")
    mock_build_dists = mocker.patch("semantic_release.cli.build_dists")
    mock_remove_dists = mocker.patch("semantic_release.cli.remove_dists")
    mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("relekang", "python-semantic-release"),
    )
    mocker.patch("semantic_release.cli.evaluate_version_bump", lambda *x: "feature")
    mocker.patch("semantic_release.cli.generate_changelog")
    mocker.patch("semantic_release.cli.markdown_changelog", lambda *x, **y: "CHANGES")
    mocker.patch("semantic_release.cli.update_changelog_file")
    mocker.patch("semantic_release.cli.bump_version")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.check_token", lambda: True)

    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(
            upload_to_pypi_glob_patterns="*.tar.gz,*.whl",
        ),
    )

    publish()

    assert mock_ci_check.called
    assert mock_push.called
    assert mock_remove_dists.called
    assert mock_build_dists.called
    mock_pypi.assert_called_with(
        path="dist", skip_existing=None, glob_patterns=["*.tar.gz", "*.whl"]
    )
    assert mock_release.called
    assert mock_should_bump_version.called
    mock_log.assert_called_once_with(
        u"relekang", "python-semantic-release", "2.0.0", "CHANGES"
    )
    mock_checkout.assert_called_once_with("master")
コード例 #10
0
def test_publish_bad_token(mocker):
    mock_get_current = mocker.patch("semantic_release.cli.get_current_version",
                                    return_value="current")
    mock_get_previous = mocker.patch(
        "semantic_release.cli.get_previous_version", return_value="previous")
    mock_get_owner_name = mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("owner", "name"),
    )
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.config.get", return_value="my_branch")
    mocker.patch("semantic_release.cli.config.getboolean", return_value=False)
    mock_version = mocker.patch("semantic_release.cli.version")
    mock_get_token = mocker.patch("semantic_release.cli.get_token",
                                  return_value="SUPERTOKEN")
    mock_get_domain = mocker.patch("semantic_release.cli.get_domain",
                                   return_value="domain")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_check_token = mocker.patch("semantic_release.cli.check_token",
                                    return_value=False)

    publish(noop=False, retry=True, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_get_previous.assert_called_once_with("current")
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with("my_branch")
    mock_version.assert_called_once_with(noop=False,
                                         retry=True,
                                         force_level=False)
    mock_get_token.assert_called()
    mock_get_domain.assert_called()
    mock_push.assert_called_once_with(
        auth_token="SUPERTOKEN",
        owner="owner",
        name="name",
        branch="my_branch",
        domain="domain",
    )
    mock_check_token.assert_called_once_with()
コード例 #11
0
def test_publish_should_do_nothing_when_version_fails(mocker):
    mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.evaluate_version_bump", lambda *x: "feature")
    mocker.patch("semantic_release.cli.generate_changelog")
    mock_log = mocker.patch("semantic_release.cli.post_changelog")
    mock_upload_pypi = mocker.patch("semantic_release.cli.upload_to_pypi")
    mock_upload_release = mocker.patch("semantic_release.cli.upload_to_release")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_version = mocker.patch("semantic_release.cli.version", return_value=False)

    publish()

    assert mock_version.called
    assert not mock_push.called
    assert not mock_upload_pypi.called
    assert not mock_upload_release.called
    assert not mock_log.called
    assert mock_ci_check.called
コード例 #12
0
def test_publish_bad_token(mocker):
    mock_get_current = mocker.patch('semantic_release.cli.get_current_version',
                                    return_value='current')
    mock_get_previous = mocker.patch(
        'semantic_release.cli.get_previous_version', return_value='previous')
    mock_get_owner_name = mocker.patch(
        'semantic_release.cli.get_repository_owner_and_name',
        return_value=('owner', 'name'))
    mock_ci_check = mocker.patch('semantic_release.ci_checks.check')
    mock_checkout = mocker.patch('semantic_release.cli.checkout')
    mocker.patch('semantic_release.cli.config.get', return_value='my_branch')
    mocker.patch('semantic_release.cli.config.getboolean', return_value=False)
    mock_version = mocker.patch('semantic_release.cli.version')
    mock_get_token = mocker.patch('semantic_release.cli.get_token',
                                  return_value='SUPERTOKEN')
    mock_get_domain = mocker.patch('semantic_release.cli.get_domain',
                                   return_value='domain')
    mock_push = mocker.patch('semantic_release.cli.push_new_version')
    mock_check_token = mocker.patch('semantic_release.cli.check_token',
                                    return_value=False)

    publish(noop=False, retry=True, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_get_previous.assert_called_once_with('current')
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with('my_branch')
    mock_version.assert_called_once_with(noop=False,
                                         retry=True,
                                         force_level=False)
    mock_get_token.assert_called()
    mock_get_domain.assert_called()
    mock_push.assert_called_once_with(auth_token='SUPERTOKEN',
                                      owner='owner',
                                      name='name',
                                      branch='my_branch',
                                      domain='domain')
    mock_check_token.assert_called_once_with()
コード例 #13
0
def test_publish_should_do_nothing_when_not_should_bump_version(mocker):
    mocker.patch("semantic_release.cli.checkout")
    mocker.patch("semantic_release.cli.get_new_version", lambda *x: "2.0.0")
    mocker.patch("semantic_release.cli.evaluate_version_bump",
                 lambda *x: "feature")
    mocker.patch("semantic_release.cli.generate_changelog")
    mock_log = mocker.patch("semantic_release.cli.post_changelog")
    mock_repository = mocker.patch.object(ArtifactRepo, "upload")
    mock_upload_release = mocker.patch(
        "semantic_release.cli.upload_to_release")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version", return_value=False)

    publish()

    assert mock_should_bump_version.called
    assert not mock_push.called
    assert not mock_repository.called
    assert not mock_upload_release.called
    assert not mock_log.called
    assert mock_ci_check.called
コード例 #14
0
def test_publish_retry_version_fail(mocker):
    mock_get_current = mocker.patch('semantic_release.cli.get_current_version',
                                    return_value='current')
    mock_get_previous = mocker.patch(
        'semantic_release.cli.get_previous_version', return_value='previous')
    mock_get_owner_name = mocker.patch(
        'semantic_release.cli.get_repository_owner_and_name',
        return_value=('owner', 'name'))
    mock_ci_check = mocker.patch('semantic_release.ci_checks.check')
    mock_checkout = mocker.patch('semantic_release.cli.checkout')
    mocker.patch('semantic_release.cli.config.get', lambda *x: 'my_branch')
    mock_version = mocker.patch('semantic_release.cli.version',
                                return_value=False)

    publish(noop=False, retry=True, force_level=False)

    mock_get_current.assert_called_once_with()
    mock_get_previous.assert_called_once_with('current')
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with('my_branch')
    mock_version.assert_called_once_with(noop=False,
                                         retry=True,
                                         force_level=False)
コード例 #15
0
def test_publish_giterror_when_posting(mocker):
    mock_current_version = mocker.patch(
        "semantic_release.cli.get_current_version", return_value="1.2.3")
    mock_current_release_version = mocker.patch(
        "semantic_release.cli.get_current_release_version",
        return_value="1.2.3")
    mock_evaluate = mocker.patch("semantic_release.cli.evaluate_version_bump",
                                 return_value="patch")
    mock_get_new = mocker.patch("semantic_release.cli.get_new_version",
                                return_value="new")
    mock_get_owner_name = mocker.patch(
        "semantic_release.cli.get_repository_owner_and_name",
        return_value=("owner", "name"),
    )
    mock_ci_check = mocker.patch("semantic_release.ci_checks.check")
    mock_checkout = mocker.patch("semantic_release.cli.checkout")
    mocker.patch(
        "semantic_release.cli.config.get",
        wrapped_config_get(
            branch="my_branch",
            upload_to_repository=False,
            upload_to_release=False,
            remove_dist=False,
        ),
    )
    mock_bump_version = mocker.patch("semantic_release.cli.bump_version")
    mock_should_bump_version = mocker.patch(
        "semantic_release.cli.should_bump_version", return_value=True)
    mock_get_token = mocker.patch("semantic_release.cli.get_token",
                                  return_value="SUPERTOKEN")
    mock_get_domain = mocker.patch("semantic_release.cli.get_domain",
                                   return_value="domain")
    mock_push = mocker.patch("semantic_release.cli.push_new_version")
    mock_check_token = mocker.patch("semantic_release.cli.check_token",
                                    return_value=True)
    mock_generate = mocker.patch("semantic_release.cli.generate_changelog",
                                 return_value="super changelog")
    mock_markdown = mocker.patch("semantic_release.cli.markdown_changelog",
                                 return_value="super md changelog")
    mock_update_changelog_file = mocker.patch(
        "semantic_release.cli.update_changelog_file")
    mock_post = mocker.patch("semantic_release.cli.post_changelog",
                             mock.Mock(side_effect=GitError()))

    publish(noop=False, retry=False, force_level=False)

    mock_current_version.assert_called_once()
    mock_current_release_version.assert_called_once()
    mock_evaluate.assert_called_once_with("1.2.3", False)
    mock_get_new.assert_called_once_with("1.2.3", "1.2.3", "patch", False)
    mock_get_owner_name.assert_called_once_with()
    mock_ci_check.assert_called()
    mock_checkout.assert_called_once_with("my_branch")
    mock_should_bump_version.assert_called_once_with(
        current_version="1.2.3",
        new_version="new",
        current_release_version="1.2.3",
        prerelease=False,
        noop=False,
        retry=False,
    )
    mock_update_changelog_file.assert_called_once_with("new",
                                                       "super md changelog")
    mock_bump_version.assert_called_once_with("new", "patch")
    mock_get_token.assert_called_once_with()
    mock_get_domain.assert_called_once_with()
    mock_push.assert_called_once_with(
        auth_token="SUPERTOKEN",
        owner="owner",
        name="name",
        branch="my_branch",
        domain="domain",
    )
    mock_check_token.assert_called_once_with()
    mock_generate.assert_called_once_with("1.2.3")
    mock_markdown.assert_called_once_with(
        "owner",
        "name",
        "new",
        "super changelog",
        header=False,
        previous_version="1.2.3",
    )
    mock_post.assert_called_once_with("owner", "name", "new",
                                      "super md changelog")