Skip to content

Commit

Permalink
Use deprecated set-output syntax if GITHUB_OUTPUT environment is not …
Browse files Browse the repository at this point in the history
…available (#255)

* Fallback to set-output if GITHUB_OUTPUT not available

* Add Tests to cover old syntax
  • Loading branch information
stefanzweifel authored Oct 26, 2022
1 parent f6f7a9c commit 0049e3f
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 4 deletions.
25 changes: 22 additions & 3 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ _main() {

if _git_is_dirty || "$INPUT_SKIP_DIRTY_CHECK"; then

echo "changes_detected=true" >> $GITHUB_OUTPUT;
# Check if $GITHUB_OUTPUT is available
# (Feature detection will be removed in late December 2022)
if [ -z ${GITHUB_OUTPUT+x} ]; then
echo "::set-output name=changes_detected::true";
else
echo "changes_detected=true" >> $GITHUB_OUTPUT;
fi

_switch_to_branch

Expand All @@ -24,7 +30,13 @@ _main() {
_push_to_github
else

echo "changes_detected=false" >> $GITHUB_OUTPUT;
# Check if $GITHUB_OUTPUT is available
# (Feature detection will be removed in late December 2022)
if [ -z ${GITHUB_OUTPUT+x} ]; then
echo "::set-output name=changes_detected::false";
else
echo "changes_detected=false" >> $GITHUB_OUTPUT;
fi

echo "Working tree clean. Nothing to commit.";
fi
Expand Down Expand Up @@ -101,7 +113,14 @@ _local_commit() {
--author="$INPUT_COMMIT_AUTHOR" \
${INPUT_COMMIT_OPTIONS:+"${INPUT_COMMIT_OPTIONS_ARRAY[@]}"};

echo "commit_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT;

# Check if $GITHUB_OUTPUT is available
# (Feature detection will be removed in late December 2022)
if [ -z ${GITHUB_OUTPUT+x} ]; then
echo "::set-output name=commit_hash::$(git rev-parse HEAD)";
else
echo "commit_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT;
fi
}

_tag_commit() {
Expand Down
46 changes: 45 additions & 1 deletion tests/git-auto-commit.bats
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,12 @@ teardown() {
rm -rf "${FAKE_LOCAL_REPOSITORY}"
rm -rf "${FAKE_REMOTE}"
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
rm "${GITHUB_OUTPUT}"

if [ -z ${GITHUB_OUTPUT+x} ]; then
echo "GITHUB_OUTPUT is not set"
else
rm "${GITHUB_OUTPUT}"
fi
}

# Create a fake remote repository which tests can push against
Expand Down Expand Up @@ -997,3 +1002,42 @@ cat_github_output() {
refute_line --partial "new-file-2.txt"
refute_line --partial "new-file-3.txt"
}


@test "It uses old set-output syntax if GITHUB_OUTPUT environment is not available when changes are committed" {
unset GITHUB_OUTPUT

touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt

run git_auto_commit

assert_success

assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "INPUT_BRANCH value: ${FAKE_DEFAULT_BRANCH}"
assert_line "INPUT_FILE_PATTERN: ."
assert_line "INPUT_COMMIT_OPTIONS: "
assert_line "::debug::Apply commit options "
assert_line "INPUT_TAGGING_MESSAGE: "
assert_line "No tagging message supplied. No tag will be added."
assert_line "INPUT_PUSH_OPTIONS: "
assert_line "::debug::Apply push options "
assert_line "::debug::Push commit to remote branch ${FAKE_DEFAULT_BRANCH}"

assert_line "::set-output name=changes_detected::true"
assert_line -e "::set-output name=commit_hash::[0-9a-f]{40}$"
}

@test "It uses old set-output syntax if GITHUB_OUTPUT environment is not available when no changes have been detected" {
unset GITHUB_OUTPUT

run git_auto_commit

assert_success

assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "Working tree clean. Nothing to commit."

assert_line "::set-output name=changes_detected::false"
refute_line -e "::set-output name=commit_hash::[0-9a-f]{40}$"
}

0 comments on commit 0049e3f

Please sign in to comment.