返回 CodeWhale
verify-remote-tag.test.sh
根目录 / scripts / release / verify-remote-tag.test.sh
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
5 tmp_dir="$(mktemp -d)"
6 trap 'rm -rf "${tmp_dir}"' EXIT
7
8 remote="${tmp_dir}/remote.git"
9 source_repo="${tmp_dir}/source"
10 git init --bare --quiet "${remote}"
11 git init --quiet "${source_repo}"
12 git -C "${source_repo}" config user.name "Release Test"
13 git -C "${source_repo}" config user.email "release-test@example.invalid"
14 git -C "${source_repo}" remote add origin "${remote}"
15
16 printf 'one\n' > "${source_repo}/payload"
17 git -C "${source_repo}" add payload
18 git -C "${source_repo}" commit --quiet -m one
19 first_sha="$(git -C "${source_repo}" rev-parse HEAD)"
20 git -C "${source_repo}" tag -a v1.2.3 -m v1.2.3
21 git -C "${source_repo}" push --quiet origin refs/tags/v1.2.3
22
23 "${repo_root}/scripts/release/verify-remote-tag.sh" \
24 "${remote}" v1.2.3 "${first_sha}"
25
26 printf 'two\n' > "${source_repo}/payload"
27 git -C "${source_repo}" commit --quiet -am two
28 second_sha="$(git -C "${source_repo}" rev-parse HEAD)"
29 git -C "${source_repo}" tag -f -a v1.2.3 -m moved >/dev/null
30 git -C "${source_repo}" push --quiet --force origin refs/tags/v1.2.3
31
32 if "${repo_root}/scripts/release/verify-remote-tag.sh" \
33 "${remote}" v1.2.3 "${first_sha}" >/dev/null 2>&1; then
34 echo "moved tag unexpectedly passed the old-SHA check" >&2
35 exit 1
36 fi
37 "${repo_root}/scripts/release/verify-remote-tag.sh" \
38 "${remote}" v1.2.3 "${second_sha}"
39
40 echo "verify-remote-tag tests passed"
41
41 lines BASH