mirror of
https://github.com/ezolenko/rollup-plugin-typescript2.git
synced 2025-12-08 19:06:16 +00:00
test: add print-diagnostics spec (#405)
- test all the different categories and formattings - full unit test coverage now! (except for `index`/`tscache`, which integration tests cover)
This commit is contained in:
parent
0c8e88d42c
commit
27356be3a0
@ -31,7 +31,6 @@ Use the [standard GitHub process](https://docs.github.com/en/pull-requests/colla
|
||||
1. `npm run test:coverage` to run tests and output a test coverage report
|
||||
|
||||
While this repo now has an assortment of unit tests and integration tests, it still needs more integration tests with various scenarios and expected outcomes.
|
||||
Test coverage improvements for existing files and untested files is needed as well.
|
||||
|
||||
### Building and Self-Build
|
||||
|
||||
|
||||
57
__tests__/print-diagnostics.spec.ts
Normal file
57
__tests__/print-diagnostics.spec.ts
Normal file
@ -0,0 +1,57 @@
|
||||
import { test, expect } from "@jest/globals";
|
||||
import * as ts from "typescript";
|
||||
import { red } from "colors/safe";
|
||||
|
||||
import { makeContext } from "./fixtures/context";
|
||||
import { setTypescriptModule } from "../src/tsproxy";
|
||||
import { printDiagnostics } from "../src/print-diagnostics";
|
||||
|
||||
setTypescriptModule(ts);
|
||||
|
||||
const diagnostic = {
|
||||
flatMessage: "Compiler option 'include' requires a value of type Array.",
|
||||
formatted: "\x1B[91merror\x1B[0m\x1B[90m TS5024: \x1B[0mCompiler option 'include' requires a value of type Array.\n",
|
||||
category: ts.DiagnosticCategory.Error,
|
||||
code: 5024,
|
||||
type: 'config'
|
||||
};
|
||||
|
||||
test("print-diagnostics - categories", () => {
|
||||
const context = makeContext();
|
||||
|
||||
printDiagnostics(context, [diagnostic]);
|
||||
expect(context.error).toHaveBeenLastCalledWith(diagnostic.formatted);
|
||||
|
||||
printDiagnostics(context, [{ ...diagnostic, category: ts.DiagnosticCategory.Warning } ]);
|
||||
expect(context.warn).toHaveBeenLastCalledWith(diagnostic.formatted);
|
||||
|
||||
printDiagnostics(context, [{ ...diagnostic, category: ts.DiagnosticCategory.Suggestion } ]); // default case
|
||||
expect(context.warn).toHaveBeenLastCalledWith(diagnostic.formatted);
|
||||
|
||||
printDiagnostics(context, [{ ...diagnostic, category: ts.DiagnosticCategory.Message } ]);
|
||||
expect(context.info).toHaveBeenLastCalledWith(diagnostic.formatted);
|
||||
|
||||
// should match exactly, no more
|
||||
expect(context.error).toBeCalledTimes(1);
|
||||
expect(context.warn).toBeCalledTimes(2)
|
||||
expect(context.info).toBeCalledTimes(1);
|
||||
expect(context.debug).toBeCalledTimes(0);
|
||||
});
|
||||
|
||||
test("print-diagnostics - formatting / style", () => {
|
||||
const context = makeContext();
|
||||
const category = "error"; // string version
|
||||
|
||||
printDiagnostics(context, [diagnostic], false);
|
||||
expect(context.error).toHaveBeenLastCalledWith(`${diagnostic.type} ${category} TS${diagnostic.code}: ${red(diagnostic.flatMessage)}`);
|
||||
|
||||
const fileLine = "0"
|
||||
printDiagnostics(context, [{ ...diagnostic, fileLine }], false);
|
||||
expect(context.error).toHaveBeenLastCalledWith(`${fileLine}: ${diagnostic.type} ${category} TS${diagnostic.code}: ${red(diagnostic.flatMessage)}`);
|
||||
|
||||
// should match exactly, no more
|
||||
expect(context.error).toBeCalledTimes(2);
|
||||
expect(context.warn).toBeCalledTimes(0)
|
||||
expect(context.info).toBeCalledTimes(0);
|
||||
expect(context.debug).toBeCalledTimes(0);
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user