mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-22 06:01:05 -05:00
renovate-config-validator: validate shareable config preset (#4674)
* renovate-config-validator: validate default.json * Add RENOVATE_SHAREABLE_CONFIG_PRESET_FILE * Allow specifying multiple additional files with a environment variable * Add break
This commit is contained in:
parent
49528590d4
commit
50d462e0ec
17 changed files with 250 additions and 147 deletions
|
@ -4,17 +4,15 @@ This folder holds the test cases for **renovate**.
|
||||||
|
|
||||||
## Additional Docs
|
## Additional Docs
|
||||||
|
|
||||||
No Additional information is needed for this test case.
|
Due to the nature of the naming of files, we have `2` subfolders in this directory.
|
||||||
|
|
||||||
|
- `good` is for working, and correct renovate config files
|
||||||
|
- `bad` is for invalid, and incorrect renovate config files
|
||||||
|
|
||||||
## Good Test Cases
|
## Good Test Cases
|
||||||
|
|
||||||
The test cases denoted: `LANGUAGE_good_FILE.EXTENSION` are all valid, and should pass successfully when linted.
|
|
||||||
|
|
||||||
- **Note:** They are linted utilizing the default linter rules.
|
- **Note:** They are linted utilizing the default linter rules.
|
||||||
|
|
||||||
## Bad Test Cases
|
## Bad Test Cases
|
||||||
|
|
||||||
The test cases denoted: `LANGUAGE_bad_FILE.EXTENSION` are **NOT** valid, and should trigger errors when linted.
|
|
||||||
|
|
||||||
- **Note:** They are linted utilizing the default linter rules.
|
- **Note:** They are linted utilizing the default linter rules.
|
||||||
{"mode":"full","isActive":false}
|
|
||||||
|
|
18
.automation/test/renovate/bad/renovate.json
Normal file
18
.automation/test/renovate/bad/renovate.json
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"ignooooooooorePaths": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/bower_components/**",
|
||||||
|
"**/vendor/**",
|
||||||
|
"**/examples/**",
|
||||||
|
"**/__tests__/**",
|
||||||
|
"**/tests/**",
|
||||||
|
"**/__fixtures__/**"
|
||||||
|
],
|
||||||
|
"iggggggggnoreDeps": [
|
||||||
|
"go",
|
||||||
|
"node-fetch"
|
||||||
|
],
|
||||||
|
"constraaaaaaaaaints": {
|
||||||
|
"go": "1.20"
|
||||||
|
}
|
||||||
|
}
|
18
.automation/test/renovate/bad/renovate.json5
Normal file
18
.automation/test/renovate/bad/renovate.json5
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"ignooooooooorePaths": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/bower_components/**",
|
||||||
|
"**/vendor/**",
|
||||||
|
"**/examples/**",
|
||||||
|
"**/__tests__/**",
|
||||||
|
"**/tests/**",
|
||||||
|
"**/__fixtures__/**"
|
||||||
|
],
|
||||||
|
"iggggggggnoreDeps": [
|
||||||
|
"go",
|
||||||
|
"node-fetch"
|
||||||
|
],
|
||||||
|
"constraaaaaaaaaints": {
|
||||||
|
"go": "1.20"
|
||||||
|
}
|
||||||
|
}
|
18
.automation/test/renovate/good/renovate.json
Normal file
18
.automation/test/renovate/good/renovate.json
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"ignorePaths": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/bower_components/**",
|
||||||
|
"**/vendor/**",
|
||||||
|
"**/examples/**",
|
||||||
|
"**/__tests__/**",
|
||||||
|
"**/tests/**",
|
||||||
|
"**/__fixtures__/**"
|
||||||
|
],
|
||||||
|
"ignoreDeps": [
|
||||||
|
"go",
|
||||||
|
"node-fetch"
|
||||||
|
],
|
||||||
|
"constraints": {
|
||||||
|
"go": "1.20"
|
||||||
|
}
|
||||||
|
}
|
18
.automation/test/renovate/good/renovate.json5
Normal file
18
.automation/test/renovate/good/renovate.json5
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"ignorePaths": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/bower_components/**",
|
||||||
|
"**/vendor/**",
|
||||||
|
"**/examples/**",
|
||||||
|
"**/__tests__/**",
|
||||||
|
"**/tests/**",
|
||||||
|
"**/__fixtures__/**"
|
||||||
|
],
|
||||||
|
"ignoreDeps": [
|
||||||
|
"go",
|
||||||
|
"node-fetch"
|
||||||
|
],
|
||||||
|
"constraints": {
|
||||||
|
"go": "1.20"
|
||||||
|
}
|
||||||
|
}
|
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
|
@ -58,6 +58,7 @@ jobs:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
DEFAULT_BRANCH: main
|
DEFAULT_BRANCH: main
|
||||||
LOCAL_UPDATES: true
|
LOCAL_UPDATES: true
|
||||||
|
RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES: "default.json,hoge.json"
|
||||||
|
|
||||||
- name: Run Test Suite
|
- name: Run Test Suite
|
||||||
run: make IMAGE=${{ matrix.images.target }} test
|
run: make IMAGE=${{ matrix.images.target }} test
|
||||||
|
@ -76,6 +77,7 @@ jobs:
|
||||||
-e TEST_CASE_RUN=true \
|
-e TEST_CASE_RUN=true \
|
||||||
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
||||||
"ghcr.io/super-linter/super-linter:${tag}"
|
"ghcr.io/super-linter/super-linter:${tag}"
|
||||||
|
@ -88,6 +90,7 @@ jobs:
|
||||||
-e RUN_LOCAL=true \
|
-e RUN_LOCAL=true \
|
||||||
-e OUTPUT_DETAILS=detailed \
|
-e OUTPUT_DETAILS=detailed \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
||||||
"ghcr.io/super-linter/super-linter:${tag}"
|
"ghcr.io/super-linter/super-linter:${tag}"
|
||||||
|
|
|
@ -275,7 +275,7 @@ This means that if you run the linter "out of the box", all languages will be ch
|
||||||
But if you wish to select or exclude specific linters, we give you full control to choose which linters are run, and won't run anything unexpected.
|
But if you wish to select or exclude specific linters, we give you full control to choose which linters are run, and won't run anything unexpected.
|
||||||
|
|
||||||
| **ENV VAR** | **Default Value** | **Notes** |
|
| **ENV VAR** | **Default Value** | **Notes** |
|
||||||
|---------------------------------------|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-------------------------------------------------|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| **ACTIONS_RUNNER_DEBUG** | `false` | Flag to enable additional information about the linter, versions, and additional output. |
|
| **ACTIONS_RUNNER_DEBUG** | `false` | Flag to enable additional information about the linter, versions, and additional output. |
|
||||||
| **ANSIBLE_CONFIG_FILE** | `.ansible-lint.yml` | Filename for [Ansible-lint configuration](https://ansible-lint.readthedocs.io/en/latest/configuring.html#configuration-file) (ex: `.ansible-lint`, `.ansible-lint.yml`) |
|
| **ANSIBLE_CONFIG_FILE** | `.ansible-lint.yml` | Filename for [Ansible-lint configuration](https://ansible-lint.readthedocs.io/en/latest/configuring.html#configuration-file) (ex: `.ansible-lint`, `.ansible-lint.yml`) |
|
||||||
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s), relative to `DEFAULT_WORKSPACE`. Set to `.` to use the top-level of the `DEFAULT_WORKSPACE`. |
|
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s), relative to `DEFAULT_WORKSPACE`. Set to `.` to use the top-level of the `DEFAULT_WORKSPACE`. |
|
||||||
|
@ -317,6 +317,7 @@ But if you wish to select or exclude specific linters, we give you full control
|
||||||
| **PYTHON_ISORT_CONFIG_FILE** | `.isort.cfg` | Filename for [isort configuration](https://pycqa.github.io/isort/docs/configuration/config_files.html) (ex: `.isort.cfg`, `pyproject.toml`) |
|
| **PYTHON_ISORT_CONFIG_FILE** | `.isort.cfg` | Filename for [isort configuration](https://pycqa.github.io/isort/docs/configuration/config_files.html) (ex: `.isort.cfg`, `pyproject.toml`) |
|
||||||
| **PYTHON_MYPY_CONFIG_FILE** | `.mypy.ini` | Filename for [mypy configuration](https://mypy.readthedocs.io/en/stable/config_file.html) (ex: `.mypy.ini`, `setup.config`) |
|
| **PYTHON_MYPY_CONFIG_FILE** | `.mypy.ini` | Filename for [mypy configuration](https://mypy.readthedocs.io/en/stable/config_file.html) (ex: `.mypy.ini`, `setup.config`) |
|
||||||
| **PYTHON_PYLINT_CONFIG_FILE** | `.python-lint` | Filename for [pylint configuration](https://pylint.pycqa.org/en/latest/user_guide/run.html?highlight=rcfile#command-line-options) (ex: `.python-lint`, `.pylintrc`) |
|
| **PYTHON_PYLINT_CONFIG_FILE** | `.python-lint` | Filename for [pylint configuration](https://pylint.pycqa.org/en/latest/user_guide/run.html?highlight=rcfile#command-line-options) (ex: `.python-lint`, `.pylintrc`) |
|
||||||
|
| **RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES** | `` | 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`) |
|
||||||
| **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`) |
|
||||||
| **SNAKEMAKE_SNAKEFMT_CONFIG_FILE** | `.snakefmt.toml` | Filename for [Snakemake configuration](https://github.com/snakemake/snakefmt#configuration) (ex: `pyproject.toml`, `.snakefmt.toml`) |
|
| **SNAKEMAKE_SNAKEFMT_CONFIG_FILE** | `.snakefmt.toml` | Filename for [Snakemake configuration](https://github.com/snakemake/snakefmt#configuration) (ex: `pyproject.toml`, `.snakefmt.toml`) |
|
||||||
|
|
|
@ -337,11 +337,20 @@ function BuildFileList() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# See https://docs.renovatebot.com/configuration-options/
|
# See https://docs.renovatebot.com/configuration-options/
|
||||||
if [[ "${BASE_FILE}" =~ renovate.+json5? ]] ||
|
if [[ "${BASE_FILE}" =~ renovate.json5? ]] ||
|
||||||
[ "${BASE_FILE}" == ".renovaterc" ] || [[ "${BASE_FILE}" =~ .renovaterc.+json5? ]]; then
|
[ "${BASE_FILE}" == ".renovaterc" ] || [[ "${BASE_FILE}" =~ .renovaterc.json5? ]]; then
|
||||||
FILE_ARRAY_RENOVATE+=("${FILE}")
|
FILE_ARRAY_RENOVATE+=("${FILE}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# See https://docs.renovatebot.com/config-presets/
|
||||||
|
IFS="," read -r -a RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES_ARRAY <<<"${RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES}"
|
||||||
|
for file_name in "${RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES_ARRAY[@]}"; do
|
||||||
|
if [ "${BASE_FILE}" == "${file_name}" ]; then
|
||||||
|
FILE_ARRAY_RENOVATE+=("${FILE}")
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Get the shell files #
|
# Get the shell files #
|
||||||
#######################
|
#######################
|
||||||
|
|
|
@ -130,6 +130,26 @@ function LintCodebase() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Check if Renovate #
|
||||||
|
#####################
|
||||||
|
if [[ ${FILE_TYPE} == *"RENOVATE"* ]]; then
|
||||||
|
debug "FILE_TYPE for FILE ${FILE} is related to Renovate: ${FILE_TYPE}"
|
||||||
|
if [[ ${FILE} == *"good"* ]]; then
|
||||||
|
debug "Setting FILE_STATUS for FILE ${FILE} to 'good'"
|
||||||
|
#############
|
||||||
|
# Good file #
|
||||||
|
#############
|
||||||
|
FILE_STATUS='good'
|
||||||
|
elif [[ ${FILE} == *"bad"* ]]; then
|
||||||
|
debug "Setting FILE_STATUS for FILE ${FILE} to 'bad'"
|
||||||
|
############
|
||||||
|
# Bad file #
|
||||||
|
############
|
||||||
|
FILE_STATUS='bad'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Check if Cargo.toml for Rust Clippy #
|
# Check if Cargo.toml for Rust Clippy #
|
||||||
#######################################
|
#######################################
|
||||||
|
|
Loading…
Reference in a new issue