Add options for add/status commands

This commit is contained in:
Tim Robertson 2021-05-03 11:26:56 -04:00
parent 48d37c1ffb
commit ccad85927e
No known key found for this signature in database
GPG Key ID: 9D3CA0E04D31E61F
3 changed files with 54 additions and 2 deletions

View File

@ -16,6 +16,14 @@ inputs:
description: Commit options (eg. --no-verify) description: Commit options (eg. --no-verify)
required: false required: false
default: '' default: ''
add_options:
description: Add options (eg. -u)
required: false
default: ''
status_options:
description: Status options (eg. --untracked-files=no)
required: false
default: ''
file_pattern: file_pattern:
description: File pattern used for `git add`. For example `src/\*.js` description: File pattern used for `git add`. For example `src/\*.js`
required: false required: false

View File

@ -37,8 +37,11 @@ _switch_to_repository() {
} }
_git_is_dirty() { _git_is_dirty() {
echo "INPUT_STATUS_OPTIONS: ${INPUT_STATUS_OPTIONS}";
echo "::debug::Apply status options ${INPUT_STATUS_OPTIONS}";
# shellcheck disable=SC2086 # shellcheck disable=SC2086
[ -n "$(git status -s -- $INPUT_FILE_PATTERN)" ] [ -n "$(git status -s $INPUT_STATUS_OPTIONS -- $INPUT_FILE_PATTERN)" ]
} }
_switch_to_branch() { _switch_to_branch() {
@ -58,10 +61,13 @@ _switch_to_branch() {
} }
_add_files() { _add_files() {
echo "INPUT_ADD_OPTIONS: ${INPUT_ADD_OPTIONS}";
echo "::debug::Apply add options ${INPUT_ADD_OPTIONS}";
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}"; echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
# shellcheck disable=SC2086 # shellcheck disable=SC2086
git add ${INPUT_FILE_PATTERN}; git add ${INPUT_ADD_OPTIONS} ${INPUT_FILE_PATTERN};
} }
_local_commit() { _local_commit() {

View File

@ -14,6 +14,8 @@ setup() {
export INPUT_COMMIT_MESSAGE="Commit Message" export INPUT_COMMIT_MESSAGE="Commit Message"
export INPUT_BRANCH="master" export INPUT_BRANCH="master"
export INPUT_COMMIT_OPTIONS="" export INPUT_COMMIT_OPTIONS=""
export INPUT_ADD_OPTIONS=""
export INPUT_STATUS_OPTIONS=""
export INPUT_FILE_PATTERN="." export INPUT_FILE_PATTERN="."
export INPUT_COMMIT_USER_NAME="Test Suite" export INPUT_COMMIT_USER_NAME="Test Suite"
export INPUT_COMMIT_USER_EMAIL="test@github.com" export INPUT_COMMIT_USER_EMAIL="test@github.com"
@ -115,6 +117,20 @@ git_auto_commit() {
assert_line "::debug::Push commit to remote branch master" assert_line "::debug::Push commit to remote branch master"
} }
@test "It applies INPUT_STATUS_OPTIONS when running dirty check" {
INPUT_STATUS_OPTIONS="--untracked-files=no"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.php
run git_auto_commit
assert_success
assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "::set-output name=changes_detected::false"
assert_line "Working tree clean. Nothing to commit."
}
@test "It prints a 'Nothing to commit' message in a clean repository" { @test "It prints a 'Nothing to commit' message in a clean repository" {
run git_auto_commit run git_auto_commit
@ -142,6 +158,28 @@ git_auto_commit() {
assert_line "::debug::Apply commit options " assert_line "::debug::Apply commit options "
} }
@test "It applies INPUT_ADD_OPTIONS when adding files" {
INPUT_FILE_PATTERN=""
INPUT_STATUS_OPTIONS="--untracked-files=no"
INPUT_ADD_OPTIONS="-u"
date > "${FAKE_LOCAL_REPOSITORY}"/remote-files1.txt
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.php
run git_auto_commit
assert_success
assert_line "INPUT_STATUS_OPTIONS: --untracked-files=no"
assert_line "INPUT_ADD_OPTIONS: -u"
assert_line "INPUT_FILE_PATTERN: "
assert_line "::debug::Push commit to remote branch master"
# Assert that PHP files have not been added.
run git status
assert_output --partial 'new-file-1.php'
}
@test "It applies INPUT_FILE_PATTERN when creating commit" { @test "It applies INPUT_FILE_PATTERN when creating commit" {
INPUT_FILE_PATTERN="*.txt *.html" INPUT_FILE_PATTERN="*.txt *.html"