mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-11-15 01:28:17 -07:00
fix: improve lint and test scripts (#1607)
This commit is contained in:
parent
0e1c90e177
commit
b320803120
@ -18,7 +18,7 @@ if [ -z "$RUNNER_OS" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Set environment variables for tracking versions
|
### Set variables for tracking versions
|
||||||
# Elvish
|
# Elvish
|
||||||
elvish_semver="v0.19.2"
|
elvish_semver="v0.19.2"
|
||||||
# Fish
|
# Fish
|
||||||
@ -73,5 +73,6 @@ fi
|
|||||||
|
|
||||||
### Install bats-core
|
### Install bats-core
|
||||||
printf "%s\n" "Installing bats-core"
|
printf "%s\n" "Installing bats-core"
|
||||||
git clone --depth 1 --branch "v$(grep -Eo "^\\s*bats\\s*.*$" ".tool-versions" | cut -d ' ' -f2-)" https://github.com/bats-core/bats-core.git "$HOME/bats-core"
|
bats_version=$(grep -Eo "^\\s*bats\\s*.*$" ".tool-versions" | cut -d ' ' -f2-)
|
||||||
|
git clone --depth 1 --branch "v$bats_version" https://github.com/bats-core/bats-core.git "$HOME/bats-core"
|
||||||
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
||||||
|
@ -3,6 +3,14 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
print.info() {
|
||||||
|
printf '[INFO] %s\n' "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
print.error() {
|
||||||
|
printf '[ERROR] %s\n' "$*" >&2
|
||||||
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
printf "%s\n" "Lint script for the asdf codebase. Must be executed from the"
|
printf "%s\n" "Lint script for the asdf codebase. Must be executed from the"
|
||||||
printf "%s\n\n" "repository root directory."
|
printf "%s\n\n" "repository root directory."
|
||||||
@ -21,7 +29,7 @@ run_shfmt_stylecheck() {
|
|||||||
shfmt_flag="--diff"
|
shfmt_flag="--diff"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "%s\n" "[INFO] Checking .bash with shfmt"
|
print.info "Checking .bash with shfmt"
|
||||||
shfmt --language-dialect bash --indent 2 "${shfmt_flag}" \
|
shfmt --language-dialect bash --indent 2 "${shfmt_flag}" \
|
||||||
completions/*.bash \
|
completions/*.bash \
|
||||||
bin/asdf \
|
bin/asdf \
|
||||||
@ -35,17 +43,17 @@ run_shfmt_stylecheck() {
|
|||||||
test/fixtures/dummy_legacy_plugin/bin/* \
|
test/fixtures/dummy_legacy_plugin/bin/* \
|
||||||
test/fixtures/dummy_plugin/bin/*
|
test/fixtures/dummy_plugin/bin/*
|
||||||
|
|
||||||
printf "%s\n" "[INFO] Checking .bats with shfmt"
|
print.info "Checking .bats with shfmt"
|
||||||
shfmt --language-dialect bats --indent 2 "${shfmt_flag}" \
|
shfmt --language-dialect bats --indent 2 "${shfmt_flag}" \
|
||||||
test/*.bats
|
test/*.bats
|
||||||
}
|
}
|
||||||
|
|
||||||
run_shellcheck_linter() {
|
run_shellcheck_linter() {
|
||||||
printf "%s\n" "[INFO] Checking .sh files with Shellcheck"
|
print.info "Checking .sh files with Shellcheck"
|
||||||
shellcheck --shell sh --external-sources \
|
shellcheck --shell sh --external-sources \
|
||||||
asdf.sh
|
asdf.sh
|
||||||
|
|
||||||
printf "%s\n" "[INFO] Checking .bash files with Shellcheck"
|
print.info "Checking .bash files with Shellcheck"
|
||||||
shellcheck --shell bash --external-sources \
|
shellcheck --shell bash --external-sources \
|
||||||
completions/*.bash \
|
completions/*.bash \
|
||||||
bin/asdf \
|
bin/asdf \
|
||||||
@ -59,7 +67,7 @@ run_shellcheck_linter() {
|
|||||||
test/fixtures/dummy_legacy_plugin/bin/* \
|
test/fixtures/dummy_legacy_plugin/bin/* \
|
||||||
test/fixtures/dummy_plugin/bin/*
|
test/fixtures/dummy_plugin/bin/*
|
||||||
|
|
||||||
printf "%s\n" "[INFO] Checking .bats files with Shellcheck"
|
print.info "Checking .bats files with Shellcheck"
|
||||||
shellcheck --shell bats --external-source \
|
shellcheck --shell bats --external-source \
|
||||||
test/*.bats
|
test/*.bats
|
||||||
}
|
}
|
||||||
@ -74,7 +82,7 @@ run_custom_python_stylecheck() {
|
|||||||
|
|
||||||
if [ -n "$github_actions" ] && ! command -v python3 &>/dev/null; then
|
if [ -n "$github_actions" ] && ! command -v python3 &>/dev/null; then
|
||||||
# fail if CI and no python3
|
# fail if CI and no python3
|
||||||
printf "%s\n" "[ERROR] Detected execution in GitHub Actions but python3 was not found. This is required during CI linting."
|
print.error "Detected execution in GitHub Actions but python3 was not found. This is required during CI linting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -82,7 +90,7 @@ run_custom_python_stylecheck() {
|
|||||||
# skip if local and no python3
|
# skip if local and no python3
|
||||||
printf "%s\n" "[WARNING] python3 not found. Skipping Custom Python Script."
|
printf "%s\n" "[WARNING] python3 not found. Skipping Custom Python Script."
|
||||||
else
|
else
|
||||||
printf "%s\n" "[INFO] Checking files with Custom Python Script."
|
print.info "Checking files with Custom Python Script."
|
||||||
"${0%/*}/checkstyle.py" "${flag}"
|
"${0%/*}/checkstyle.py" "${flag}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -106,7 +114,7 @@ run_fish_linter() {
|
|||||||
|
|
||||||
if [ -n "$github_actions" ] && ! command -v fish_indent &>/dev/null; then
|
if [ -n "$github_actions" ] && ! command -v fish_indent &>/dev/null; then
|
||||||
# fail if CI and no fish_ident
|
# fail if CI and no fish_ident
|
||||||
printf "%s\n" "[ERROR] Detected execution in GitHub Actions but fish_indent was not found. This is required during CI linting."
|
print.error "Detected execution in GitHub Actions but fish_indent was not found. This is required during CI linting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -114,7 +122,7 @@ run_fish_linter() {
|
|||||||
# skip if local and no fish_ident
|
# skip if local and no fish_ident
|
||||||
printf "%s\n" "[WARNING] fish_indent not found. Skipping .fish files."
|
printf "%s\n" "[WARNING] fish_indent not found. Skipping .fish files."
|
||||||
else
|
else
|
||||||
printf "%s\n" "[INFO] Checking .fish files with fish_indent"
|
print.info "Checking .fish files with fish_indent"
|
||||||
fish_indent "${flag}" ./**/*.fish
|
fish_indent "${flag}" ./**/*.fish
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -129,17 +137,19 @@ run_fish_linter() {
|
|||||||
# printf "%s\n" "[WARNING] powershell linter/formatter not found, skipping for now."
|
# printf "%s\n" "[WARNING] powershell linter/formatter not found, skipping for now."
|
||||||
#}
|
#}
|
||||||
|
|
||||||
repo_root=$(git rev-parse --show-toplevel)
|
{
|
||||||
if [ "$repo_root" != "$PWD" ]; then
|
repo_dir=$(git rev-parse --show-toplevel)
|
||||||
printf "%s\n" "[ERROR] This scripts requires execution from the repository root directory."
|
current_dir=$(pwd -P)
|
||||||
printf "\t%s\t%s\n" "Repo root dir:" "$repo_root"
|
if [ "$repo_dir" != "$current_dir" ]; then
|
||||||
printf "\t%s\t%s\n\n" "Current dir:" "$PWD"
|
print.error "This scripts requires execution from the repository root directory."
|
||||||
printf "%s\n" "See usage details with -h or --help."
|
printf "\t%s\t%s\n" "Repo root dir:" "$repo_dir"
|
||||||
|
printf "\t%s\t%s\n\n" "Current dir:" "$current_dir"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
printf "%s\n" "[ERROR] At least one option required."
|
print.error "At least one option required."
|
||||||
printf "=%.0s" {1..60}
|
printf "=%.0s" {1..60}
|
||||||
printf "\n"
|
printf "\n"
|
||||||
usage
|
usage
|
||||||
@ -159,7 +169,7 @@ case "$1" in
|
|||||||
mode="fix"
|
mode="fix"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%s\n" "[ERROR] Invalid flag: $1"
|
print.error "Invalid flag: $1"
|
||||||
printf "=%.0s" {1..60}
|
printf "=%.0s" {1..60}
|
||||||
printf "\n"
|
printf "\n"
|
||||||
usage
|
usage
|
||||||
@ -177,4 +187,4 @@ run_fish_linter "$mode"
|
|||||||
#run_nushell_linter "$mode"
|
#run_nushell_linter "$mode"
|
||||||
#run_powershell_linter "$mode"
|
#run_powershell_linter "$mode"
|
||||||
|
|
||||||
printf "%s\n" "[INFO] Success!"
|
print.info "Success!"
|
||||||
|
@ -3,26 +3,37 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
repo_root=$(git rev-parse --show-toplevel)
|
print.info() {
|
||||||
if [ "$repo_root" != "$PWD" ]; then
|
printf '[INFO] %s\n' "$1"
|
||||||
printf "%s\n" "[ERROR] This scripts requires execution from the repository root directory."
|
}
|
||||||
printf "\t%s\t%s\n" "Repo root dir:" "$repo_root"
|
|
||||||
printf "\t%s\t%s\n\n" "Current dir:" "$PWD"
|
print.error() {
|
||||||
|
printf '[ERROR] %s\n' "$1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
repo_dir=$(git rev-parse --show-toplevel)
|
||||||
|
current_dir=$(pwd -P)
|
||||||
|
if [ "$repo_dir" != "$current_dir" ]; then
|
||||||
|
print.error "This scripts requires execution from the repository root directory."
|
||||||
|
printf "\t%s\t%s\n" "Repo root dir:" "$repo_dir"
|
||||||
|
printf "\t%s\t%s\n\n" "Current dir:" "$current_dir"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
test_directory="test"
|
test_directory="./test"
|
||||||
bats_options=(--timing --print-output-on-failure)
|
bats_options=(--timing --print-output-on-failure)
|
||||||
|
|
||||||
if command -v parallel >/dev/null; then
|
if command -v parallel >/dev/null; then
|
||||||
# enable parallel jobs
|
# Enable parallel jobs
|
||||||
bats_options=("${bats_options[@]}" --jobs 2 --no-parallelize-within-files)
|
bats_options+=(--jobs 2 --no-parallelize-within-files)
|
||||||
elif [[ -n "${CI-}" ]]; then
|
elif [[ -n "${CI-}" ]]; then
|
||||||
printf "* %s\n" "GNU parallel should be installed in the CI environment. Please install and rerun the test suite."
|
print.error "GNU parallel should be installed in the CI environment. Please install and rerun the test suite."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
printf "* %s\n" "For faster test execution, install GNU parallel."
|
print.info "For faster test execution, install GNU parallel."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "* %s\n" "Running Bats in directory '${test_directory}' with options:" "${bats_options[@]}"
|
print.info "Running Bats in directory '${test_directory}' with options:" "${bats_options[@]}"
|
||||||
bats "${bats_options[@]}" "${test_directory}"
|
bats "${bats_options[@]}" "${test_directory}"
|
||||||
|
Loading…
Reference in New Issue
Block a user