diff --git a/Makefile b/Makefile index 3abc30e4..022290c2 100644 --- a/Makefile +++ b/Makefile @@ -281,7 +281,15 @@ lint-subset-files-enable-expensive-io-checks: ## Lint a small subset of files in $(SUPER_LINTER_TEST_CONTAINER_URL) .PHONY: test-lib -test-lib: test-build-file-list test-detect-files test-github-event test-setup-ssh test-validation test-output ## Test super-linter +test-lib: test-globals-languages test-build-file-list test-detect-files test-github-event test-setup-ssh test-validation test-output ## Test super-linter libs and globals + +.PHONY: test-globals-languages +test-globals-languages: ## Test globals/languages.sh + docker run \ + -v "$(CURDIR):/tmp/lint" \ + -w /tmp/lint \ + --entrypoint /tmp/lint/test/lib/globalsLanguagesTest.sh \ + $(SUPER_LINTER_TEST_CONTAINER_URL) .PHONY: test-build-file-list test-build-file-list: ## Test buildFileList diff --git a/docs/add-new-linter.md b/docs/add-new-linter.md index a2788ad9..8b457a09 100644 --- a/docs/add-new-linter.md +++ b/docs/add-new-linter.md @@ -90,6 +90,7 @@ new tool, it should include: - Update the orchestration scripts to run the new tool: - `lib/linter.sh` + - `globals/languages.sh` - `lib/functions/linterCommands.sh` - Provide the logic to populate the list of files or directories to examine: `lib/buildFileList.sh` - If necessary, provide elaborate logic to detect if the tool should examine a file or a directory: `lib/detectFiles.sh` diff --git a/lib/globals/languages.sh b/lib/globals/languages.sh new file mode 100755 index 00000000..df39bc9a --- /dev/null +++ b/lib/globals/languages.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# shellcheck disable=SC2034 +LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'BASH_EXEC' 'CHECKOV' 'CLANG_FORMAT' + 'CLOUDFORMATION' 'CLOJURE' 'COFFEESCRIPT' 'CPP' 'CSHARP' 'CSS' 'DART' + 'DOCKERFILE_HADOLINT' 'EDITORCONFIG' 'ENV' 'GITHUB_ACTIONS' + 'GITLEAKS' 'GHERKIN' 'GO' 'GO_MODULES' 'GO_RELEASER' 'GOOGLE_JAVA_FORMAT' 'GROOVY' 'HTML' 'JAVA' + 'JAVASCRIPT_ES' 'JAVASCRIPT_PRETTIER' 'JAVASCRIPT_STANDARD' 'JSCPD' 'JSON' 'JSONC' 'JSX' + 'KUBERNETES_KUBECONFORM' 'KOTLIN' 'LATEX' 'LUA' 'MARKDOWN' + 'NATURAL_LANGUAGE' 'OPENAPI' 'PERL' 'PHP_BUILTIN' 'PHP_PHPCS' 'PHP_PHPSTAN' + 'PHP_PSALM' 'POWERSHELL' 'PROTOBUF' 'PYTHON_BLACK' 'PYTHON_PYLINT' + 'PYTHON_FLAKE8' 'PYTHON_ISORT' 'PYTHON_MYPY' 'PYTHON_RUFF' + 'R' 'RAKU' 'RENOVATE' 'RUBY' 'RUST_2015' + 'RUST_2018' 'RUST_2021' 'RUST_CLIPPY' 'SCALAFMT' 'SHELL_SHFMT' + 'SNAKEMAKE_LINT' 'SNAKEMAKE_SNAKEFMT' 'STATES' 'SQL' 'SQLFLUFF' 'TEKTON' + 'TERRAFORM_FMT' 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX' + 'TYPESCRIPT_ES' 'TYPESCRIPT_PRETTIER' 'TYPESCRIPT_STANDARD' 'XML' 'YAML') diff --git a/lib/linter.sh b/lib/linter.sh index 206f80f0..2d5005af 100755 --- a/lib/linter.sh +++ b/lib/linter.sh @@ -265,23 +265,8 @@ TYPESCRIPT_ES_FILE_NAME="${TYPESCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # shellcheck disable=SC2034 # Variable is referenced indirectly YAML_FILE_NAME="${YAML_CONFIG_FILE:-.yaml-lint.yml}" -################## -# Language array # -################## -LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'BASH_EXEC' 'CHECKOV' 'CLANG_FORMAT' - 'CLOUDFORMATION' 'CLOJURE' 'COFFEESCRIPT' 'CPP' 'CSHARP' 'CSS' 'DART' - 'DOCKERFILE_HADOLINT' 'EDITORCONFIG' 'ENV' 'GITHUB_ACTIONS' - 'GITLEAKS' 'GHERKIN' 'GO' 'GO_MODULES' 'GO_RELEASER' 'GOOGLE_JAVA_FORMAT' 'GROOVY' 'HTML' 'JAVA' - 'JAVASCRIPT_ES' 'JAVASCRIPT_PRETTIER' 'JAVASCRIPT_STANDARD' 'JSCPD' 'JSON' 'JSONC' 'JSX' - 'KUBERNETES_KUBECONFORM' 'KOTLIN' 'LATEX' 'LUA' 'MARKDOWN' - 'NATURAL_LANGUAGE' 'OPENAPI' 'PERL' 'PHP_BUILTIN' 'PHP_PHPCS' 'PHP_PHPSTAN' - 'PHP_PSALM' 'POWERSHELL' 'PROTOBUF' 'PYTHON_BLACK' 'PYTHON_PYLINT' - 'PYTHON_FLAKE8' 'PYTHON_ISORT' 'PYTHON_MYPY' 'PYTHON_RUFF' - 'R' 'RAKU' 'RENOVATE' 'RUBY' 'RUST_2015' - 'RUST_2018' 'RUST_2021' 'RUST_CLIPPY' 'SCALAFMT' 'SHELL_SHFMT' - 'SNAKEMAKE_LINT' 'SNAKEMAKE_SNAKEFMT' 'STATES' 'SQL' 'SQLFLUFF' 'TEKTON' - 'TERRAFORM_FMT' 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX' - 'TYPESCRIPT_ES' 'TYPESCRIPT_PRETTIER' 'TYPESCRIPT_STANDARD' 'XML' 'YAML') +# shellcheck source=/dev/null +source /action/lib/globals/languages.sh ########################## # Array of changed files # diff --git a/test/inspec/super-linter/controls/super_linter.rb b/test/inspec/super-linter/controls/super_linter.rb index a04a5f3b..919e8ed2 100644 --- a/test/inspec/super-linter/controls/super_linter.rb +++ b/test/inspec/super-linter/controls/super_linter.rb @@ -471,6 +471,7 @@ control "super-linter-validate-files" do "/action/lib/functions/updateSSL.sh", "/action/lib/functions/validation.sh", "/action/lib/functions/worker.sh", + "/action/lib/globals/languages.sh", "/action/lib/.automation/actionlint.yml", "/action/lib/.automation/.ansible-lint.yml", "/action/lib/.automation/.arm-ttk.psd1", diff --git a/test/lib/buildFileListTest.sh b/test/lib/buildFileListTest.sh index 262b03c4..ae1034a2 100755 --- a/test/lib/buildFileListTest.sh +++ b/test/lib/buildFileListTest.sh @@ -4,8 +4,6 @@ set -o errexit set -o nounset set -o pipefail -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false # Default log level # shellcheck disable=SC2034 LOG_LEVEL="DEBUG" diff --git a/test/lib/detectFilesTest.sh b/test/lib/detectFilesTest.sh index fe81544e..9f8f6465 100755 --- a/test/lib/detectFilesTest.sh +++ b/test/lib/detectFilesTest.sh @@ -10,9 +10,6 @@ LOG_LEVEL="DEBUG" # shellcheck source=/dev/null source "lib/functions/log.sh" -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false - # shellcheck source=/dev/null source "lib/functions/detectFiles.sh" diff --git a/test/lib/githubEventTest.sh b/test/lib/githubEventTest.sh index b4b6ddcc..4bd0b997 100755 --- a/test/lib/githubEventTest.sh +++ b/test/lib/githubEventTest.sh @@ -4,8 +4,6 @@ set -o errexit set -o nounset set -o pipefail -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false # Default log level # shellcheck disable=SC2034 LOG_LEVEL="DEBUG" diff --git a/test/lib/globalsLanguagesTest.sh b/test/lib/globalsLanguagesTest.sh new file mode 100755 index 00000000..57ca6eb0 --- /dev/null +++ b/test/lib/globalsLanguagesTest.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +# Default log level +# shellcheck disable=SC2034 +LOG_LEVEL="DEBUG" + +# shellcheck source=/dev/null +source "lib/functions/log.sh" + +# shellcheck source=/dev/null +source "lib/globals/languages.sh" + +function LanguageArrayNotEmptyTest() { + local FUNCTION_NAME + FUNCTION_NAME="${FUNCNAME[0]}" + info "${FUNCTION_NAME} start" + + if [ ${#LANGUAGE_ARRAY[@]} -gt 0 ]; then + debug "Language array is not empty as expected" + else + fatal "Language array is empty" + fi + + notice "${FUNCTION_NAME} PASS" +} + +LanguageArrayNotEmptyTest diff --git a/test/lib/outputTest.sh b/test/lib/outputTest.sh index 39cab465..f6f725d3 100755 --- a/test/lib/outputTest.sh +++ b/test/lib/outputTest.sh @@ -3,8 +3,6 @@ set -o errexit set -o nounset set -o pipefail -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false # Default log level # shellcheck disable=SC2034 LOG_LEVEL="DEBUG" diff --git a/test/lib/setupSSHTest.sh b/test/lib/setupSSHTest.sh index 70f6ac43..4c1e81d5 100755 --- a/test/lib/setupSSHTest.sh +++ b/test/lib/setupSSHTest.sh @@ -4,8 +4,6 @@ set -o errexit set -o nounset set -o pipefail -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false # Default log level # shellcheck disable=SC2034 LOG_LEVEL="DEBUG" diff --git a/test/lib/validationTest.sh b/test/lib/validationTest.sh index c2a9c86b..f7295469 100755 --- a/test/lib/validationTest.sh +++ b/test/lib/validationTest.sh @@ -4,8 +4,6 @@ set -o errexit set -o nounset set -o pipefail -# shellcheck disable=SC2034 -CREATE_LOG_FILE=false # Default log level # shellcheck disable=SC2034 LOG_LEVEL="DEBUG"