superlint/test/lib/linterVersionsTest.sh

63 lines
2 KiB
Bash
Raw Normal View History

#!/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