@codechecks/type-coverage-watcher
Advanced tools
| import * as TypeCoverage from "type-coverage-core"; | ||
| export declare const lint: typeof TypeCoverage.lint; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.lint = jest.fn(); | ||
| //# sourceMappingURL=type-coverage-core.js.map |
| {"version":3,"file":"type-coverage-core.js","sourceRoot":"","sources":["../../src/__mocks__/type-coverage-core.ts"],"names":[],"mappings":";;AAEa,QAAA,IAAI,GAA6B,IAAI,CAAC,EAAE,EAAE,CAAC"} |
| export {}; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const formatters_1 = require("../formatters"); | ||
| describe("formatters > formatShortDescription", () => { | ||
| it("should work", () => { | ||
| const actual = formatters_1.formatShortDescription({ coverageDiffPerc: 1.4, headTypeCoveragePerc: 90.2, newUntypedSymbols: 1 }); | ||
| expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% New untyped symbols: 1"`); | ||
| }); | ||
| it("should work with atLeast", () => { | ||
| const actual = formatters_1.formatShortDescription({ | ||
| coverageDiffPerc: 1.4, | ||
| headTypeCoveragePerc: 90.2, | ||
| newUntypedSymbols: 1, | ||
| atLeast: 90, | ||
| }); | ||
| expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% (min. 90.00%) New untyped symbols: 1"`); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=formatters.spec.js.map |
| {"version":3,"file":"formatters.spec.js","sourceRoot":"","sources":["../../src/__tests__/formatters.spec.ts"],"names":[],"mappings":";;AAAA,8CAAuD;AAEvD,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,MAAM,GAAG,mCAAsB,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,mCAAsB,CAAC;YACpC,gBAAgB,EAAE,GAAG;YACrB,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,qEAAqE,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
| interface FormatShortDescriptionArgs { | ||
| coverageDiffPerc: number; | ||
| headTypeCoveragePerc: number; | ||
| newUntypedSymbols: number; | ||
| atLeast?: number; | ||
| } | ||
| export declare function formatShortDescription({ coverageDiffPerc, atLeast, headTypeCoveragePerc, newUntypedSymbols, }: FormatShortDescriptionArgs): string; | ||
| export declare function perc(n: number): string; | ||
| export declare function renderSign(value: number): string; | ||
| export {}; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| function formatShortDescription({ coverageDiffPerc, atLeast, headTypeCoveragePerc, newUntypedSymbols, }) { | ||
| const change = renderSign(coverageDiffPerc) + perc(coverageDiffPerc); | ||
| const limit = atLeast === undefined ? "" : ` (min. ${perc(atLeast)})`; | ||
| const total = perc(headTypeCoveragePerc); | ||
| return `Change: ${change} Total: ${total}${limit} New untyped symbols: ${newUntypedSymbols}`; | ||
| } | ||
| exports.formatShortDescription = formatShortDescription; | ||
| function perc(n) { | ||
| return n.toFixed(2) + "%"; | ||
| } | ||
| exports.perc = perc; | ||
| function renderSign(value) { | ||
| if (value > 0) { | ||
| return "+"; | ||
| } | ||
| else { | ||
| // we dont' render signs for negative (it's part of a number xD) or 0 | ||
| return ""; | ||
| } | ||
| } | ||
| exports.renderSign = renderSign; | ||
| //# sourceMappingURL=formatters.js.map |
| {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":";;AAOA,SAAgB,sBAAsB,CAAC,EACrC,gBAAgB,EAChB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,GACU;IAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEzC,OAAO,WAAW,MAAM,WAAW,KAAK,GAAG,KAAK,yBAAyB,iBAAiB,EAAE,CAAC;AAC/F,CAAC;AAXD,wDAWC;AAED,SAAgB,IAAI,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5B,CAAC;AAFD,oBAEC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,GAAG,CAAC;KACZ;SAAM;QACL,qEAAqE;QACrE,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAPD,gCAOC"} |
| import * as TypeCoverage from "type-coverage-core"; | ||
| export const lint: typeof TypeCoverage.lint = jest.fn(); |
| import { formatShortDescription } from "../formatters"; | ||
| describe("formatters > formatShortDescription", () => { | ||
| it("should work", () => { | ||
| const actual = formatShortDescription({ coverageDiffPerc: 1.4, headTypeCoveragePerc: 90.2, newUntypedSymbols: 1 }); | ||
| expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% New untyped symbols: 1"`); | ||
| }); | ||
| it("should work with atLeast", () => { | ||
| const actual = formatShortDescription({ | ||
| coverageDiffPerc: 1.4, | ||
| headTypeCoveragePerc: 90.2, | ||
| newUntypedSymbols: 1, | ||
| atLeast: 90, | ||
| }); | ||
| expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% (min. 90.00%) New untyped symbols: 1"`); | ||
| }); | ||
| }); |
| interface FormatShortDescriptionArgs { | ||
| coverageDiffPerc: number; | ||
| headTypeCoveragePerc: number; | ||
| newUntypedSymbols: number; | ||
| atLeast?: number; | ||
| } | ||
| export function formatShortDescription({ | ||
| coverageDiffPerc, | ||
| atLeast, | ||
| headTypeCoveragePerc, | ||
| newUntypedSymbols, | ||
| }: FormatShortDescriptionArgs): string { | ||
| const change = renderSign(coverageDiffPerc) + perc(coverageDiffPerc); | ||
| const limit = atLeast === undefined ? "" : ` (min. ${perc(atLeast)})`; | ||
| const total = perc(headTypeCoveragePerc); | ||
| return `Change: ${change} Total: ${total}${limit} New untyped symbols: ${newUntypedSymbols}`; | ||
| } | ||
| export function perc(n: number): string { | ||
| return n.toFixed(2) + "%"; | ||
| } | ||
| export function renderSign(value: number): string { | ||
| if (value > 0) { | ||
| return "+"; | ||
| } else { | ||
| // we dont' render signs for negative (it's part of a number xD) or 0 | ||
| return ""; | ||
| } | ||
| } |
@@ -7,3 +7,3 @@ "use strict"; | ||
| const codechecksMock = require("../__mocks__/@codechecks/client").codechecks; | ||
| const typeCoverageMock = require("../__mocks__/type-coverage").lint; | ||
| const typeCoverageMock = require("../__mocks__/type-coverage-core").lint; | ||
| beforeEach(() => jest.resetAllMocks()); | ||
@@ -69,3 +69,3 @@ it("should work not in PR context", async () => { | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +25.00% Total: 75.00% New typed symbols: 1", | ||
| "shortDescription": "Change: +25.00% Total: 75.00% New untyped symbols: 0", | ||
| "status": "success", | ||
@@ -139,3 +139,3 @@ }, | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +100.00% Total: 100.00% New typed symbols: 2", | ||
| "shortDescription": "Change: +100.00% Total: 100.00% New untyped symbols: 0", | ||
| "status": "success", | ||
@@ -154,3 +154,33 @@ }, | ||
| }); | ||
| it("should handle atLeast option", async () => { | ||
| codechecksMock.isPr.mockReturnValue(true); | ||
| typeCoverageMock.mockReturnValue({ | ||
| correctCount: 4, | ||
| totalCount: 10, | ||
| anys: [], | ||
| program: undefined, | ||
| }); | ||
| await index_1.typeCoverageWatcher({ tsconfigPath: "./tsconfig.json", atLeast: 50 }); | ||
| expect(client_1.codechecks.report).toMatchInlineSnapshot(` | ||
| [MockFunction] { | ||
| "calls": Array [ | ||
| Array [ | ||
| Object { | ||
| "longDescription": "New untyped symbols: 0", | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +40.00% Total: 40.00% (min. 50.00%) New untyped symbols: 0", | ||
| "status": "failure", | ||
| }, | ||
| ], | ||
| ], | ||
| "results": Array [ | ||
| Object { | ||
| "isThrow": false, | ||
| "value": undefined, | ||
| }, | ||
| ], | ||
| } | ||
| `); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=index.spec.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":";;AAAA,oCAA+C;AAE/C,+CAAgD;AAKhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,UAAuC,CAAC;IAC1G,MAAM,gBAAgB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,IAA8B,CAAC;IACnG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAEvC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,gBAAgB,CAAC,eAAe,CAAC;YAC/B,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,SAAgB;SAC1B,CAAC,CAAC;QAEH,MAAM,2BAAmB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;CAmBtD,CAAC,CAAC;IACD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC;YACtC,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE;gBACjB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/D,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/D,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;aAChE;SACsB,CAAC,CAAC;QAC3B,gBAAgB,CAAC,eAAe,CAAC;YAC/B,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBACzD,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC1D;YACD,OAAO,EAAE,SAAgB;SACD,CAAC,CAAC;QAE5B,MAAM,2BAAmB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;CAmBnD,CAAC,CAAC;IACD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC;YACtC,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,EAAE;SACE,CAAC,CAAC;QAC3B,gBAAgB,CAAC,eAAe,CAAC;YAC/B,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACjE,OAAO,EAAE,SAAgB;SACD,CAAC,CAAC;QAE5B,MAAM,2BAAmB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBnD,CAAC,CAAC;IACD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,gBAAgB,CAAC,eAAe,CAAC;YAC/B,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,SAAgB;SAC1B,CAAC,CAAC;QAEH,MAAM,2BAAmB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;CAmBnD,CAAC,CAAC;IACD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,gBAAgB,CAAC,eAAe,CAAC;YAC/B,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,SAAgB;SAC1B,CAAC,CAAC;QAEH,MAAM,2BAAmB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;CAmBnD,CAAC,CAAC;IACD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
+17
-18
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const client_1 = require("@codechecks/client"); | ||
| const type_coverage_1 = require("type-coverage"); | ||
| const type_coverage_core_1 = require("type-coverage-core"); | ||
| const lodash_1 = require("lodash"); | ||
| const formatters_1 = require("./formatters"); | ||
| async function typeCoverageWatcher(_options) { | ||
| const options = normalizeOptions(_options); | ||
| const _typeCoverage = await type_coverage_1.lint(options.tsconfigPath, true, false); | ||
| const _typeCoverage = await type_coverage_core_1.lint(options.tsconfigPath, { | ||
| debug: false, | ||
| ignoreCatch: _options.ignoreCatch, | ||
| ignoreFiles: _options.ignoreFiles, | ||
| strict: _options.strict, | ||
| }); | ||
| const typeCoverage = normalizeTypeCoverage(_typeCoverage); | ||
@@ -25,7 +31,10 @@ await client_1.codechecks.saveValue(options.artifactName, typeCoverage); | ||
| : 0; | ||
| const newTypedSymbols = headTypeCoverageArtifact.typedSymbols - (baseTypeCoverageArtifact ? baseTypeCoverageArtifact.typedSymbols : 0); | ||
| const newTypedSymbolsNote = newTypedSymbols > 0 ? `New typed symbols: ${newTypedSymbols}` : `New untyped symbols: ${-newTypedSymbols}`; | ||
| const coverageDiff = headTypeCoverage - baseTypeCoverage; | ||
| const shortDescription = `Change: ${renderSign(coverageDiff)}${perc(coverageDiff)} Total: ${perc(headTypeCoverage)} ${newTypedSymbolsNote}`; | ||
| const newUntypedSymbols = findNew(headTypeCoverageArtifact.allUntypedSymbols, baseTypeCoverageArtifact ? baseTypeCoverageArtifact.allUntypedSymbols : []); | ||
| const shortDescription = formatters_1.formatShortDescription({ | ||
| coverageDiffPerc: coverageDiff, | ||
| atLeast: options.atLeast, | ||
| headTypeCoveragePerc: headTypeCoverage, | ||
| newUntypedSymbols: newUntypedSymbols.length, | ||
| }); | ||
| let longDescription = `New untyped symbols: ${newUntypedSymbols.length}`; | ||
@@ -42,5 +51,6 @@ if (newUntypedSymbols.length > 0) { | ||
| } | ||
| const status = options.atLeast === undefined || headTypeCoverage > options.atLeast ? "success" : "failure"; | ||
| return { | ||
| name: options.name, | ||
| status: "success", | ||
| status, | ||
| shortDescription, | ||
@@ -62,5 +72,2 @@ longDescription, | ||
| } | ||
| function perc(n) { | ||
| return n.toFixed(2) + "%"; | ||
| } | ||
| function normalizeTypeCoverage(rawTypeCoverage) { | ||
@@ -78,11 +85,2 @@ return { | ||
| } | ||
| function renderSign(value) { | ||
| if (value > 0) { | ||
| return "+"; | ||
| } | ||
| else { | ||
| // we dont' render signs for negative (it's part of a number xD) or 0 | ||
| return ""; | ||
| } | ||
| } | ||
| function normalizeOptions(options = {}) { | ||
@@ -94,4 +92,5 @@ const name = options.name || "Type Coverage"; | ||
| artifactName: `type-coverage:${name}`, | ||
| atLeast: options.atLeast, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
+6
-1
@@ -1,5 +0,9 @@ | ||
| import { AnyInfo } from "type-coverage/dist/interfaces"; | ||
| import { AnyInfo } from "type-coverage-core"; | ||
| export interface Options { | ||
| tsconfigPath?: string; | ||
| name?: string; | ||
| ignoreFiles?: string[]; | ||
| ignoreCatch?: boolean; | ||
| atLeast?: number; | ||
| strict?: boolean; | ||
| } | ||
@@ -10,2 +14,3 @@ export interface NormalizedOptions { | ||
| artifactName: string; | ||
| atLeast?: number; | ||
| } | ||
@@ -12,0 +17,0 @@ export interface TypeCoverageArtifact { |
+2
-2
@@ -17,3 +17,3 @@ { | ||
| "author": "Chris Kaczor <chris@kaczor.io>", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "main": "lib/index.js", | ||
@@ -58,3 +58,3 @@ "types": "lib/index.d.ts", | ||
| "lodash": "^4.17.11", | ||
| "type-coverage": "^1.10.0" | ||
| "type-coverage-core": "^2.2.0" | ||
| }, | ||
@@ -61,0 +61,0 @@ "publishConfig": { |
+32
-6
@@ -9,2 +9,3 @@ <p align="center"> | ||
| <a href="/package.json"><img alt="Software License" src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square"></a> | ||
| <a href="https://codechecks.io"><img src="https://raw.githubusercontent.com/codechecks/docs/master/images/badges/badge-default.svg?sanitize=true" alt="codechecks.io" /></a> | ||
| </p> | ||
@@ -19,10 +20,6 @@ </p> | ||
| or | ||
| ## Usage | ||
| ```sh | ||
| yarn add --dev @codechecks/type-coverage-watcher | ||
| ``` | ||
| Are you new to codechecks? Check out [getting started guide (it's simple)](https://github.com/codechecks/docs/blob/master/getting-started.md)! | ||
| ## Usage | ||
| Add to your `codechecks.yml` file: | ||
@@ -48,2 +45,6 @@ | ||
| name?: string; // defaults to Type Coverage | ||
| ignoreFiles?: string[]; | ||
| ignoreCatch?: boolean; | ||
| atLeast?: number; | ||
| strict?: boolean; | ||
| } | ||
@@ -64,2 +65,27 @@ ``` | ||
| ##### ignoreFiles | ||
| optional `string[]`<br>\ | ||
| Defaults: `undefined`<br>\ | ||
| Specify the ignored for checks files. | ||
| ##### ignoreCatch | ||
| optional `string`<br>\ | ||
| Defaults: `undefined`<br>\ | ||
| See [type-coverage's description](https://github.com/plantain-00/type-coverage#ignore-catch) for the reference. | ||
| ##### atLeast | ||
| optional `number`<br>\ | ||
| Defaults: `undefined`<br>\ | ||
| Example: `atLeast: 99`<br>\ | ||
| Fail if coverage rate < this value. | ||
| ##### strict | ||
| optional `string`<br>\ | ||
| Defaults: `undefined`<br>\ | ||
| See [type-coverage's description](https://github.com/plantain-00/type-coverage#strict-mode) for the reference. | ||
| ## Contributing | ||
@@ -66,0 +92,0 @@ |
| import { typeCoverageWatcher } from "../index"; | ||
| import { lint } from "type-coverage"; | ||
| import { lint } from "type-coverage-core"; | ||
| import { codechecks } from "@codechecks/client"; | ||
@@ -10,3 +10,3 @@ import { TypeCoverageArtifact, RawTypeCoverageReport } from "../types"; | ||
| const codechecksMock = require("../__mocks__/@codechecks/client").codechecks as Mocked<typeof codechecks>; | ||
| const typeCoverageMock = require("../__mocks__/type-coverage").lint as jest.Mock<typeof lint>; | ||
| const typeCoverageMock = require("../__mocks__/type-coverage-core").lint as jest.Mock<typeof lint>; | ||
| beforeEach(() => jest.resetAllMocks()); | ||
@@ -77,3 +77,3 @@ | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +25.00% Total: 75.00% New typed symbols: 1", | ||
| "shortDescription": "Change: +25.00% Total: 75.00% New untyped symbols: 0", | ||
| "status": "success", | ||
@@ -151,3 +151,3 @@ }, | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +100.00% Total: 100.00% New typed symbols: 2", | ||
| "shortDescription": "Change: +100.00% Total: 100.00% New untyped symbols: 0", | ||
| "status": "success", | ||
@@ -166,2 +166,34 @@ }, | ||
| }); | ||
| it("should handle atLeast option", async () => { | ||
| codechecksMock.isPr.mockReturnValue(true); | ||
| typeCoverageMock.mockReturnValue({ | ||
| correctCount: 4, | ||
| totalCount: 10, | ||
| anys: [], | ||
| program: undefined as any, | ||
| }); | ||
| await typeCoverageWatcher({ tsconfigPath: "./tsconfig.json", atLeast: 50 }); | ||
| expect(codechecks.report).toMatchInlineSnapshot(` | ||
| [MockFunction] { | ||
| "calls": Array [ | ||
| Array [ | ||
| Object { | ||
| "longDescription": "New untyped symbols: 0", | ||
| "name": "Type Coverage", | ||
| "shortDescription": "Change: +40.00% Total: 40.00% (min. 50.00%) New untyped symbols: 0", | ||
| "status": "failure", | ||
| }, | ||
| ], | ||
| ], | ||
| "results": Array [ | ||
| Object { | ||
| "isThrow": false, | ||
| "value": undefined, | ||
| }, | ||
| ], | ||
| } | ||
| `); | ||
| }); | ||
| }); |
+19
-25
| import { codechecks, CodeChecksReport } from "@codechecks/client"; | ||
| import { lint as getTypeCoverageInfo } from "type-coverage"; | ||
| import { lint as getTypeCoverageInfo } from "type-coverage-core"; | ||
| import { RawTypeCoverageReport, TypeCoverageArtifact, Options, SymbolInfo, NormalizedOptions } from "./types"; | ||
| import { groupBy } from "lodash"; | ||
| import { formatShortDescription } from "./formatters"; | ||
| export async function typeCoverageWatcher(_options: Options): Promise<void> { | ||
| const options = normalizeOptions(_options); | ||
| const _typeCoverage = await getTypeCoverageInfo(options.tsconfigPath, true, false); | ||
| const _typeCoverage = await getTypeCoverageInfo(options.tsconfigPath, { | ||
| debug: false, | ||
| ignoreCatch: _options.ignoreCatch, | ||
| ignoreFiles: _options.ignoreFiles, | ||
| strict: _options.strict, | ||
| }); | ||
| const typeCoverage = normalizeTypeCoverage(_typeCoverage); | ||
@@ -34,13 +40,4 @@ await codechecks.saveValue(options.artifactName, typeCoverage); | ||
| : 0; | ||
| const newTypedSymbols = | ||
| headTypeCoverageArtifact.typedSymbols - (baseTypeCoverageArtifact ? baseTypeCoverageArtifact.typedSymbols : 0); | ||
| const newTypedSymbolsNote = | ||
| newTypedSymbols > 0 ? `New typed symbols: ${newTypedSymbols}` : `New untyped symbols: ${-newTypedSymbols}`; | ||
| const coverageDiff = headTypeCoverage - baseTypeCoverage; | ||
| const shortDescription = `Change: ${renderSign(coverageDiff)}${perc(coverageDiff)} Total: ${perc( | ||
| headTypeCoverage, | ||
| )} ${newTypedSymbolsNote}`; | ||
| const newUntypedSymbols = findNew( | ||
@@ -51,2 +48,9 @@ headTypeCoverageArtifact.allUntypedSymbols, | ||
| const shortDescription = formatShortDescription({ | ||
| coverageDiffPerc: coverageDiff, | ||
| atLeast: options.atLeast, | ||
| headTypeCoveragePerc: headTypeCoverage, | ||
| newUntypedSymbols: newUntypedSymbols.length, | ||
| }); | ||
| let longDescription = `New untyped symbols: ${newUntypedSymbols.length}`; | ||
@@ -64,5 +68,7 @@ if (newUntypedSymbols.length > 0) { | ||
| const status = options.atLeast === undefined || headTypeCoverage > options.atLeast ? "success" : "failure"; | ||
| return { | ||
| name: options.name, | ||
| status: "success", | ||
| status, | ||
| shortDescription, | ||
@@ -90,6 +96,2 @@ longDescription, | ||
| function perc(n: number): string { | ||
| return n.toFixed(2) + "%"; | ||
| } | ||
| function normalizeTypeCoverage(rawTypeCoverage: RawTypeCoverageReport): TypeCoverageArtifact { | ||
@@ -108,11 +110,2 @@ return { | ||
| function renderSign(value: number): string { | ||
| if (value > 0) { | ||
| return "+"; | ||
| } else { | ||
| // we dont' render signs for negative (it's part of a number xD) or 0 | ||
| return ""; | ||
| } | ||
| } | ||
| function normalizeOptions(options: Options = {}): NormalizedOptions { | ||
@@ -124,3 +117,4 @@ const name = options.name || "Type Coverage"; | ||
| artifactName: `type-coverage:${name}`, | ||
| atLeast: options.atLeast, | ||
| }; | ||
| } |
+6
-1
@@ -1,2 +0,2 @@ | ||
| import { AnyInfo } from "type-coverage/dist/interfaces"; | ||
| import { AnyInfo } from "type-coverage-core"; | ||
@@ -6,2 +6,6 @@ export interface Options { | ||
| name?: string; | ||
| ignoreFiles?: string[]; | ||
| ignoreCatch?: boolean; | ||
| atLeast?: number; | ||
| strict?: boolean; | ||
| } | ||
@@ -13,2 +17,3 @@ | ||
| artifactName: string; | ||
| atLeast?: number; | ||
| } | ||
@@ -15,0 +20,0 @@ |
| import * as TypeCoverage from "type-coverage"; | ||
| export declare const lint: typeof TypeCoverage.lint; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.lint = jest.fn(); | ||
| //# sourceMappingURL=type-coverage.js.map |
| {"version":3,"file":"type-coverage.js","sourceRoot":"","sources":["../../src/__mocks__/type-coverage.ts"],"names":[],"mappings":";;AAEa,QAAA,IAAI,GAA6B,IAAI,CAAC,EAAE,EAAE,CAAC"} |
| import * as TypeCoverage from "type-coverage"; | ||
| export const lint: typeof TypeCoverage.lint = jest.fn(); |
Sorry, the diff of this file is too big to display
305933
3.01%42
23.53%814
24.66%94
38.24%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed