eslint-plugin-ava icon indicating copy to clipboard operation
eslint-plugin-ava copied to clipboard

Add `no-error-ctor-with-notthrows` rule

Open GMartigny opened this issue 4 years ago • 6 comments

Fixes #178.

Continue from previous PR #240 with latest review.


IssueHunt Summary

Referenced issues

This pull request has been submitted to:


GMartigny avatar Mar 24 '21 14:03 GMartigny

Since the previous PR, AVA changed its throws assertion. It now accepts an object instead, so it makes more sense to detect that: https://github.com/avajs/ava/blob/main/docs/03-assertions.md#throwsfn-expectation-message

sindresorhus avatar Apr 06 '21 18:04 sindresorhus

I wonder if it now makes more sense to improve https://github.com/avajs/eslint-plugin-ava/blob/main/docs/rules/assertion-arguments.md than to add a new rule for this?

sindresorhus avatar Apr 06 '21 18:04 sindresorhus

I wonder if it now makes more sense to improve https://github.com/avajs/eslint-plugin-ava/blob/main/docs/rules/assertion-arguments.md than to add a new rule for this?

IMO, this rule affect all assertion. Using it only for .throws or .notThrows is not optimal.

It now accepts an object instead, so it makes more sense to detect that.

What do you mean ? Should the rule enforce the use of expectation object or disallow the use of constructor in notThrows. IMO, these are two distinct rules, so the first one can be addressed in another PR.

GMartigny avatar Apr 13 '21 12:04 GMartigny

IMO, this rule affect all assertion. Using it only for .throws or .notThrows is not optimal.

Why is it not optimal?

Should the rule enforce the use of expectation object or disallow the use of constructor in notThrows.

Enforce expectation object. It no longer makes any sense to disallow a constructor as the user wouldn't use a constructor directly for t.throws, so they wouldn't mistakingly use it in t.notThrows.

sindresorhus avatar Apr 19 '21 10:04 sindresorhus

Why is it not optimal?

I feel like having a rule applying to all assertion, and sometimes another one is kinda misleading. But it might not be a big deal. You decision in the end.

GMartigny avatar Apr 19 '21 14:04 GMartigny

I feel like having a rule applying to all assertion, and sometimes another one is kinda misleading.

Not sure how that is misleading. It would be documented. It's not like the user wouldn't want this either as it catches a bug that will crash at runtime. I think assertion-arguments is a good fit for this.

sindresorhus avatar Apr 19 '21 18:04 sindresorhus