From b85fb24c0e53202ea818835771e8549fa5ebea4f Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 17 Aug 2021 09:58:20 +0100 Subject: [PATCH] Issue #2591827 by longwave, neclimdul, elachlan, daffie: Add YAML linting to core coding standards checks --- core/.eslintignore | 6 ++++++ core/.eslintrc.json | 3 ++- core/.prettierignore | 1 + core/core.services.yml | 2 -- core/drupalci.yml | 4 +--- core/package.json | 2 ++ core/scripts/dev/commit-code-check.sh | 19 ++++++++++++++++++- core/yarn.lock | 23 +++++++++++++++++++++-- 8 files changed, 51 insertions(+), 9 deletions(-) diff --git a/core/.eslintignore b/core/.eslintignore index e3c4c4545fd7..0cf12c6e2554 100644 --- a/core/.eslintignore +++ b/core/.eslintignore @@ -8,3 +8,9 @@ modules/locale/tests/locale_test.es6.js misc/polyfills/array.find.es6.js misc/polyfills/element.closest.es6.js misc/polyfills/object.assign.es6.js + +# Ignore deliberately malformed YAML files. +modules/system/tests/fixtures/HtaccessTest/access_test.yml +modules/system/tests/themes/test_theme_libraries_empty/test_theme_libraries_empty.info.yml +tests/Drupal/Tests/Core/Asset/library_test_files/empty.libraries.yml +tests/Drupal/Tests/Core/Asset/library_test_files/invalid_file.libraries.yml diff --git a/core/.eslintrc.json b/core/.eslintrc.json index 8feef6e695cf..8a871ac96934 100644 --- a/core/.eslintrc.json +++ b/core/.eslintrc.json @@ -1,7 +1,8 @@ { "extends": [ "airbnb", - "plugin:prettier/recommended" + "plugin:prettier/recommended", + "plugin:yml/recommended" ], "root": true, "env": { diff --git a/core/.prettierignore b/core/.prettierignore index 2e0da403ddcf..352215fa7986 100644 --- a/core/.prettierignore +++ b/core/.prettierignore @@ -1 +1,2 @@ modules/locale/tests/locale_test.es6.js +*.yml diff --git a/core/core.services.yml b/core/core.services.yml index 62497cda5bd6..4da78a00d721 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -1245,11 +1245,9 @@ services: arguments: ['@current_user'] ajax_response.attachments_processor: class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor - tags: arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler'] html_response.attachments_processor: class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor - tags: arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler'] html_response.subscriber: class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber diff --git a/core/drupalci.yml b/core/drupalci.yml index 82edd46046aa..94aa2ad22ff0 100644 --- a/core/drupalci.yml +++ b/core/drupalci.yml @@ -3,8 +3,6 @@ # https://www.drupal.org/drupalorg/docs/drupal-ci/customizing-drupalci-testing build: assessment: - validate_codebase: - # Core's code quality is checked by container_command.commit_checks. testing: # Run code quality checks. container_command.commit-checks: @@ -45,4 +43,4 @@ build: halt-on-fail: false # Run nightwatch testing. # @see https://www.drupal.org/project/drupal/issues/2869825 - nightwatchjs: + nightwatchjs: {} diff --git a/core/package.json b/core/package.json index 403398e82552..55dfe7044e28 100644 --- a/core/package.json +++ b/core/package.json @@ -22,6 +22,7 @@ "lint:core-js-stats": "node ./node_modules/eslint/bin/eslint.js --format=./scripts/js/eslint-stats-by-type.js .", "lint:css": "stylelint \"**/*.css\"", "lint:css-checkstyle": "stylelint \"**/*.css\" --custom-formatter ./node_modules/stylelint-checkstyle-formatter/index.js", + "lint:yaml": "node ./node_modules/eslint/bin/eslint.js --ext .yml .", "test:nightwatch": "cross-env BABEL_ENV=development node -r dotenv-safe/config -r @babel/register ./node_modules/.bin/nightwatch --config ./tests/Drupal/Nightwatch/nightwatch.conf.js", "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\"", "spellcheck": "cspell", @@ -54,6 +55,7 @@ "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-react": "^7.10.0", "eslint-plugin-react-hooks": "^4.1.2", + "eslint-plugin-yml": "^0.10.0", "farbtastic": "https://github.com/mattfarina/farbtastic/archive/1.3u.tar.gz", "glob": "^7.1.2", "joyride": "https://github.com/zurb/joyride/archive/refs/heads/v2.1.tar.gz", diff --git a/core/scripts/dev/commit-code-check.sh b/core/scripts/dev/commit-code-check.sh index 1c0742a63e05..bbeb3eb2d377 100755 --- a/core/scripts/dev/commit-code-check.sh +++ b/core/scripts/dev/commit-code-check.sh @@ -11,7 +11,7 @@ # - File modes. # - No changes to core/node_modules directory. # - PHPCS checks PHP and YAML files. -# - Eslint checks JavaScript files. +# - ESLint checks JavaScript and YAML files. # - Checks .es6.js and .js files are equivalent. # - Stylelint checks CSS files. # - Checks .pcss.css and .css files are equivalent. @@ -232,6 +232,23 @@ fi fi + ############################################################################ + ### YAML FILES + ############################################################################ + if [[ -f "$TOP_LEVEL/$FILE" ]] && [[ $FILE =~ \.yml$ ]]; then + # Test files with ESLint. + cd "$TOP_LEVEL/core" + node ./node_modules/eslint/bin/eslint.js --quiet --resolve-plugins-relative-to . "$TOP_LEVEL/$FILE" + YAMLLINT=$? + if [ "$YAMLLINT" -ne "0" ]; then + # If there are failures set the status to a number other than 0. + STATUS=1 + else + printf "ESLint: $FILE ${green}passed${reset}\n" + fi + cd $TOP_LEVEL + fi + ############################################################################ ### JAVASCRIPT FILES ############################################################################ diff --git a/core/yarn.lock b/core/yarn.lock index 5eff047b236b..cef6ce3705e7 100644 --- a/core/yarn.lock +++ b/core/yarn.lock @@ -2449,6 +2449,16 @@ eslint-plugin-react@^7.10.0: resolve "^2.0.0-next.3" string.prototype.matchall "^4.0.4" +eslint-plugin-yml@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-0.10.0.tgz#edab6f859121fb66740a631d27bfb68d42316e1d" + integrity sha512-N3F9Zcq9SeEphK02FdLWAg4eMbOzXTZ9K6QrPuv27mW212yOmEIrTiqzA29w2NBQGsfKMxfEQRV86JVfJmWJ8w== + dependencies: + debug "^4.1.1" + lodash "^4.17.19" + natural-compare "^1.4.0" + yaml-eslint-parser "^0.4.0" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -2469,7 +2479,7 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -3731,7 +3741,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: +lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6136,6 +6146,15 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-eslint-parser@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-0.4.1.tgz#66966662010ac6ab372e61b99618e59dc903ccf1" + integrity sha512-GoJ/p1EW8O2tbTbuhfxjo1XhfUFU3uX3kwvfEQoOaZjO2Lubx8POjlsSqB+18b3SxkujAdQYT9r9nURaUWNYWQ== + dependencies: + eslint-visitor-keys "^2.1.0" + lodash "^4.17.20" + yaml "^1.10.0" + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" -- GitLab