now looking for coverage percentage being actually present, fixes #22

This commit is contained in:
Philipp Kunz 2017-05-05 00:01:21 +02:00
parent 4b07c9951f
commit 46c79e711b
4 changed files with 118 additions and 106 deletions

View File

@ -85,7 +85,7 @@ let checkDevDependencies = (configArg) => {
plugins.beautylog.log(`unused devDependency ${item}`); plugins.beautylog.log(`unused devDependency ${item}`);
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency ${item}`); plugins.beautylog.error(`missing devDependency ${item}`);
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json'); plugins.beautylog.info('exiting due to missing dependencies in package.json');

8
dist/mod02/index.js vendored
View File

@ -77,7 +77,13 @@ let tap = function (configArg) {
return done.promise; return done.promise;
}; };
let handleCoverageData = (configArg) => __awaiter(this, void 0, void 0, function* () { let handleCoverageData = (configArg) => __awaiter(this, void 0, void 0, function* () {
let coverageResult = yield plugins.smartcov.get.percentageFromLcovString(configArg.runData.coverageLcovInfo, 2); let coverageResult = 0; // the coverage in percent
if (configArg.runData.coverageLcovInfo) {
coverageResult = yield plugins.smartcov.get.percentageFromLcovString(configArg.runData.coverageLcovInfo, 2);
}
else {
plugins.beautylog.warn('Hey... Did your tests import and use your module that you are trying to test?');
}
if (coverageResult >= configArg.coverageTreshold) { if (coverageResult >= configArg.coverageTreshold) {
plugins.beautylog.ok(`${(coverageResult).toString()}% ` plugins.beautylog.ok(`${(coverageResult).toString()}% `
+ `coverage exceeds your treshold of ` + `coverage exceeds your treshold of `

View File

@ -8,119 +8,119 @@ import * as plugins from './mod00.plugins'
export let projectInfo: ProjectinfoNpm export let projectInfo: ProjectinfoNpm
let checkProjectTypings = (configArg) => { let checkProjectTypings = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check Project Typings...') plugins.beautylog.ora.text('Check Module: Check Project Typings...')
projectInfo = new ProjectinfoNpm(paths.cwd) projectInfo = new ProjectinfoNpm(paths.cwd)
if (typeof projectInfo.packageJson.typings === 'undefined') { if (typeof projectInfo.packageJson.typings === 'undefined') {
plugins.beautylog.error(`please add typings field to package.json`) plugins.beautylog.error(`please add typings field to package.json`)
process.exit(1) process.exit(1)
}; };
done.resolve(configArg) done.resolve(configArg)
return done.promise return done.promise
} }
const depcheckOptions = { const depcheckOptions = {
ignoreBinPackage: false, // ignore the packages with bin entry ignoreBinPackage: false, // ignore the packages with bin entry
parsers: { // the target parsers parsers: { // the target parsers
'*.ts': plugins.depcheck.parser.typescript '*.ts': plugins.depcheck.parser.typescript
}, },
detectors: [ // the target detectors detectors: [ // the target detectors
plugins.depcheck.detector.requireCallExpression, plugins.depcheck.detector.requireCallExpression,
plugins.depcheck.detector.importDeclaration plugins.depcheck.detector.importDeclaration
], ],
specials: [ // the target special parsers specials: [ // the target special parsers
plugins.depcheck.special.eslint, plugins.depcheck.special.eslint,
plugins.depcheck.special.webpack plugins.depcheck.special.webpack
] ]
} }
let checkDependencies = (configArg) => { let checkDependencies = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check Dependencies...') plugins.beautylog.ora.text('Check Module: Check Dependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
'test', 'test',
'dist', 'dist',
'bower_components' 'bower_components'
], ],
ignoreMatches: [ // ignore dependencies that matches these globs ignoreMatches: [ // ignore dependencies that matches these globs
'@types/*', '@types/*',
'babel-preset-*' 'babel-preset-*'
] ]
}) })
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => { plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.dependencies) { for (let item of unused.dependencies) {
plugins.beautylog.warn(`Watch out: unused dependency "${item}"`) plugins.beautylog.warn(`Watch out: unused dependency "${item}"`)
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`missing dependency "${item}" in package.json`) plugins.beautylog.error(`missing dependency "${item}" in package.json`)
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json') plugins.beautylog.info('exiting due to missing dependencies in package.json')
process.exit(1) process.exit(1)
} }
for (let item in unused.invalidFiles) { for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`) plugins.beautylog.warn(`Watch out: could not parse file ${item}`)
}; };
for (let item in unused.invalidDirs) { for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`) plugins.beautylog.warn(`Watch out: could not parse directory ${item}`)
} }
done.resolve(configArg) done.resolve(configArg)
}) })
return done.promise return done.promise
} }
let checkDevDependencies = (configArg) => { let checkDevDependencies = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check devDependencies...') plugins.beautylog.ora.text('Check Module: Check devDependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
'ts', 'ts',
'dist', 'dist',
'bower_components' 'bower_components'
], ],
ignoreMatches: [ // ignore dependencies that matches these globs ignoreMatches: [ // ignore dependencies that matches these globs
'@types/*', '@types/*',
'babel-preset-*' 'babel-preset-*'
] ]
}) })
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => { plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.devDependencies) { for (let item of unused.devDependencies) {
plugins.beautylog.log(`unused devDependency ${item}`) plugins.beautylog.log(`unused devDependency ${item}`)
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency ${item}`) plugins.beautylog.error(`missing devDependency ${item}`)
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json') plugins.beautylog.info('exiting due to missing dependencies in package.json')
process.exit(1) process.exit(1)
} }
for (let item in unused.invalidFiles) { for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`) plugins.beautylog.warn(`Watch out: could not parse file ${item}`)
} }
for (let item in unused.invalidDirs) { for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`) plugins.beautylog.warn(`Watch out: could not parse directory ${item}`)
} }
done.resolve(configArg) done.resolve(configArg)
}) })
return done.promise return done.promise
} }
let checkNodeVersion = (configArg) => { let checkNodeVersion = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('checking node version') plugins.beautylog.ora.text('checking node version')
done.resolve(configArg) done.resolve(configArg)
return done.promise return done.promise
} }
export let run = (configArg) => { export let run = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: ...') plugins.beautylog.ora.text('Check Module: ...')
checkProjectTypings(configArg) checkProjectTypings(configArg)
.then(checkDependencies) .then(checkDependencies)
.then(checkDevDependencies) .then(checkDevDependencies)
.then(checkNodeVersion) .then(checkNodeVersion)
.then(done.resolve) .then(done.resolve)
.catch((err) => { console.log(err) }) .catch((err) => { console.log(err) })
return done.promise return done.promise
} }

View File

@ -77,10 +77,16 @@ let tap = function (configArg: INpmtsConfig) {
} }
let handleCoverageData = async (configArg: INpmtsConfig) => { let handleCoverageData = async (configArg: INpmtsConfig) => {
let coverageResult = await plugins.smartcov.get.percentageFromLcovString( let coverageResult: number = 0 // the coverage in percent
configArg.runData.coverageLcovInfo, if (configArg.runData.coverageLcovInfo) {
2 coverageResult = await plugins.smartcov.get.percentageFromLcovString(
) configArg.runData.coverageLcovInfo,
2
)
} else {
plugins.beautylog.warn('Hey... Did your tests import and use your module that you are trying to test?')
}
if (coverageResult >= configArg.coverageTreshold) { if (coverageResult >= configArg.coverageTreshold) {
plugins.beautylog.ok( plugins.beautylog.ok(
`${(coverageResult).toString()}% ` `${(coverageResult).toString()}% `