-
-
Notifications
You must be signed in to change notification settings - Fork 941
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix benchmark-rule
script to resolve TypeError
#8090
Conversation
This fixes the following `TypeError` by using the Stylelint Public API, instead of PostCSS and Stylelint internals. ``` TypeError: Cannot read properties of undefined (reading 'config') at validateOptions (file:///Users/masafumi/git/stylelint/stylelint/lib/utils/validateOptions.mjs:19:40) ``` This makes the benchmark script slower, while the script will be less fragile. In addition, this converts the script's third argument from a rule context to a lint config because the `context.fix` property is now deprecated.
🦋 Changeset detectedLatest commit: 5a9fc28 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
I am not sure this was the intended when the script was created. result.stylelint ||= {
customMessages: {},
customUrls: {},
disabledRanges: {},
fixersData: {},
ruleMetadata: {},
ruleSeverities: {},
}; is simpler and more in line with the original intent. Ill let the others chime in.
This is a good change though. |
I think that the purpose of the benchmark script is to make sure that Stylelint is fast enough for our users. Benchmarking more of Stylelint is still in line with that purpose. It also won't get in the way of finding performance regressions. |
Alright as long as we don't use it as a metric between each releases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. LGTM 👍
I've left one question about the exit codes that are used in this script, but these already existed, so not really blocking.
As far as I know, we never used this script for that purpose. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. LGTM 👍
| datasource | package | from | to | | ---------- | --------- | ------- | ------- | | npm | stylelint | 16.10.0 | 16.11.0 | ## [v16.11.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16110) - Added: `--report-unscoped-disables` CLI flag and `reportUnscopedDisables` option to Node.js API and configuration object ([#8024](stylelint/stylelint#8024)) ([@Mouvedia](https://github.com/Mouvedia)). - Added: `ignoreFunctions: []` to `media-query-no-invalid` ([#8060](stylelint/stylelint#8060)) ([@ryo-manba](https://github.com/ryo-manba)). - Added: `name` configuration property under `overrides` ([#8095](stylelint/stylelint#8095)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `benchmark-rule` script to resolve `TypeError` ([#8090](stylelint/stylelint#8090)) ([@ybiquitous](https://github.com/ybiquitous)). - Fixed: `github` formatter deprecation warning link to `https://stylelint.io/awesome-stylelint#formatters` ([#8115](stylelint/stylelint#8115)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `function-calc-no-unspaced-operator` false negatives for `calc-size` ([#8026](stylelint/stylelint#8026)) ([@azat-io](https://github.com/azat-io)). - Fixed: `max-nesting-depth` false positives when the `&` selector is being ignored ([#8048](stylelint/stylelint#8048)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `media-feature-name-value-no-unknown` false positives for `display-mode: picture-in-picture` ([#8136](stylelint/stylelint#8136)) ([@Mouvedia](https://github.com/Mouvedia)). - Fixed: `no-irregular-whitespace` reported ranges ([#8066](stylelint/stylelint#8066)) ([@romainmenke](https://github.com/romainmenke)). - Fixed: `selector-attribute-name-disallowed-list` reported ranges ([#8037](stylelint/stylelint#8037)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-attribute-operator-allowed-list` reported ranges ([#8038](stylelint/stylelint#8038)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-attribute-operator-disallowed-list` reported ranges ([#8039](stylelint/stylelint#8039)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-class-pattern` reported ranges ([#8042](stylelint/stylelint#8042)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-combinator-allowed-list` reported ranges ([#8046](stylelint/stylelint#8046)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-combinator-disallowed-list` reported ranges ([#8047](stylelint/stylelint#8047)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-disallowed-list` reported ranges ([#8067](stylelint/stylelint#8067)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-id-pattern` reported ranges ([#8045](stylelint/stylelint#8045)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-attribute` reported ranges ([#8052](stylelint/stylelint#8052)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-class` reported ranges ([#8053](stylelint/stylelint#8053)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-combinators` reported-ranges ([#8055](stylelint/stylelint#8055)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-compound-selectors` reported ranges ([#8056](stylelint/stylelint#8056)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-id` reported ranges ([#8054](stylelint/stylelint#8054)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-pseudo-class` reported ranges ([#8057](stylelint/stylelint#8057)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-specificity` reported ranges ([#8058](stylelint/stylelint#8058)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-universal` reported ranges ([#8059](stylelint/stylelint#8059)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-nested-pattern` reported ranges ([#8072](stylelint/stylelint#8072)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-no-vendor-prefix` reported ranges ([#8073](stylelint/stylelint#8073)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-not-notation` reported ranges ([#8074](stylelint/stylelint#8074)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-allowed-list` reported ranges ([#8061](stylelint/stylelint#8061)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-disallowed-list` reported ranges ([#8062](stylelint/stylelint#8062)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-no-unknown` reported ranges ([#8063](stylelint/stylelint#8063)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-allowed-list` reported ranges ([#8068](stylelint/stylelint#8068)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-colon-notation` reported ranges ([#8069](stylelint/stylelint#8069)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-disallowed-list` reported ranges ([#8070](stylelint/stylelint#8070)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-no-unknown` false positives for `::scroll-marker` and `::scroll-marker-group` ([#8110](stylelint/stylelint#8110)) ([@Mouvedia](https://github.com/Mouvedia)). - Fixed: `selector-pseudo-element-no-unknown` reported ranges ([#8071](stylelint/stylelint#8071)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-type-no-unknown` reported ranges ([#8076](stylelint/stylelint#8076)) ([@ryo-manba](https://github.com/ryo-manba)).
| datasource | package | from | to | | ---------- | --------- | ------- | ------- | | npm | stylelint | 16.10.0 | 16.11.0 | ## [v16.11.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16110) - Added: `--report-unscoped-disables` CLI flag and `reportUnscopedDisables` option to Node.js API and configuration object ([#8024](stylelint/stylelint#8024)) ([@Mouvedia](https://github.com/Mouvedia)). - Added: `ignoreFunctions: []` to `media-query-no-invalid` ([#8060](stylelint/stylelint#8060)) ([@ryo-manba](https://github.com/ryo-manba)). - Added: `name` configuration property under `overrides` ([#8095](stylelint/stylelint#8095)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `benchmark-rule` script to resolve `TypeError` ([#8090](stylelint/stylelint#8090)) ([@ybiquitous](https://github.com/ybiquitous)). - Fixed: `github` formatter deprecation warning link to `https://stylelint.io/awesome-stylelint#formatters` ([#8115](stylelint/stylelint#8115)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `function-calc-no-unspaced-operator` false negatives for `calc-size` ([#8026](stylelint/stylelint#8026)) ([@azat-io](https://github.com/azat-io)). - Fixed: `max-nesting-depth` false positives when the `&` selector is being ignored ([#8048](stylelint/stylelint#8048)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `media-feature-name-value-no-unknown` false positives for `display-mode: picture-in-picture` ([#8136](stylelint/stylelint#8136)) ([@Mouvedia](https://github.com/Mouvedia)). - Fixed: `no-irregular-whitespace` reported ranges ([#8066](stylelint/stylelint#8066)) ([@romainmenke](https://github.com/romainmenke)). - Fixed: `selector-attribute-name-disallowed-list` reported ranges ([#8037](stylelint/stylelint#8037)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-attribute-operator-allowed-list` reported ranges ([#8038](stylelint/stylelint#8038)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-attribute-operator-disallowed-list` reported ranges ([#8039](stylelint/stylelint#8039)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-class-pattern` reported ranges ([#8042](stylelint/stylelint#8042)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-combinator-allowed-list` reported ranges ([#8046](stylelint/stylelint#8046)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-combinator-disallowed-list` reported ranges ([#8047](stylelint/stylelint#8047)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-disallowed-list` reported ranges ([#8067](stylelint/stylelint#8067)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-id-pattern` reported ranges ([#8045](stylelint/stylelint#8045)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-attribute` reported ranges ([#8052](stylelint/stylelint#8052)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-class` reported ranges ([#8053](stylelint/stylelint#8053)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-combinators` reported-ranges ([#8055](stylelint/stylelint#8055)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-compound-selectors` reported ranges ([#8056](stylelint/stylelint#8056)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-id` reported ranges ([#8054](stylelint/stylelint#8054)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-pseudo-class` reported ranges ([#8057](stylelint/stylelint#8057)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-specificity` reported ranges ([#8058](stylelint/stylelint#8058)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-max-universal` reported ranges ([#8059](stylelint/stylelint#8059)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-nested-pattern` reported ranges ([#8072](stylelint/stylelint#8072)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-no-vendor-prefix` reported ranges ([#8073](stylelint/stylelint#8073)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-not-notation` reported ranges ([#8074](stylelint/stylelint#8074)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-allowed-list` reported ranges ([#8061](stylelint/stylelint#8061)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-disallowed-list` reported ranges ([#8062](stylelint/stylelint#8062)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-class-no-unknown` reported ranges ([#8063](stylelint/stylelint#8063)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-allowed-list` reported ranges ([#8068](stylelint/stylelint#8068)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-colon-notation` reported ranges ([#8069](stylelint/stylelint#8069)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-disallowed-list` reported ranges ([#8070](stylelint/stylelint#8070)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-pseudo-element-no-unknown` false positives for `::scroll-marker` and `::scroll-marker-group` ([#8110](stylelint/stylelint#8110)) ([@Mouvedia](https://github.com/Mouvedia)). - Fixed: `selector-pseudo-element-no-unknown` reported ranges ([#8071](stylelint/stylelint#8071)) ([@ryo-manba](https://github.com/ryo-manba)). - Fixed: `selector-type-no-unknown` reported ranges ([#8076](stylelint/stylelint#8076)) ([@ryo-manba](https://github.com/ryo-manba)).
Related to #8044
Related to #8085
This fixes the following
TypeError
by using the Stylelint Public API, instead of PostCSS and Stylelint internals.Warning
This makes the benchmark script slower (about 2x slower in my machine), while the script will be less fragile.
In addition, this converts the script's third argument from a rule context to a lint config because the
context.fix
property is now deprecated.My local benchmarks