diff --git a/.circleci/config.yml b/.circleci/config.yml index 96b131a3..0d20df9f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -100,8 +100,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage server.js - node ../../scripts/only-covered server.js + ../../node_modules/.bin/check-coverage server.js + ../../node_modules/.bin/only-covered server.js working_directory: examples/backend - cypress/run: @@ -130,10 +130,10 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage fullstack/server/server.js - node ../../scripts/check-coverage fullstack/main.js - node ../../scripts/check-coverage fullstack/string-utils.js - node ../../scripts/only-covered server.js main.js string-utils.js + ../../node_modules/.bin/check-coverage fullstack/server/server.js + ../../node_modules/.bin/check-coverage fullstack/main.js + ../../node_modules/.bin/check-coverage fullstack/string-utils.js + ../../node_modules/.bin/only-covered server.js main.js string-utils.js working_directory: examples/fullstack - cypress/run: @@ -161,8 +161,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/only-covered main.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/only-covered main.js working_directory: examples/before-each-visit - cypress/run: @@ -190,8 +190,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/only-covered main.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/only-covered main.js working_directory: examples/before-all-visit - cypress/run: @@ -218,8 +218,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.ts - node ../../scripts/only-covered main.ts + ../../node_modules/.bin/check-coverage main.ts + ../../node_modules/.bin/only-covered main.ts working_directory: examples/ts-example - cypress/run: @@ -250,9 +250,9 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/check-coverage unit-utils.js - node ../../scripts/only-covered main.js unit-utils.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/check-coverage unit-utils.js + ../../node_modules/.bin/only-covered main.js unit-utils.js working_directory: examples/same-folder - cypress/run: @@ -282,8 +282,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/only-covered main.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/only-covered main.js working_directory: examples/support-files - cypress/run: @@ -311,8 +311,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/only-covered main.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/only-covered main.js working_directory: examples/use-plugins-and-support - cypress/run: @@ -340,8 +340,8 @@ workflows: - run: name: Check code coverage 📈 command: | - node ../../scripts/check-coverage main.js - node ../../scripts/only-covered main.js + ../../node_modules/.bin/check-coverage main.js + ../../node_modules/.bin/only-covered main.js working_directory: examples/one-spec - publish: diff --git a/package-lock.json b/package-lock.json index 85f4d6a2..7a409492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4468,6 +4468,15 @@ } } }, + "check-code-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/check-code-coverage/-/check-code-coverage-1.0.1.tgz", + "integrity": "sha512-gQ61+sUoChj5krJoIi2CYWqrnLrol7VVRV5XksslabXfX4tle9KqARVuL6NqbcKSa2yQ1eN2kloKDwmib8ut9g==", + "dev": true, + "requires": { + "lodash": "4.17.15" + } + }, "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", diff --git a/package.json b/package.json index a0ac8603..53a008c3 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "@babel/core": "7.9.0", "@istanbuljs/nyc-config-typescript": "1.0.1", "babel-plugin-istanbul": "6.0.0", + "check-code-coverage": "1.0.1", "cypress": "4.3.0", "express": "4.17.1", "lodash": "4.17.15", diff --git a/scripts/check-coverage.js b/scripts/check-coverage.js deleted file mode 100644 index 4ff6bad1..00000000 --- a/scripts/check-coverage.js +++ /dev/null @@ -1,47 +0,0 @@ -const { join } = require('path') - -const filename = process.argv[2] -if (!filename) { - console.error('Usage: node %s ', __filename) - process.exit(1) -} -const coverageFilename = join(process.cwd(), '.nyc_output', 'out.json') -const coverage = require(coverageFilename) -const fileCoverageKey = Object.keys(coverage).find(name => { - const fileCover = coverage[name] - if (fileCover.path.endsWith(filename)) { - return fileCover - } -}) - -if (!fileCoverageKey) { - console.error( - 'Could not find file %s in coverage in file %s', - filename, - coverageFilename - ) - process.exit(1) -} - -const fileCoverage = coverage[fileCoverageKey] -const statementCounters = fileCoverage.s -const isThereUncoveredStatement = Object.keys(statementCounters).some( - (k, key) => { - return statementCounters[key] === 0 - } -) -if (isThereUncoveredStatement) { - console.error( - 'file %s has statements that were not covered by tests', - fileCoverage.path - ) - console.log('statement counters %o', statementCounters) - - process.exit(1) -} - -console.log( - '✅ All statements in file %s (found for %s) were covered', - fileCoverage.path, - filename -) diff --git a/scripts/only-covered.js b/scripts/only-covered.js deleted file mode 100644 index 073d397f..00000000 --- a/scripts/only-covered.js +++ /dev/null @@ -1,51 +0,0 @@ -const { join } = require('path') -const _ = require('lodash') - -const filenames = process.argv.slice(2) -if (!filenames.length) { - console.error('Usage: node %s ', __filename) - process.exit(1) -} - -const shouldBeCovered = filepath => - filenames.some(name => filepath.endsWith(name)) - -const coverageFilename = join(process.cwd(), '.nyc_output', 'out.json') -const coverage = require(coverageFilename) - -const coveredFilepaths = Object.keys(coverage).map(name => coverage[name].path) - -// console.log(coveredFilepaths) - -const [covered, extraCoveredFiles] = _.partition( - coveredFilepaths, - shouldBeCovered -) - -if (extraCoveredFiles.length) { - console.error('Error: found extra covered files 🔥') - console.error('Expected the following files in coverage results') - console.error(filenames.join('\n')) - console.error('extra files covered 🔥') - console.error(extraCoveredFiles.join('\n')) - process.exit(1) -} - -if (covered.length < filenames.length) { - console.error('Error: expected all files from the list to be covered 🔥') - console.error('Expected the following files in coverage results') - console.error(filenames.join('\n')) - console.error('But found only these files to be covered') - console.error(covered.join('\n')) - - console.error('Files missing from the coverage 🔥') - const missingFiles = filenames.filter( - filename => - !covered.some(coveredFilename => coveredFilename.endsWith(filename)) - ) - console.error(missingFiles.join('\n')) - - process.exit(1) -} - -console.log('✅ All and only expected files were covered')