Fail if attempting to execute git commands in a directory that is not a git-repo. (#326)
Some checks failed
Lint Code Base / Lint Code Base (push) Failing after 4s
Some checks failed
Lint Code Base / Lint Code Base (push) Failing after 4s
* Fail (and log message) if attempting to execute git commands in a directory that is not a git-repo. * Add Test * Code Formatting --------- Co-authored-by: Constantin Comendant <constantin@uberagent.com> Co-authored-by: Stefan Zweifel <stefan@stefanzweifel.dev>
This commit is contained in:
parent
b0f4d47f59
commit
8621497c8c
@ -82,8 +82,15 @@ _git_is_dirty() {
|
|||||||
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
|
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
|
||||||
read -r -a INPUT_FILE_PATTERN_EXPANDED <<< "$INPUT_FILE_PATTERN";
|
read -r -a INPUT_FILE_PATTERN_EXPANDED <<< "$INPUT_FILE_PATTERN";
|
||||||
|
|
||||||
|
# capture stderr
|
||||||
|
gitStatusMessage="$((git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}} >/dev/null ) 2>&1)";
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
[ -n "$(git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}})" ]
|
gitStatus="$(git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}})";
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
_log "error" "git-status failed with:<$gitStatusMessage>";
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
[ -n "$gitStatus" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
_switch_to_branch() {
|
_switch_to_branch() {
|
||||||
|
@ -8,6 +8,7 @@ setup() {
|
|||||||
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_local_repository"
|
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_local_repository"
|
||||||
export FAKE_REMOTE="${BATS_TEST_DIRNAME}/tests_remote_repository"
|
export FAKE_REMOTE="${BATS_TEST_DIRNAME}/tests_remote_repository"
|
||||||
export FAKE_TEMP_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_clone_of_remote_repository"
|
export FAKE_TEMP_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_clone_of_remote_repository"
|
||||||
|
export FAKE_FOLDER_WITHOUT_GIT_REPO="/tmp/tests_folder_without_git_repo"
|
||||||
|
|
||||||
# While it is likely the GitHub hosted runners will use master as the default branch,
|
# While it is likely the GitHub hosted runners will use master as the default branch,
|
||||||
# locally anyone may change that. So for tests lets grab whatever is currently set
|
# locally anyone may change that. So for tests lets grab whatever is currently set
|
||||||
@ -58,6 +59,7 @@ teardown() {
|
|||||||
rm -rf "${FAKE_LOCAL_REPOSITORY}"
|
rm -rf "${FAKE_LOCAL_REPOSITORY}"
|
||||||
rm -rf "${FAKE_REMOTE}"
|
rm -rf "${FAKE_REMOTE}"
|
||||||
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
|
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
|
||||||
|
rm -rf "${INPUT_REPOSITORY}"
|
||||||
|
|
||||||
if [ -z ${GITHUB_OUTPUT+x} ]; then
|
if [ -z ${GITHUB_OUTPUT+x} ]; then
|
||||||
echo "GITHUB_OUTPUT is not set"
|
echo "GITHUB_OUTPUT is not set"
|
||||||
@ -1112,3 +1114,14 @@ END
|
|||||||
run git log -n 1
|
run git log -n 1
|
||||||
assert_output --partial $COMMIT_MESSAGE
|
assert_output --partial $COMMIT_MESSAGE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "It exits with error message if entrypoint.sh is being run not in a git repository" {
|
||||||
|
INPUT_REPOSITORY="${FAKE_FOLDER_WITHOUT_GIT_REPO}"
|
||||||
|
|
||||||
|
mkdir "${INPUT_REPOSITORY}"
|
||||||
|
|
||||||
|
run git_auto_commit
|
||||||
|
|
||||||
|
assert_failure;
|
||||||
|
assert_line "::error::git-status failed with:<fatal: not a git repository (or any of the parent directories): .git>"
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user