⬅️ Back to Table of Contents
📄 RuleTester.ts
📊 Analysis Summary
Metric |
Count |
🔧 Functions |
2 |
🧱 Classes |
2 |
📦 Imports |
10 |
📐 Interfaces |
6 |
📑 Type Aliases |
1 |
📚 Table of Contents
🛠️ File Location:
📂 packages/utils/src/ts-eslint/RuleTester.ts
📦 Imports
Name |
Source |
ESLintRuleTester |
eslint |
AST_NODE_TYPES |
../ts-estree |
AST_TOKEN_TYPES |
../ts-estree |
ClassicConfig |
./Config |
Linter |
./Linter |
ParserOptions |
./ParserOptions |
ReportDescriptorMessageData |
./Rule |
RuleCreateFunction |
./Rule |
RuleModule |
./Rule |
SharedConfigurationSettings |
./Rule |
Functions
RuleTesterBase.run(ruleName: string, rule: RuleModule<MessageIds, Options>, tests: RunTests<MessageIds, Options>): void
Code
run<MessageIds extends string, Options extends readonly unknown[]>(
ruleName: string,
rule: RuleModule<MessageIds, Options>,
tests: RunTests<MessageIds, Options>,
): void;
-
JSDoc:
/**
* Adds a new rule test to execute.
* @param ruleName The name of the rule to run.
* @param rule The rule to test.
* @param tests The collection of tests to run.
*/
-
Parameters:
ruleName: string
rule: RuleModule<MessageIds, Options>
tests: RunTests<MessageIds, Options>
- Return Type:
void
`RuleTesterBase.defineRule(name: string, rule: | RuleCreateFunction
| RuleModule<MessageIds, Options>): void`
Code
defineRule<MessageIds extends string, Options extends readonly unknown[]>(
name: string,
rule:
| RuleCreateFunction<MessageIds, Options>
| RuleModule<MessageIds, Options>,
): void;
-
JSDoc:
/**
* Define a rule for one particular run of tests.
*/
-
Parameters:
name: string
rule: | RuleCreateFunction<MessageIds, Options>
| RuleModule<MessageIds, Options>
- Return Type:
void
Classes
RuleTesterBase
Class Code
declare class RuleTesterBase {
/**
* Creates a new instance of RuleTester.
* @param testerConfig extra configuration for the tester
*/
constructor(testerConfig?: RuleTesterConfig);
/**
* Adds a new rule test to execute.
* @param ruleName The name of the rule to run.
* @param rule The rule to test.
* @param tests The collection of tests to run.
*/
run<MessageIds extends string, Options extends readonly unknown[]>(
ruleName: string,
rule: RuleModule<MessageIds, Options>,
tests: RunTests<MessageIds, Options>,
): void;
/**
* If you supply a value to this property, the rule tester will call this instead of using the version defined on
* the global namespace.
*/
static get describe(): RuleTesterTestFrameworkFunction;
static set describe(value: RuleTesterTestFrameworkFunction | undefined);
/**
* If you supply a value to this property, the rule tester will call this instead of using the version defined on
* the global namespace.
*/
static get it(): RuleTesterTestFrameworkFunction;
static set it(value: RuleTesterTestFrameworkFunction | undefined);
/**
* If you supply a value to this property, the rule tester will call this instead of using the version defined on
* the global namespace.
*/
static get itOnly(): RuleTesterTestFrameworkFunction;
static set itOnly(value: RuleTesterTestFrameworkFunction | undefined);
/**
* Define a rule for one particular run of tests.
*/
defineRule<MessageIds extends string, Options extends readonly unknown[]>(
name: string,
rule:
| RuleCreateFunction<MessageIds, Options>
| RuleModule<MessageIds, Options>,
): void;
}
Methods
run(ruleName: string, rule: RuleModule<MessageIds, Options>, tests: RunTests<MessageIds, Options>): void
Code
run<MessageIds extends string, Options extends readonly unknown[]>(
ruleName: string,
rule: RuleModule<MessageIds, Options>,
tests: RunTests<MessageIds, Options>,
): void;
`defineRule(name: string, rule: | RuleCreateFunction
| RuleModule<MessageIds, Options>): void`
Code
defineRule<MessageIds extends string, Options extends readonly unknown[]>(
name: string,
rule:
| RuleCreateFunction<MessageIds, Options>
| RuleModule<MessageIds, Options>,
): void;
RuleTester
Class Code
export class RuleTester extends (ESLintRuleTester as typeof RuleTesterBase) {}
Interfaces
ValidTestCase<Options extends readonly unknown[]>
Interface Code
export interface ValidTestCase<Options extends readonly unknown[]> {
/**
* Code for the test case.
*/
readonly code: string;
/**
* Environments for the test case.
*/
readonly env?: Readonly<Linter.EnvironmentConfig>;
/**
* The fake filename for the test case. Useful for rules that make assertion about filenames.
*/
readonly filename?: string;
/**
* The additional global variables.
*/
readonly globals?: Readonly<Linter.GlobalsConfig>;
/**
* Name for the test case.
*/
readonly name?: string;
/**
* Run this case exclusively for debugging in supported test frameworks.
*/
readonly only?: boolean;
/**
* Options for the test case.
*/
readonly options?: Readonly<Options>;
/**
* The absolute path for the parser.
*/
readonly parser?: string;
/**
* Options for the parser.
*/
readonly parserOptions?: Readonly<ParserOptions>;
/**
* Settings for the test case.
*/
readonly settings?: Readonly<SharedConfigurationSettings>;
}
Properties
Name |
Type |
Optional |
Description |
code |
string |
✗ |
|
env |
Readonly<Linter.EnvironmentConfig> |
✓ |
|
filename |
string |
✓ |
|
globals |
Readonly<Linter.GlobalsConfig> |
✓ |
|
name |
string |
✓ |
|
only |
boolean |
✓ |
|
options |
Readonly<Options> |
✓ |
|
parser |
string |
✓ |
|
parserOptions |
Readonly<ParserOptions> |
✓ |
|
settings |
Readonly<SharedConfigurationSettings> |
✓ |
|
SuggestionOutput<MessageIds extends string>
Interface Code
export interface SuggestionOutput<MessageIds extends string> {
/**
* The data used to fill the message template.
*/
readonly data?: ReportDescriptorMessageData;
/**
* Reported message ID.
*/
readonly messageId: MessageIds;
/**
* NOTE: Suggestions will be applied as a stand-alone change, without triggering multi-pass fixes.
* Each individual error has its own suggestion, so you have to show the correct, _isolated_ output for each suggestion.
*/
readonly output: string;
// we disallow this because it's much better to use messageIds for reusable errors that are easily testable
// readonly desc?: string;
}
Properties
Name |
Type |
Optional |
Description |
data |
ReportDescriptorMessageData |
✓ |
|
messageId |
MessageIds |
✗ |
|
output |
string |
✗ |
|
InvalidTestCase<MessageIds extends string, Options extends readonly unknown[]>
Interface Code
export interface InvalidTestCase<
MessageIds extends string,
Options extends readonly unknown[],
> extends ValidTestCase<Options> {
/**
* Expected errors.
*/
readonly errors: readonly TestCaseError<MessageIds>[];
/**
* The expected code after autofixes are applied. If set to `null`, the test runner will assert that no autofix is suggested.
*/
readonly output?: string | string[] | null;
}
Properties
Name |
Type |
Optional |
Description |
errors |
readonly TestCaseError<MessageIds>[] |
✗ |
|
output |
string | string[] | null |
✓ |
|
TestCaseError<MessageIds extends string>
Interface Code
export interface TestCaseError<MessageIds extends string> {
/**
* The 1-based column number of the reported start location.
*/
readonly column?: number;
/**
* The data used to fill the message template.
*/
readonly data?: ReportDescriptorMessageData;
/**
* The 1-based column number of the reported end location.
*/
readonly endColumn?: number;
/**
* The 1-based line number of the reported end location.
*/
readonly endLine?: number;
/**
* The 1-based line number of the reported start location.
*/
readonly line?: number;
/**
* Reported message ID.
*/
readonly messageId: MessageIds;
/**
* Reported suggestions.
*/
readonly suggestions?: readonly SuggestionOutput<MessageIds>[] | null;
/**
* The type of the reported AST node.
*/
readonly type?: AST_NODE_TYPES | AST_TOKEN_TYPES;
// we disallow this because it's much better to use messageIds for reusable errors that are easily testable
// readonly message?: string | RegExp;
}
Properties
Name |
Type |
Optional |
Description |
column |
number |
✓ |
|
data |
ReportDescriptorMessageData |
✓ |
|
endColumn |
number |
✓ |
|
endLine |
number |
✓ |
|
line |
number |
✓ |
|
messageId |
MessageIds |
✗ |
|
suggestions |
readonly SuggestionOutput<MessageIds>[] | null |
✓ |
|
type |
AST_NODE_TYPES | AST_TOKEN_TYPES |
✓ |
|
RunTests<MessageIds extends string, Options extends readonly unknown[]>
Interface Code
export interface RunTests<
MessageIds extends string,
Options extends readonly unknown[],
> {
// RuleTester.run also accepts strings for valid cases
readonly invalid: readonly InvalidTestCase<MessageIds, Options>[];
readonly valid: readonly (string | ValidTestCase<Options>)[];
}
Properties
Name |
Type |
Optional |
Description |
invalid |
readonly InvalidTestCase<MessageIds, Options>[] |
✗ |
|
valid |
readonly (string | ValidTestCase<Options>)[] |
✗ |
|
RuleTesterConfig
Interface Code
export interface RuleTesterConfig extends ClassicConfig.Config {
// should be require.resolve(parserPackageName)
readonly parser: string;
readonly parserOptions?: Readonly<ParserOptions>;
}
Properties
Name |
Type |
Optional |
Description |
parser |
string |
✗ |
|
parserOptions |
Readonly<ParserOptions> |
✓ |
|
Type Aliases
RuleTesterTestFrameworkFunction
/*
* @param text a string describing the rule
* @deprecated Use @typescript-eslint/rule-tester
instead.
/
type RuleTesterTestFrameworkFunction = (
text: string,
callback: () => void,
) => void;