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}";
|
||||
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
|
||||
[ -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() {
|
||||
|
@ -8,6 +8,7 @@ setup() {
|
||||
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_local_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_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,
|
||||
# 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_REMOTE}"
|
||||
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
|
||||
rm -rf "${INPUT_REPOSITORY}"
|
||||
|
||||
if [ -z ${GITHUB_OUTPUT+x} ]; then
|
||||
echo "GITHUB_OUTPUT is not set"
|
||||
@ -1112,3 +1114,14 @@ END
|
||||
run git log -n 1
|
||||
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