Skip to content

Commit

Permalink
replace set-output statement GITHUB_OUTPUT (#12)
Browse files Browse the repository at this point in the history
* #11 replace set-output statement GITHUB_OUTPUT

* test: replace set-output statement GITHUB_OUTPUT
  • Loading branch information
yujiorama authored Feb 20, 2023
1 parent 234e9ea commit c85ba57
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/yaml_lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ ${lint_output}
echo "${lint_payload}" | curl -s -S -H "Authorization: token ${GITHUB_ACCESS_TOKEN}" --header "Content-Type: application/json" --data @- "${lint_comment_url}" > /dev/null
fi

echo ::set-output name=yamllint_output::${lint_output}
echo "yamllint_output=${lint_output}" >> $GITHUB_OUTPUT
exit ${lint_exit_code}
}

75 changes: 57 additions & 18 deletions tests/run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ function setup() {
unset INPUT_YAMLLINT_CONFIG_DATAPATH
unset INPUT_YAMLLINT_FORMAT
unset INPUT_YAMLLINT_COMMENT
export ROOT_DIR="${ROOT_DIR:-$(pwd)}"
export GITHUB_OUTPUT_FILE="${GITHUB_OUTPUT_FILE:-$(mktemp -p "${BATS_TMPDIR}")}"
cp /dev/null "${GITHUB_OUTPUT_FILE}"
}

## INPUT_YAMLLINT_FILE_OR_DIR #################################################
Expand All @@ -43,8 +46,10 @@ function setup() {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file2.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"
Expand All @@ -56,24 +61,30 @@ function setup() {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "lint: error: failed yamllint on"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

## folder
@test "INPUT_YAMLLINT_FILE_OR_DIR: nested_folder with one errors" {
run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/nested_folder" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"
Expand All @@ -92,58 +103,70 @@ function setup() {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="1" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -q "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

@test "INPUT_YAMLLINT_COMMENT: set true in PR scenario with lint errors" {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="true" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -q "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

@test "INPUT_YAMLLINT_COMMENT: set true in PR scenario without lint errors" {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file2.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="true" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -vq "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -vq "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -vq "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 0 ]]
}

Expand All @@ -152,39 +175,47 @@ function setup() {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="0" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -vq "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

@test "INPUT_YAMLLINT_COMMENT: set false in PR scenario with lint errors" {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="false" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -vq "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

Expand All @@ -193,37 +224,45 @@ function setup() {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e INPUT_YAMLLINT_COMMENT="" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -vq "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

@test "INPUT_YAMLLINT_COMMENT: not set in PR scenario with lint errors" {
INPUT_YAMLLINT_FILE_OR_DIR="/mnt/tests/data/single_files/file1.yml"

run docker run --rm \
-v "$(pwd):/mnt/" \
-v "${ROOT_DIR}:/mnt/" \
-e INPUT_YAMLLINT_FILE_OR_DIR="${INPUT_YAMLLINT_FILE_OR_DIR}" \
-e GITHUB_EVENT_PATH="/tmp/" \
-e GITHUB_EVENT_NAME="pull_request" \
--mount type=bind,source="${GITHUB_OUTPUT_FILE}",target=/github_output \
-e GITHUB_OUTPUT=/github_output \
-i $CONTAINER_NAME

debug "${status}" "${output}" "${lines}"

echo $output | grep -q "$INPUT_YAMLLINT_FILE_OR_DIR"
echo $output | grep -q "line too long (114 > 80 characters)"
echo $output | grep -q "::set-output name=yamllint_output::${INPUT_YAMLLINT_FILE_OR_DIR}"
echo $output | grep -vq "lint: info: commenting on the pull request"

cat ${GITHUB_OUTPUT_FILE} | grep -q "yamllint_output=${INPUT_YAMLLINT_FILE_OR_DIR}"

[[ "${status}" -eq 1 ]]
}

0 comments on commit c85ba57

Please sign in to comment.