feat: allow passing custom options to rust clippy (#6094)

Define the RUST_CLIPPY_COMMAND_OPTIONS variable to allow passing
arbitrary options to the command that runs RUST_CLIPPY.

Fix the ARM test case that just failed because of its apiVersion just
expired.

Close #4001
This commit is contained in:
Marco Ferrari 2024-08-31 14:51:28 +02:00 committed by GitHub
parent dd33b476f8
commit 05d4d4e128
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 51 additions and 12 deletions

View file

@ -9,6 +9,12 @@
"editor.formatOnSaveMode": "file", "editor.formatOnSaveMode": "file",
"editor.wordWrap": "off", "editor.wordWrap": "off",
"prettier.resolveGlobalModules": true, "prettier.resolveGlobalModules": true,
"[markdown]": {
"editor.wordWrap": "off"
},
"[shellscript]": {
"editor.defaultFormatter": "mkhl.shfmt"
},
"[terraform]": { "[terraform]": {
"editor.defaultFormatter": "hashicorp.terraform" "editor.defaultFormatter": "hashicorp.terraform"
}, },

View file

@ -244,7 +244,7 @@ test-git-flags: ## Run super-linter with different git-related flags
.PHONY: lint-codebase .PHONY: lint-codebase
lint-codebase: ## Lint the entire codebase lint-codebase: ## Lint the entire codebase
docker run \ docker run $(DOCKER_FLAGS) \
-e CREATE_LOG_FILE=true \ -e CREATE_LOG_FILE=true \
-e RUN_LOCAL=true \ -e RUN_LOCAL=true \
-e LOG_LEVEL=DEBUG \ -e LOG_LEVEL=DEBUG \
@ -263,7 +263,7 @@ lint-codebase: ## Lint the entire codebase
# Return an error if there are changes to commit # Return an error if there are changes to commit
.PHONY: fix-codebase .PHONY: fix-codebase
fix-codebase: ## Fix and format the entire codebase fix-codebase: ## Fix and format the entire codebase
docker run \ docker run $(DOCKER_FLAGS) \
-e CREATE_LOG_FILE=true \ -e CREATE_LOG_FILE=true \
-e DEFAULT_BRANCH=main \ -e DEFAULT_BRANCH=main \
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \ -e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \

View file

@ -297,6 +297,7 @@ You can configure Super-linter using the following environment variables:
| **PYTHON_RUFF_CONFIG_FILE** | `.ruff.toml` | Filename for [ruff configuration](https://docs.astral.sh/ruff/configuration/) | | **PYTHON_RUFF_CONFIG_FILE** | `.ruff.toml` | Filename for [ruff configuration](https://docs.astral.sh/ruff/configuration/) |
| **RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES** | not set | Comma-separated filenames for [renovate shareable config preset](https://docs.renovatebot.com/config-presets/) (ex: `default.json`) | | **RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES** | not set | Comma-separated filenames for [renovate shareable config preset](https://docs.renovatebot.com/config-presets/) (ex: `default.json`) |
| **RUBY_CONFIG_FILE** | `.ruby-lint.yml` | Filename for [rubocop configuration](https://docs.rubocop.org/rubocop/configuration.html) (ex: `.ruby-lint.yml`, `.rubocop.yml`) | | **RUBY_CONFIG_FILE** | `.ruby-lint.yml` | Filename for [rubocop configuration](https://docs.rubocop.org/rubocop/configuration.html) (ex: `.ruby-lint.yml`, `.rubocop.yml`) |
| **RUST_CLIPPY_COMMAND_OPTIONS** | not set | Additional options and arguments to pass to the command when running Clippy. |
| **SAVE_SUPER_LINTER_OUTPUT** | `false` | If set to `true`, Super-linter will save its output in the workspace. For more information, see [Super-linter outputs](#super-linter-outputs). | | **SAVE_SUPER_LINTER_OUTPUT** | `false` | If set to `true`, Super-linter will save its output in the workspace. For more information, see [Super-linter outputs](#super-linter-outputs). |
| **SAVE_SUPER_LINTER_SUMMARY** | `false` | If set to `true`, Super-linter will save a summary. For more information, see [Summary outputs](#summary-outputs). | | **SAVE_SUPER_LINTER_SUMMARY** | `false` | If set to `true`, Super-linter will save a summary. For more information, see [Summary outputs](#summary-outputs). |
| **SCALAFMT_CONFIG_FILE** | `.scalafmt.conf` | Filename for [scalafmt configuration](https://scalameta.org/scalafmt/docs/configuration.html) (ex: `.scalafmt.conf`) | | **SCALAFMT_CONFIG_FILE** | `.scalafmt.conf` | Filename for [scalafmt configuration](https://scalameta.org/scalafmt/docs/configuration.html) (ex: `.scalafmt.conf`) |

View file

@ -142,6 +142,10 @@ LINTER_COMMANDS_ARRAY_RUST_2015=(rustfmt --edition 2015)
LINTER_COMMANDS_ARRAY_RUST_2018=(rustfmt --edition 2018) LINTER_COMMANDS_ARRAY_RUST_2018=(rustfmt --edition 2018)
LINTER_COMMANDS_ARRAY_RUST_2021=(rustfmt --edition 2021) LINTER_COMMANDS_ARRAY_RUST_2021=(rustfmt --edition 2021)
LINTER_COMMANDS_ARRAY_RUST_CLIPPY=(cargo clippy) LINTER_COMMANDS_ARRAY_RUST_CLIPPY=(cargo clippy)
if [ -n "${RUST_CLIPPY_COMMAND_OPTIONS:-}" ]; then
export RUST_CLIPPY_COMMAND_OPTIONS
AddOptionsToCommand "LINTER_COMMANDS_ARRAY_RUST_CLIPPY" "${RUST_CLIPPY_COMMAND_OPTIONS}"
fi
LINTER_COMMANDS_ARRAY_SCALAFMT=(scalafmt --config "${SCALAFMT_LINTER_RULES}") LINTER_COMMANDS_ARRAY_SCALAFMT=(scalafmt --config "${SCALAFMT_LINTER_RULES}")
LINTER_COMMANDS_ARRAY_SHELL_SHFMT=(shfmt) LINTER_COMMANDS_ARRAY_SHELL_SHFMT=(shfmt)
LINTER_COMMANDS_ARRAY_SNAKEMAKE_LINT=(snakemake --lint -s) LINTER_COMMANDS_ARRAY_SNAKEMAKE_LINT=(snakemake --lint -s)

View file

@ -7,13 +7,6 @@ set -o pipefail
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "test/testUtils.sh" source "test/testUtils.sh"
# Default log level
# shellcheck disable=SC2034
LOG_LEVEL="DEBUG"
# shellcheck source=/dev/null
source "lib/functions/log.sh"
# linterCommands.sh needs these # linterCommands.sh needs these
# shellcheck source=/dev/null # shellcheck source=/dev/null
@ -194,8 +187,18 @@ function InitInputConsumeCommandsTest() {
EXPECTED_LINTER_COMMANDS_ARRAY_ANSIBLE=("${BASE_LINTER_COMMANDS_ARRAY_ANSIBLE[@]}" "${INPUT_CONSUME_COMMAND[@]}") EXPECTED_LINTER_COMMANDS_ARRAY_ANSIBLE=("${BASE_LINTER_COMMANDS_ARRAY_ANSIBLE[@]}" "${INPUT_CONSUME_COMMAND[@]}")
# shellcheck disable=SC2034 # shellcheck disable=SC2034
EXPECTED_LINTER_COMMANDS_ARRAY_GO_MODULES=("${BASE_LINTER_COMMANDS_ARRAY_GO_MODULES[@]}" "${INPUT_CONSUME_COMMAND[@]}") EXPECTED_LINTER_COMMANDS_ARRAY_GO_MODULES=("${BASE_LINTER_COMMANDS_ARRAY_GO_MODULES[@]}" "${INPUT_CONSUME_COMMAND[@]}")
# Add some custom options to the Rust command to ensure that they are added before the "input consume" command
# shellcheck disable=SC2034 # shellcheck disable=SC2034
EXPECTED_LINTER_COMMANDS_ARRAY_RUST_CLIPPY=("${BASE_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}" "${INPUT_CONSUME_COMMAND[@]}") local RUST_CLIPPY_COMMAND_OPTIONS_ARRAY=("--verbose --help")
RUST_CLIPPY_COMMAND_OPTIONS="${RUST_CLIPPY_COMMAND_OPTIONS_ARRAY[*]}"
# Source the file again so it accounts for modifications
# shellcheck source=/dev/null
source "lib/functions/linterCommands.sh"
# shellcheck disable=SC2034
EXPECTED_LINTER_COMMANDS_ARRAY_RUST_CLIPPY=("${BASE_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}" "${RUST_CLIPPY_COMMAND_OPTIONS_ARRAY[@]}" "${INPUT_CONSUME_COMMAND[@]}")
if ! InitInputConsumeCommands; then if ! InitInputConsumeCommands; then
fatal "Error while initializing GNU parallel input consume commands" fatal "Error while initializing GNU parallel input consume commands"
@ -318,6 +321,8 @@ CommandOptionsTest() {
KUBERNETES_KUBECONFORM_OPTIONS="-debug -verbose -v" KUBERNETES_KUBECONFORM_OPTIONS="-debug -verbose -v"
# shellcheck disable=SC2034 # shellcheck disable=SC2034
PERL_PERLCRITIC_OPTIONS="--gentle --count test/linters/perl/perl_good_1.pl" PERL_PERLCRITIC_OPTIONS="--gentle --count test/linters/perl/perl_good_1.pl"
# shellcheck disable=SC2034
RUST_CLIPPY_COMMAND_OPTIONS="--verbose --help"
# Source the file again so it accounts for modifications # Source the file again so it accounts for modifications
# shellcheck source=/dev/null # shellcheck source=/dev/null
@ -327,6 +332,11 @@ CommandOptionsTest() {
"${LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}" "${LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}"
"${LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}" "${LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}"
"${LINTER_COMMANDS_ARRAY_PERL[@]}" "${LINTER_COMMANDS_ARRAY_PERL[@]}"
# Rust Clippy is only available in the standard image, so we can't run it when
# testing the slim image
if IsStandardImage; then
"${LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}"
fi
notice "${FUNCTION_NAME} PASS" notice "${FUNCTION_NAME} PASS"
} }
@ -348,6 +358,14 @@ AddOptionsToCommandTest() {
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_PERL" "--gentle --count test/linters/perl/perl_good_1.pl" AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_PERL" "--gentle --count test/linters/perl/perl_good_1.pl"
"${TEST_LINTER_COMMANDS_ARRAY_PERL[@]}" "${TEST_LINTER_COMMANDS_ARRAY_PERL[@]}"
# Rust Clippy is only available in the standard image, so we can't run it when
# testing the slim image
if IsStandardImage; then
local TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY=("${BASE_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}")
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY" "--verbose --help"
"${TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}"
fi
notice "${FUNCTION_NAME} PASS" notice "${FUNCTION_NAME} PASS"
} }

View file

@ -22,7 +22,7 @@
"resources": [ "resources": [
{ {
"type": "Microsoft.Storage/storageAccounts", "type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01", "apiVersion": "2023-01-01",
"name": "[concat('store', uniquestring(resourceGroup().id))]", "name": "[concat('store', uniquestring(resourceGroup().id))]",
"location": "[parameters('location')]", "location": "[parameters('location')]",
"kind": "StorageV2", "kind": "StorageV2",

View file

@ -158,6 +158,16 @@ IsLanguageInSlimImage() {
fi fi
} }
IsStandardImage() {
if [[ "${IMAGE}" == "standard" ]]; then
debug "This is the standard image"
return 0
else
debug "This isn't the standard image"
return 1
fi
}
RemoveTestLeftovers() { RemoveTestLeftovers() {
local LEFTOVERS_TO_CLEAN=() local LEFTOVERS_TO_CLEAN=()
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/target") LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/target")