From 284d1792e3ca22c2c600bf4db565c8a839df37cf Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Fri, 7 Aug 2026 15:34:09 +1000 Subject: [PATCH 1/3] Add test to expose issue --- tests/test_version-increment.bats | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/test_version-increment.bats b/tests/test_version-increment.bats index 2aa5704..0cdbd73 100644 --- a/tests/test_version-increment.bats +++ b/tests/test_version-increment.bats @@ -282,6 +282,34 @@ function init_repo { [[ "$output" = *"VERSION=$(date +%Y.%-m.1)+pre.${short_ref}"* ]] } +@test "uses the API commit message for conventional commits without a checkout" { + local no_checkout_dir="${BATS_TEST_TMPDIR}/no-checkout" + local mock_bin="${BATS_TEST_TMPDIR}/bin" + + mkdir -p "${no_checkout_dir}" "${mock_bin}" + printf '%s\n' \ + '#!/usr/bin/env bash' \ + 'printf "%s\n" "{\"commit\":{\"message\":\"feat: API-only change\"}}"' \ + > "${mock_bin}/curl" + chmod +x "${mock_bin}/curl" + + export PATH="${mock_bin}:${PATH}" + export current_version=1.2.3 + export scheme="conventional_commits" + export use_api="true" + export github_token="test-token" + export GITHUB_REF="refs/heads/main" + export GITHUB_SHA="abcdef1234567890" + export GITHUB_API_URL="https://fake.github.example.com" + export GITHUB_REPOSITORY="gh-org/example" + + run bash -c 'cd "$1" && version-increment.sh' -- "${no_checkout_dir}" + + print_run_info + [ "$status" -eq 0 ] && + [[ "$output" = *"VERSION=1.3.0"* ]] +} + @test "increments the patch version after a fix commit (conventional commits)" { init_repo From 69ceeacf75f95ff5047a1564e3f6c4d16c314824 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Mon, 10 Aug 2026 12:19:10 +1000 Subject: [PATCH 2/3] Add integration test for API + CC error --- .github/workflows/test-and-release.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index 4980df7..193dafe 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -67,6 +67,18 @@ jobs: shell: bash run: '[[ "$(date +%Y.%-m)" == "$(echo "${{ steps.version-increment.outputs.VERSION }}" | cut -d "." -f 1-2)" ]]' + - name: Test conventional commit increment version (with API) + id: version-increment-conventional + run: ./version-increment.sh + env: + current_version: 1.2.3 + scheme: conventional_commits + use_api: 'true' + + - name: Check conventional commit increment result + shell: bash + run: '[[ -n "${{ steps.version-increment-conventional.outputs.VERSION }}" ]]' + test-action-yml: # integration testing needs: - lint From 26724048ca323f1a96cda552e9a8b488bd34fd07 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Mon, 10 Aug 2026 07:40:53 +1000 Subject: [PATCH 3/3] Add API call for git log --- version-increment.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/version-increment.sh b/version-increment.sh index 9fef875..53419f5 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -63,7 +63,18 @@ fi ## Conventional commits if [[ "${scheme}" == 'conventional_commits' ]] ; then # Get message from given commit - commit_message=$(git log -1 --pretty=format:%B "${git_commit_sha}") + if [[ "${use_api:-}" == 'true' ]] ; then + commit_message="$( + curl -fsSL \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${github_token}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/commits/${git_commit_sha}" \ + | jq -r '.commit.message' + )" + else + commit_message="$(git log -1 --pretty=format:%B "${git_commit_sha}")" + fi # Check commit message header found_match='false'