mirror of
https://github.com/reecetech/version-increment.git
synced 2026-08-18 11:07:50 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79c9fd45a4 | ||
|
|
1b05caeb4c | ||
|
|
f275de0d59 | ||
|
|
5f59cf0be0 | ||
|
|
26724048ca | ||
|
|
69ceeacf75 | ||
|
|
284d1792e3 |
12
.github/workflows/test-and-release.yml
vendored
12
.github/workflows/test-and-release.yml
vendored
@@ -67,6 +67,18 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: '[[ "$(date +%Y.%-m)" == "$(echo "${{ steps.version-increment.outputs.VERSION }}" | cut -d "." -f 1-2)" ]]'
|
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
|
test-action-yml: # integration testing
|
||||||
needs:
|
needs:
|
||||||
- lint
|
- lint
|
||||||
|
|||||||
16
shared.sh
16
shared.sh
@@ -20,19 +20,13 @@ pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0
|
|||||||
remove_prefix() {
|
remove_prefix() {
|
||||||
local tag="$1"
|
local tag="$1"
|
||||||
if [[ -n "${tag_prefix:-}" ]]; then
|
if [[ -n "${tag_prefix:-}" ]]; then
|
||||||
# Escape special characters in tag_prefix
|
if [[ "${tag}" == "${tag_prefix}"* ]]; then
|
||||||
local escaped_prefix
|
printf '%s\n' "${tag:${#tag_prefix}}"
|
||||||
escaped_prefix=$(printf '%s\n' "$tag_prefix" | sed 's/[][\/.^$*]/\\&/g') # special chars matched by sed: ] [ / . ^ $ *
|
else
|
||||||
|
printf '\n'
|
||||||
# shellcheck disable=SC2143
|
|
||||||
if [[ -z "$(echo "${tag}" | grep "^${tag_prefix}")" ]] ; then
|
|
||||||
echo ""
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
# shellcheck disable=SC2001
|
|
||||||
echo "${tag}" | sed "s|^${escaped_prefix}||" # Use | as the delimiter to avoid conflicts with /
|
|
||||||
else
|
else
|
||||||
echo "${tag}"
|
printf '%s\n' "${tag}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -282,6 +282,34 @@ function init_repo {
|
|||||||
[[ "$output" = *"VERSION=$(date +%Y.%-m.1)+pre.${short_ref}"* ]]
|
[[ "$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)" {
|
@test "increments the patch version after a fix commit (conventional commits)" {
|
||||||
init_repo
|
init_repo
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,35 @@ function init_repo {
|
|||||||
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
|
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "treats tag_prefix as a literal string" {
|
||||||
|
init_repo
|
||||||
|
|
||||||
|
export tag_prefix="v."
|
||||||
|
|
||||||
|
git tag v.1.2.3
|
||||||
|
git tag v1.9.9
|
||||||
|
|
||||||
|
run version-lookup.sh
|
||||||
|
|
||||||
|
print_run_info
|
||||||
|
[ "$status" -eq 0 ] &&
|
||||||
|
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "supports a tag_prefix containing a sed delimiter" {
|
||||||
|
init_repo
|
||||||
|
|
||||||
|
export tag_prefix="foo|bar@"
|
||||||
|
|
||||||
|
git tag "foo|bar@1.2.3"
|
||||||
|
|
||||||
|
run version-lookup.sh
|
||||||
|
|
||||||
|
print_run_info
|
||||||
|
[ "$status" -eq 0 ] &&
|
||||||
|
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
@test "finds the current normal version even if there's a newer pre-release version" {
|
@test "finds the current normal version even if there's a newer pre-release version" {
|
||||||
init_repo
|
init_repo
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,18 @@ fi
|
|||||||
## Conventional commits
|
## Conventional commits
|
||||||
if [[ "${scheme}" == 'conventional_commits' ]] ; then
|
if [[ "${scheme}" == 'conventional_commits' ]] ; then
|
||||||
# Get message from given commit
|
# 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
|
# Check commit message header
|
||||||
found_match='false'
|
found_match='false'
|
||||||
|
|||||||
Reference in New Issue
Block a user