UNPKG

eslint-plugin-sonarjs

Version:
40 lines (39 loc) 1.46 kB
import type { Rule } from 'eslint'; import type estree from 'estree'; export type AssertionPredicate = 'truthy' | 'falsy' | 'true' | 'false' | 'defined' | 'undefined' | 'null' | 'exists'; export type AssertionStyle = 'jest-like' | 'jasmine' | 'chai-bdd' | 'chai-assert' | 'cypress' | 'playwright' | 'node-assert'; /** * Cross-framework representation of a test assertion */ export type Assertion = PredicateAssertion | ComparisonAssertion; type AssertionBase = { style: AssertionStyle; node: estree.Node; reportNode: estree.Node; negated: boolean; }; /** * Covers predicate assertions: * Jest: `expect(value).toBeTruthy()`, `expect(value).toBeNull()`, ... * Node.js: `assert.ok(value)`, `assert.strictEqual(value, null)`, ... * chai: `assert.ok(value)`, `assert.isNull(value)`, ... */ type PredicateAssertion = AssertionBase & { kind: 'predicate'; predicate: AssertionPredicate; actual: estree.Node; }; /** * Covers comparision assertions: * Jest: `expect(value).toBe(value)` * Node.js: `assert.strictEqual(value, value)` * chai: `assert.strictEqual(value, value)`, `expect(value).toEqual(value)`, `value.should.equal(value)`, ... */ type ComparisonAssertion = AssertionBase & { kind: 'comparison'; comparison: 'strict' | 'deep' | 'loose'; actual: estree.Node; expected: estree.Node; }; export declare function extractTestAssertion(context: Rule.RuleContext, node: estree.Node): Assertion | null; export {};