mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-25 02:01:02 -05:00
fc34cb53d9
Shorten the linter versions file by keeping only the version string for each linter, instead of the entire output of the version command
62 lines
2 KiB
Bash
Executable file
62 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
# shellcheck source=/dev/null
|
|
source "test/testUtils.sh"
|
|
|
|
echo -e "Versions file (${VERSION_FILE}) contents:\n$(cat "${VERSION_FILE}")"
|
|
|
|
VersionsFileSortTest() {
|
|
local FUNCTION_NAME
|
|
FUNCTION_NAME="${FUNCNAME[0]}"
|
|
info "${FUNCTION_NAME} start"
|
|
|
|
if ! sort --check "${VERSION_FILE}"; then
|
|
fatal "Linters version file (${VERSION_FILE}) is not sorted"
|
|
fi
|
|
|
|
notice "${FUNCTION_NAME} PASS"
|
|
}
|
|
|
|
VersionsFileCompletenessTest() {
|
|
local FUNCTION_NAME
|
|
FUNCTION_NAME="${FUNCNAME[0]}"
|
|
info "${FUNCTION_NAME} start"
|
|
|
|
local LINTERS_VERSION_FILE_LINES_COUNT
|
|
LINTERS_VERSION_FILE_LINES_COUNT=$(wc --lines "${VERSION_FILE}" | awk '{print $1}')
|
|
debug "Linters version file lines count: ${LINTERS_VERSION_FILE_LINES_COUNT}"
|
|
|
|
local EXPECTED_LANGUAGE_COUNT=${#LANGUAGE_ARRAY[@]}
|
|
|
|
if ! IsStandardImage; then
|
|
EXPECTED_LANGUAGE_COUNT=$((EXPECTED_LANGUAGE_COUNT - ${#LANGUAGES_NOT_IN_SLIM_IMAGE[@]}))
|
|
fi
|
|
|
|
if [[ ${LINTERS_VERSION_FILE_LINES_COUNT} -ne ${EXPECTED_LANGUAGE_COUNT} ]]; then
|
|
fatal "Linters version file lines count (${LINTERS_VERSION_FILE_LINES_COUNT}) doesn't match the length of the languages array (${EXPECTED_LANGUAGE_COUNT}). Is a version descriptor missing in the versions file? Is the version descriptor spanning multiple lines?"
|
|
else
|
|
debug "The versions file lines count (${LINTERS_VERSION_FILE_LINES_COUNT}) matches the expected value (${EXPECTED_LANGUAGE_COUNT})"
|
|
fi
|
|
|
|
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
|
if ! IsStandardImage && ! IsLanguageInSlimImage "${LANGUAGE}"; then
|
|
debug "Skip checking if ${LANGUAGE} is in the versions file because ${LANGUAGE} is not included in the slim image"
|
|
continue
|
|
fi
|
|
|
|
if ! grep -q "${LANGUAGE}" "${VERSION_FILE}"; then
|
|
fatal "${LANGUAGE} is absent from the versions file"
|
|
else
|
|
debug "${LANGUAGE} present in the versions file"
|
|
fi
|
|
done
|
|
|
|
notice "${FUNCTION_NAME} PASS"
|
|
}
|
|
|
|
VersionsFileSortTest
|
|
VersionsFileCompletenessTest
|