mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-30 04:30:59 -05:00
95aabd4cfa
Introduce a new configuration variable, BASH_EXEC_IGNORE_LIBRARIES. If set to true, the behaviour of bash-exec is modified: if a shell file has a file extension and no shebang line, it is ignored, i.e., allowed to be non-executable. This allows files that are only every sourced from other shell files, acting as libraries and not executables, to have no executable bit set without failing the bash-exec linter.
75 lines
2.3 KiB
Bash
Executable file
75 lines
2.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
SUPER_LINTER_TEST_CONTAINER_URL="${1}"
|
|
TEST_FUNCTION_NAME="${2}"
|
|
|
|
COMMAND_TO_RUN=(docker run -e DEFAULT_BRANCH=main -e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true -e JSCPD_CONFIG_FILE=".jscpd-test-linters.json" -e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" -e RUN_LOCAL=true -e TEST_CASE_RUN=true -e TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json" -v "$(pwd):/tmp/lint")
|
|
|
|
run_test_cases_expect_failure() {
|
|
COMMAND_TO_RUN+=(-e ANSIBLE_DIRECTORY="/test/linters/ansible/bad" -e CHECKOV_FILE_NAME=".checkov-test-linters-failure.yaml" -e FILTER_REGEX_INCLUDE=".*bad.*")
|
|
EXPECTED_EXIT_CODE=1
|
|
}
|
|
|
|
run_test_cases_expect_success() {
|
|
COMMAND_TO_RUN+=(-e ANSIBLE_DIRECTORY="/test/linters/ansible/good" -e CHECKOV_FILE_NAME=".checkov-test-linters-success.yaml" -e FILTER_REGEX_INCLUDE=".*good.*")
|
|
}
|
|
|
|
run_test_cases_log_level() {
|
|
run_test_cases_expect_success
|
|
LOG_LEVEL="NOTICE"
|
|
}
|
|
|
|
run_test_cases_expect_failure_notice_log() {
|
|
run_test_cases_expect_failure
|
|
LOG_LEVEL="NOTICE"
|
|
}
|
|
|
|
run_test_cases_non_default_home() {
|
|
run_test_cases_expect_success
|
|
COMMAND_TO_RUN+=(-e HOME=/tmp)
|
|
}
|
|
|
|
run_test_case_bash_exec_library_expect_failure() {
|
|
run_test_cases_expect_failure
|
|
COMMAND_TO_RUN+=(-e BASH_EXEC_IGNORE_LIBRARIES="true")
|
|
}
|
|
|
|
run_test_case_bash_exec_library_expect_success() {
|
|
run_test_cases_expect_success
|
|
COMMAND_TO_RUN+=(-e BASH_EXEC_IGNORE_LIBRARIES="true")
|
|
}
|
|
|
|
# Run the test setup function
|
|
${TEST_FUNCTION_NAME}
|
|
|
|
COMMAND_TO_RUN+=(-e LOG_LEVEL="${LOG_LEVEL:-"DEBUG"}")
|
|
|
|
COMMAND_TO_RUN+=("${SUPER_LINTER_TEST_CONTAINER_URL}")
|
|
|
|
declare -i EXPECTED_EXIT_CODE
|
|
EXPECTED_EXIT_CODE=${EXPECTED_EXIT_CODE:-0}
|
|
|
|
if [ ${EXPECTED_EXIT_CODE} -ne 0 ]; then
|
|
echo "Disable failures on error because the expected exit code is ${EXPECTED_EXIT_CODE}"
|
|
set +o errexit
|
|
fi
|
|
|
|
echo "Command to run: ${COMMAND_TO_RUN[*]}"
|
|
|
|
"${COMMAND_TO_RUN[@]}"
|
|
SUPER_LINTER_EXIT_CODE=$?
|
|
# Enable the errexit option in case we disabled it
|
|
set -o errexit
|
|
|
|
echo "Super-linter exit code: ${SUPER_LINTER_EXIT_CODE}"
|
|
|
|
if [ ${SUPER_LINTER_EXIT_CODE} -ne ${EXPECTED_EXIT_CODE} ]; then
|
|
echo "Super-linter exited with an unexpected code: ${SUPER_LINTER_EXIT_CODE}"
|
|
exit 1
|
|
else
|
|
echo "Super-linter exited with the expected code: ${SUPER_LINTER_EXIT_CODE}"
|
|
fi
|