From 31c04fedc4d40fed678d2ec723a63f7216b5751b Mon Sep 17 00:00:00 2001 From: Andrew Tatomyr Date: Fri, 20 May 2022 12:01:44 +0200 Subject: [PATCH 1/2] chore: set code coverage threshold & reorganize tests --- package.json | 23 +++++++++++++++---- .../src/__mocks__}/@redocly/openapi-core.ts | 0 .../cli/src/__mocks__}/fs.ts | 0 .../commands/split/__tests__/index.test.ts | 4 ++-- packages/core/__tests__/lint.test.ts | 17 -------------- .../__snapshots__/bundle.test.ts.snap | 0 .../core/{ => src}/__tests__/bundle.test.ts | 9 ++++---- .../{ => src}/__tests__/codeframes.test.ts | 6 ++--- .../{ => src}/__tests__/fixtures/extension.js | 0 .../__tests__/fixtures/refs/definitions.yaml | 0 .../__tests__/fixtures/refs/examples.yaml | 0 .../fixtures/refs/external-request-body.yaml | 0 .../__tests__/fixtures/refs/externalref.yaml | 0 .../__tests__/fixtures/refs/hosted.yaml | 0 ...-with-external-refs-conflicting-names.yaml | 0 .../refs/openapi-with-external-refs.yaml | 0 .../fixtures/refs/openapi-with-url-refs.yaml | 0 .../__tests__/fixtures/refs/param-b.yaml | 0 .../__tests__/fixtures/refs/param-c.yaml | 0 .../__tests__/fixtures/refs/rename.yaml | 0 .../__tests__/fixtures/refs/requestBody.yaml | 0 .../__tests__/fixtures/refs/schema-a.yaml | 0 .../__tests__/fixtures/refs/simple.yaml | 0 .../fixtures/refs/vendor.schema.yaml | 0 .../__tests__/fixtures/resolve/External.yaml | 0 .../__tests__/fixtures/resolve/External2.yaml | 0 .../__tests__/fixtures/resolve/description.md | 0 .../fixtures/resolve/externalInfo.yaml | 0 .../fixtures/resolve/externalLicense.yaml | 0 .../fixtures/resolve/openapi-with-back.yaml | 0 .../resolve/openapi-with-md-description.yaml | 0 .../__tests__/fixtures/resolve/openapi.yaml | 0 .../fixtures/resolve/schemas/type-a.yaml | 0 .../fixtures/resolve/schemas/type-b.yaml | 0 .../fixtures/resolve/transitive/a.yaml | 0 .../resolve/transitive/components.yaml | 0 .../fixtures/resolve/transitive/schemas.yaml | 0 packages/core/src/__tests__/lint.test.ts | 13 +++++++++++ .../core/{ => src}/__tests__/login.test.ts | 2 +- .../__tests__/normalizeVisitors.test.ts | 8 +++---- .../{ => src}/__tests__/ref-utils.test.ts | 10 ++++---- .../{ => src}/__tests__/resolve-http.test.ts | 8 +++---- .../core/{ => src}/__tests__/resolve.test.ts | 8 +++---- .../core/{ => src}/__tests__/walk.test.ts | 10 ++++---- .../config/__tests__/config-resolvers.test.ts | 2 +- 45 files changed, 65 insertions(+), 55 deletions(-) rename {__mocks__ => packages/cli/src/__mocks__}/@redocly/openapi-core.ts (100%) rename {__mocks__ => packages/cli/src/__mocks__}/fs.ts (100%) delete mode 100644 packages/core/__tests__/lint.test.ts rename packages/core/{ => src}/__tests__/__snapshots__/bundle.test.ts.snap (100%) rename packages/core/{ => src}/__tests__/bundle.test.ts (95%) rename packages/core/{ => src}/__tests__/codeframes.test.ts (98%) rename packages/core/{ => src}/__tests__/fixtures/extension.js (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/definitions.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/examples.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/external-request-body.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/externalref.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/hosted.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/openapi-with-external-refs.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/openapi-with-url-refs.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/param-b.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/param-c.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/rename.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/requestBody.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/schema-a.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/simple.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/refs/vendor.schema.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/External.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/External2.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/description.md (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/externalInfo.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/externalLicense.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/openapi-with-back.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/openapi-with-md-description.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/openapi.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/schemas/type-a.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/schemas/type-b.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/transitive/a.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/transitive/components.yaml (100%) rename packages/core/{ => src}/__tests__/fixtures/resolve/transitive/schemas.yaml (100%) rename packages/core/{ => src}/__tests__/login.test.ts (91%) rename packages/core/{ => src}/__tests__/normalizeVisitors.test.ts (95%) rename packages/core/{ => src}/__tests__/ref-utils.test.ts (93%) rename packages/core/{ => src}/__tests__/resolve-http.test.ts (89%) rename packages/core/{ => src}/__tests__/resolve.test.ts (98%) rename packages/core/{ => src}/__tests__/walk.test.ts (99%) diff --git a/package.json b/package.json index f83ed29232..8310531256 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,8 @@ "scripts": { "test": "npm run typecheck && npm run unit", "unit": "jest ./packages --coverage --coverageReporters lcov text-summary", + "coverage:cli": "jest --roots packages/cli/src --coverage", + "coverage:core": "jest --roots packages/core/src --coverage", "typecheck": "tsc --noEmit --skipLibCheck", "e2e": "jest --roots=./__tests__/", "prettier": "npx prettier --write \"**/*.{ts,js}\"", @@ -69,13 +71,26 @@ "restoreMocks": true, "preset": "ts-jest", "collectCoverageFrom": [ - "packages/**/*.ts", + "packages/*/src/**/*.ts", "!packages/**/__tests__/**/*", - "!packages/cli/src/index.ts", "!packages/core/src/benchmark/**/*", - "!packages/core/lib/**/*", - "!packages/cli/lib/**/*" + "!packages/cli/src/index.ts", + "!packages/cli/src/assert-node-version.ts" ], + "coverageThreshold": { + "packages/core/": { + "statements": 77, + "branches": 69, + "functions": 65, + "lines": 77 + }, + "packages/cli/": { + "statements": 30, + "branches": 27, + "functions": 29, + "lines": 32 + } + }, "testMatch": [ "**/__tests__/**/*.test.ts", "**/*.test.ts" diff --git a/__mocks__/@redocly/openapi-core.ts b/packages/cli/src/__mocks__/@redocly/openapi-core.ts similarity index 100% rename from __mocks__/@redocly/openapi-core.ts rename to packages/cli/src/__mocks__/@redocly/openapi-core.ts diff --git a/__mocks__/fs.ts b/packages/cli/src/__mocks__/fs.ts similarity index 100% rename from __mocks__/fs.ts rename to packages/cli/src/__mocks__/fs.ts diff --git a/packages/cli/src/commands/split/__tests__/index.test.ts b/packages/cli/src/commands/split/__tests__/index.test.ts index 0ab46e7275..1426500de5 100644 --- a/packages/cli/src/commands/split/__tests__/index.test.ts +++ b/packages/cli/src/commands/split/__tests__/index.test.ts @@ -21,7 +21,7 @@ describe('#split', () => { const componentsFiles: ComponentsFiles = {}; it('should split the file and show the success message', async () => { - const filePath = "./packages/cli/src/commands/split/__tests__/fixtures/spec.json"; + const filePath = "packages/cli/src/commands/split/__tests__/fixtures/spec.json"; jest.spyOn(process.stderr, 'write').mockImplementation(() => true); await handleSplit ( @@ -44,7 +44,7 @@ describe('#split', () => { it('should use the correct separator', async () => { - const filePath = "./packages/cli/src/commands/split/__tests__/fixtures/spec.json"; + const filePath = "packages/cli/src/commands/split/__tests__/fixtures/spec.json"; const utils = require('../../../utils'); jest.spyOn(utils, 'pathToFilename').mockImplementation(() => 'newFilePath'); diff --git a/packages/core/__tests__/lint.test.ts b/packages/core/__tests__/lint.test.ts deleted file mode 100644 index b5f1cffcc3..0000000000 --- a/packages/core/__tests__/lint.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import outdent from 'outdent'; -import { detectOpenAPI } from '../src/oas-types'; -import { parseYamlToDocument } from './utils'; - -describe('lint', () => { - it('detect OpenAPI should throw an error when version is not string', () => { - - const testDocument = parseYamlToDocument( - outdent` - openapi: 3.0 - `, - '', - ); - expect(() => detectOpenAPI(testDocument.parsed)) - .toThrow(`Invalid OpenAPI version: should be a string but got "number"`) - }); -}); diff --git a/packages/core/__tests__/__snapshots__/bundle.test.ts.snap b/packages/core/src/__tests__/__snapshots__/bundle.test.ts.snap similarity index 100% rename from packages/core/__tests__/__snapshots__/bundle.test.ts.snap rename to packages/core/src/__tests__/__snapshots__/bundle.test.ts.snap diff --git a/packages/core/__tests__/bundle.test.ts b/packages/core/src/__tests__/bundle.test.ts similarity index 95% rename from packages/core/__tests__/bundle.test.ts rename to packages/core/src/__tests__/bundle.test.ts index 76bc8d950e..bb53d74eb1 100644 --- a/packages/core/__tests__/bundle.test.ts +++ b/packages/core/src/__tests__/bundle.test.ts @@ -1,11 +1,10 @@ import outdent from 'outdent'; import * as path from 'path'; -import { bundleDocument, bundle } from '../src/bundle'; - -import { parseYamlToDocument, yamlSerializer } from './utils'; -import { LintConfig, Config, ResolvedConfig } from '../src/config'; -import { BaseResolver } from '../src/resolve'; +import { bundleDocument, bundle } from '../bundle'; +import { parseYamlToDocument, yamlSerializer } from '../../__tests__/utils'; +import { LintConfig, Config, ResolvedConfig } from '../config'; +import { BaseResolver } from '../resolve'; describe('bundle', () => { expect.addSnapshotSerializer(yamlSerializer); diff --git a/packages/core/__tests__/codeframes.test.ts b/packages/core/src/__tests__/codeframes.test.ts similarity index 98% rename from packages/core/__tests__/codeframes.test.ts rename to packages/core/src/__tests__/codeframes.test.ts index 9d03f987bb..11f3aa58cf 100644 --- a/packages/core/__tests__/codeframes.test.ts +++ b/packages/core/src/__tests__/codeframes.test.ts @@ -1,8 +1,8 @@ import { outdent } from 'outdent'; -import { getLineColLocation, getCodeframe } from '../src/format/codeframes'; -import { LocationObject } from '../src/walk'; -import { Source } from '../src/resolve'; +import { getLineColLocation, getCodeframe } from '../format/codeframes'; +import { LocationObject } from '../walk'; +import { Source } from '../resolve'; describe('Location', () => { it('should correctly calculate location for key', () => { diff --git a/packages/core/__tests__/fixtures/extension.js b/packages/core/src/__tests__/fixtures/extension.js similarity index 100% rename from packages/core/__tests__/fixtures/extension.js rename to packages/core/src/__tests__/fixtures/extension.js diff --git a/packages/core/__tests__/fixtures/refs/definitions.yaml b/packages/core/src/__tests__/fixtures/refs/definitions.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/definitions.yaml rename to packages/core/src/__tests__/fixtures/refs/definitions.yaml diff --git a/packages/core/__tests__/fixtures/refs/examples.yaml b/packages/core/src/__tests__/fixtures/refs/examples.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/examples.yaml rename to packages/core/src/__tests__/fixtures/refs/examples.yaml diff --git a/packages/core/__tests__/fixtures/refs/external-request-body.yaml b/packages/core/src/__tests__/fixtures/refs/external-request-body.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/external-request-body.yaml rename to packages/core/src/__tests__/fixtures/refs/external-request-body.yaml diff --git a/packages/core/__tests__/fixtures/refs/externalref.yaml b/packages/core/src/__tests__/fixtures/refs/externalref.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/externalref.yaml rename to packages/core/src/__tests__/fixtures/refs/externalref.yaml diff --git a/packages/core/__tests__/fixtures/refs/hosted.yaml b/packages/core/src/__tests__/fixtures/refs/hosted.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/hosted.yaml rename to packages/core/src/__tests__/fixtures/refs/hosted.yaml diff --git a/packages/core/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml b/packages/core/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml rename to packages/core/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml diff --git a/packages/core/__tests__/fixtures/refs/openapi-with-external-refs.yaml b/packages/core/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/openapi-with-external-refs.yaml rename to packages/core/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml diff --git a/packages/core/__tests__/fixtures/refs/openapi-with-url-refs.yaml b/packages/core/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/openapi-with-url-refs.yaml rename to packages/core/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml diff --git a/packages/core/__tests__/fixtures/refs/param-b.yaml b/packages/core/src/__tests__/fixtures/refs/param-b.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/param-b.yaml rename to packages/core/src/__tests__/fixtures/refs/param-b.yaml diff --git a/packages/core/__tests__/fixtures/refs/param-c.yaml b/packages/core/src/__tests__/fixtures/refs/param-c.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/param-c.yaml rename to packages/core/src/__tests__/fixtures/refs/param-c.yaml diff --git a/packages/core/__tests__/fixtures/refs/rename.yaml b/packages/core/src/__tests__/fixtures/refs/rename.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/rename.yaml rename to packages/core/src/__tests__/fixtures/refs/rename.yaml diff --git a/packages/core/__tests__/fixtures/refs/requestBody.yaml b/packages/core/src/__tests__/fixtures/refs/requestBody.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/requestBody.yaml rename to packages/core/src/__tests__/fixtures/refs/requestBody.yaml diff --git a/packages/core/__tests__/fixtures/refs/schema-a.yaml b/packages/core/src/__tests__/fixtures/refs/schema-a.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/schema-a.yaml rename to packages/core/src/__tests__/fixtures/refs/schema-a.yaml diff --git a/packages/core/__tests__/fixtures/refs/simple.yaml b/packages/core/src/__tests__/fixtures/refs/simple.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/simple.yaml rename to packages/core/src/__tests__/fixtures/refs/simple.yaml diff --git a/packages/core/__tests__/fixtures/refs/vendor.schema.yaml b/packages/core/src/__tests__/fixtures/refs/vendor.schema.yaml similarity index 100% rename from packages/core/__tests__/fixtures/refs/vendor.schema.yaml rename to packages/core/src/__tests__/fixtures/refs/vendor.schema.yaml diff --git a/packages/core/__tests__/fixtures/resolve/External.yaml b/packages/core/src/__tests__/fixtures/resolve/External.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/External.yaml rename to packages/core/src/__tests__/fixtures/resolve/External.yaml diff --git a/packages/core/__tests__/fixtures/resolve/External2.yaml b/packages/core/src/__tests__/fixtures/resolve/External2.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/External2.yaml rename to packages/core/src/__tests__/fixtures/resolve/External2.yaml diff --git a/packages/core/__tests__/fixtures/resolve/description.md b/packages/core/src/__tests__/fixtures/resolve/description.md similarity index 100% rename from packages/core/__tests__/fixtures/resolve/description.md rename to packages/core/src/__tests__/fixtures/resolve/description.md diff --git a/packages/core/__tests__/fixtures/resolve/externalInfo.yaml b/packages/core/src/__tests__/fixtures/resolve/externalInfo.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/externalInfo.yaml rename to packages/core/src/__tests__/fixtures/resolve/externalInfo.yaml diff --git a/packages/core/__tests__/fixtures/resolve/externalLicense.yaml b/packages/core/src/__tests__/fixtures/resolve/externalLicense.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/externalLicense.yaml rename to packages/core/src/__tests__/fixtures/resolve/externalLicense.yaml diff --git a/packages/core/__tests__/fixtures/resolve/openapi-with-back.yaml b/packages/core/src/__tests__/fixtures/resolve/openapi-with-back.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/openapi-with-back.yaml rename to packages/core/src/__tests__/fixtures/resolve/openapi-with-back.yaml diff --git a/packages/core/__tests__/fixtures/resolve/openapi-with-md-description.yaml b/packages/core/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/openapi-with-md-description.yaml rename to packages/core/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml diff --git a/packages/core/__tests__/fixtures/resolve/openapi.yaml b/packages/core/src/__tests__/fixtures/resolve/openapi.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/openapi.yaml rename to packages/core/src/__tests__/fixtures/resolve/openapi.yaml diff --git a/packages/core/__tests__/fixtures/resolve/schemas/type-a.yaml b/packages/core/src/__tests__/fixtures/resolve/schemas/type-a.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/schemas/type-a.yaml rename to packages/core/src/__tests__/fixtures/resolve/schemas/type-a.yaml diff --git a/packages/core/__tests__/fixtures/resolve/schemas/type-b.yaml b/packages/core/src/__tests__/fixtures/resolve/schemas/type-b.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/schemas/type-b.yaml rename to packages/core/src/__tests__/fixtures/resolve/schemas/type-b.yaml diff --git a/packages/core/__tests__/fixtures/resolve/transitive/a.yaml b/packages/core/src/__tests__/fixtures/resolve/transitive/a.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/transitive/a.yaml rename to packages/core/src/__tests__/fixtures/resolve/transitive/a.yaml diff --git a/packages/core/__tests__/fixtures/resolve/transitive/components.yaml b/packages/core/src/__tests__/fixtures/resolve/transitive/components.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/transitive/components.yaml rename to packages/core/src/__tests__/fixtures/resolve/transitive/components.yaml diff --git a/packages/core/__tests__/fixtures/resolve/transitive/schemas.yaml b/packages/core/src/__tests__/fixtures/resolve/transitive/schemas.yaml similarity index 100% rename from packages/core/__tests__/fixtures/resolve/transitive/schemas.yaml rename to packages/core/src/__tests__/fixtures/resolve/transitive/schemas.yaml diff --git a/packages/core/src/__tests__/lint.test.ts b/packages/core/src/__tests__/lint.test.ts index 455edde649..0aa898818e 100644 --- a/packages/core/src/__tests__/lint.test.ts +++ b/packages/core/src/__tests__/lint.test.ts @@ -4,6 +4,7 @@ import { lintFromString, lintConfig, lintDocument } from '../lint'; import { BaseResolver } from '../resolve'; import { loadConfig } from '../config/load'; import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../__tests__/utils'; +import { detectOpenAPI } from '../oas-types'; describe('lint', () => { it('lintFromString should work', async () => { @@ -179,4 +180,16 @@ describe('lint', () => { expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`); }); + + it('detect OpenAPI should throw an error when version is not string', () => { + + const testDocument = parseYamlToDocument( + outdent` + openapi: 3.0 + `, + '', + ); + expect(() => detectOpenAPI(testDocument.parsed)) + .toThrow(`Invalid OpenAPI version: should be a string but got "number"`) + }); }); diff --git a/packages/core/__tests__/login.test.ts b/packages/core/src/__tests__/login.test.ts similarity index 91% rename from packages/core/__tests__/login.test.ts rename to packages/core/src/__tests__/login.test.ts index d819d34e51..d90a87f6b7 100644 --- a/packages/core/__tests__/login.test.ts +++ b/packages/core/src/__tests__/login.test.ts @@ -1,4 +1,4 @@ -import { RedoclyClient } from '../src/redocly'; +import { RedoclyClient } from '../redocly'; describe.skip('login', () => { it('should call login with setAccessTokens function', async () => { diff --git a/packages/core/__tests__/normalizeVisitors.test.ts b/packages/core/src/__tests__/normalizeVisitors.test.ts similarity index 95% rename from packages/core/__tests__/normalizeVisitors.test.ts rename to packages/core/src/__tests__/normalizeVisitors.test.ts index 07b9bdc2d2..80841d0f9d 100644 --- a/packages/core/__tests__/normalizeVisitors.test.ts +++ b/packages/core/src/__tests__/normalizeVisitors.test.ts @@ -1,7 +1,7 @@ -import { normalizeVisitors, VisitorLevelContext } from '../src/visitors'; -import { Oas3RuleSet } from '../src/oas-types'; -import { Oas3Types } from '../src/types/oas3'; -import { normalizeTypes } from '../src/types'; +import { normalizeVisitors, VisitorLevelContext } from '../visitors'; +import { Oas3RuleSet } from '../oas-types'; +import { Oas3Types } from '../types/oas3'; +import { normalizeTypes } from '../types'; describe('Normalize visitors', () => { it('should work correctly for single rule', () => { diff --git a/packages/core/__tests__/ref-utils.test.ts b/packages/core/src/__tests__/ref-utils.test.ts similarity index 93% rename from packages/core/__tests__/ref-utils.test.ts rename to packages/core/src/__tests__/ref-utils.test.ts index a609937190..91295add0b 100644 --- a/packages/core/__tests__/ref-utils.test.ts +++ b/packages/core/src/__tests__/ref-utils.test.ts @@ -1,9 +1,9 @@ import outdent from 'outdent'; -import { parseYamlToDocument } from './utils'; -import { parseRef, refBaseName } from '../src/ref-utils'; -import { lintDocument } from '../src/lint'; -import { LintConfig } from '../src/config'; -import { BaseResolver } from '../src/resolve'; +import { parseYamlToDocument } from '../../__tests__/utils'; +import { parseRef, refBaseName } from '../ref-utils'; +import { lintDocument } from '../lint'; +import { LintConfig } from '../config'; +import { BaseResolver } from '../resolve'; describe('ref-utils', () => { it(`should unescape refs with '/'`, () => { diff --git a/packages/core/__tests__/resolve-http.test.ts b/packages/core/src/__tests__/resolve-http.test.ts similarity index 89% rename from packages/core/__tests__/resolve-http.test.ts rename to packages/core/src/__tests__/resolve-http.test.ts index ef69653f71..7946c1b810 100644 --- a/packages/core/__tests__/resolve-http.test.ts +++ b/packages/core/src/__tests__/resolve-http.test.ts @@ -1,9 +1,9 @@ import { outdent } from 'outdent'; -import { resolveDocument, BaseResolver } from '../src/resolve'; -import { parseYamlToDocument } from './utils'; -import { Oas3Types } from '../src/types/oas3'; -import { normalizeTypes } from '../src/types'; +import { resolveDocument, BaseResolver } from '../resolve'; +import { parseYamlToDocument } from '../../__tests__/utils'; +import { Oas3Types } from '../types/oas3'; +import { normalizeTypes } from '../types'; describe('Resolve http-headers', () => { it('should use matching http-headers', async () => { diff --git a/packages/core/__tests__/resolve.test.ts b/packages/core/src/__tests__/resolve.test.ts similarity index 98% rename from packages/core/__tests__/resolve.test.ts rename to packages/core/src/__tests__/resolve.test.ts index 0dab707f48..fcdb583d16 100644 --- a/packages/core/__tests__/resolve.test.ts +++ b/packages/core/src/__tests__/resolve.test.ts @@ -1,10 +1,10 @@ import { outdent } from 'outdent'; import * as path from 'path'; -import { resolveDocument, BaseResolver, Document } from '../src/resolve'; -import { parseYamlToDocument } from './utils'; -import { Oas3Types } from '../src/types/oas3'; -import { normalizeTypes } from '../src/types'; +import { resolveDocument, BaseResolver, Document } from '../resolve'; +import { parseYamlToDocument } from '../../__tests__/utils'; +import { Oas3Types } from '../types/oas3'; +import { normalizeTypes } from '../types'; describe('collect refs', () => { it('should resolve local refs', async () => { diff --git a/packages/core/__tests__/walk.test.ts b/packages/core/src/__tests__/walk.test.ts similarity index 99% rename from packages/core/__tests__/walk.test.ts rename to packages/core/src/__tests__/walk.test.ts index 1e23d3b7c1..25af41e2ac 100644 --- a/packages/core/__tests__/walk.test.ts +++ b/packages/core/src/__tests__/walk.test.ts @@ -2,12 +2,12 @@ import outdent from 'outdent'; import each from 'jest-each'; import * as path from 'path'; -import { lintDocument } from '../src/lint'; +import { lintDocument } from '../lint'; -import { parseYamlToDocument, replaceSourceWithRef, makeConfigForRuleset } from './utils'; -import { BaseResolver, Document } from '../src/resolve'; -import { listOf } from '../src/types'; -import { Oas3RuleSet } from '../src/oas-types'; +import { parseYamlToDocument, replaceSourceWithRef, makeConfigForRuleset } from '../../__tests__/utils'; +import { BaseResolver, Document } from '../resolve'; +import { listOf } from '../types'; +import { Oas3RuleSet } from '../oas-types'; describe('walk order', () => { it('should run visitors', async () => { diff --git a/packages/core/src/config/__tests__/config-resolvers.test.ts b/packages/core/src/config/__tests__/config-resolvers.test.ts index 6f0f7df40d..64a43bb338 100644 --- a/packages/core/src/config/__tests__/config-resolvers.test.ts +++ b/packages/core/src/config/__tests__/config-resolvers.test.ts @@ -165,7 +165,7 @@ describe('resolveLint', () => { const lintConfig = { // This points to ./fixtures/resolve-remote-configs/remote-config.yaml extends: [ - 'https://raw.githubusercontent.com/Redocly/openapi-cli/master/packages/core/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml', + 'https://raw.githubusercontent.com/Redocly/redocly-cli/master/packages/core/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml', ], }; From ea71630b3c4e0289566075e873c606c46cad2dbd Mon Sep 17 00:00:00 2001 From: Andrew Tatomyr Date: Fri, 20 May 2022 14:47:18 +0200 Subject: [PATCH 2/2] chore: show coverage report --- .github/workflows/tests.yaml | 31 +++++++++++++-------- jest.config.js | 32 ++++++++++++++++++++++ package.json | 35 ------------------------ packages/core/src/__tests__/lint.test.ts | 16 +++++------ 4 files changed, 60 insertions(+), 54 deletions(-) create mode 100644 jest.config.js diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 135def9924..d6d45b371e 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,4 +1,4 @@ -name: Unit/Integration Tests +name: Unit/Integration Tests & Coverage on: pull_request: @@ -11,20 +11,29 @@ jobs: build-and-unit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v3 + - name: Cache dependencies + uses: actions/cache@v3 with: - node-version: "15.x" - - name: cache node modules - uses: actions/cache@v1 - with: - path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm key: npm-${{ hashFiles('package-lock.json') }} restore-keys: | npm-${{ hashFiles('package-lock.json') }} npm- - - run: npm i -g npm@7.0.2 - - run: npm install - - run: npm test && npm run e2e + - name: Install modules + run: | + echo + echo Using Node $(node -v), NPM $(npm -v) + echo + npm ci + - name: Unit Tests & Coverage Report + uses: artiomtr/jest-coverage-report-action@v2.0-rc.4 + env: + CI: true + with: + annotations: none + test-script: npx jest ./packages --silent --ci --json --testLocationInResults --outputFile=report.json --bail --coverage || exit 0 + - name: E2E Tests + run: npm run e2e env: CI: true diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000000..9cff824340 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,32 @@ +module.exports = { + clearMocks: true, + restoreMocks: true, + preset: 'ts-jest', + collectCoverageFrom: [ + 'packages/*/src/**/*.ts', + '!packages/**/__tests__/**/*', + '!packages/core/src/benchmark/**/*', + '!packages/cli/src/index.ts', + '!packages/cli/src/assert-node-version.ts', + ], + coverageThreshold: { + 'packages/core/': { + statements: 77, + branches: 69, + functions: 65, + lines: 77, + }, + 'packages/cli/': { + statements: 30, + branches: 27, + functions: 29, + lines: 32, + }, + }, + testMatch: ['**/__tests__/**/*.test.ts', '**/*.test.ts'], + globals: { + 'ts-jest': { + diagnostics: false, + }, + }, +}; diff --git a/package.json b/package.json index 8310531256..8835552ff9 100644 --- a/package.json +++ b/package.json @@ -65,40 +65,5 @@ "typescript": "4.3.3", "webpack": "^4.44.1", "webpack-cli": "^3.3.12" - }, - "jest": { - "clearMocks": true, - "restoreMocks": true, - "preset": "ts-jest", - "collectCoverageFrom": [ - "packages/*/src/**/*.ts", - "!packages/**/__tests__/**/*", - "!packages/core/src/benchmark/**/*", - "!packages/cli/src/index.ts", - "!packages/cli/src/assert-node-version.ts" - ], - "coverageThreshold": { - "packages/core/": { - "statements": 77, - "branches": 69, - "functions": 65, - "lines": 77 - }, - "packages/cli/": { - "statements": 30, - "branches": 27, - "functions": 29, - "lines": 32 - } - }, - "testMatch": [ - "**/__tests__/**/*.test.ts", - "**/*.test.ts" - ], - "globals": { - "ts-jest": { - "diagnostics": false - } - } } } diff --git a/packages/core/src/__tests__/lint.test.ts b/packages/core/src/__tests__/lint.test.ts index 0aa898818e..5fb646d9ff 100644 --- a/packages/core/src/__tests__/lint.test.ts +++ b/packages/core/src/__tests__/lint.test.ts @@ -181,15 +181,15 @@ describe('lint', () => { expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`); }); - it('detect OpenAPI should throw an error when version is not string', () => { - - const testDocument = parseYamlToDocument( - outdent` + it('detect OpenAPI should throw an error when version is not string', () => { + const testDocument = parseYamlToDocument( + outdent` openapi: 3.0 `, - '', + '', ); - expect(() => detectOpenAPI(testDocument.parsed)) - .toThrow(`Invalid OpenAPI version: should be a string but got "number"`) - }); + expect(() => detectOpenAPI(testDocument.parsed)).toThrow( + `Invalid OpenAPI version: should be a string but got "number"`, + ); + }); });