Files
vue-cli/packages/@vue/cli-plugin-unit-jest/index.js
Evan You 64b4515731 refactor: change default test directory name to "tests"
BREAKING CHANGE: all tests are now located in "tests" instead of "test"
close #877
2018-02-28 18:07:06 -05:00

46 lines
1.2 KiB
JavaScript

module.exports = api => {
api.registerCommand('test', {
description: 'run unit tests with jest',
usage: 'vue-cli-service test [options] <regexForTestFiles>',
options: {
'--watch': 'run tests in watch mode'
},
details:
`All jest command line options are supported.\n` +
`See https://facebook.github.io/jest/docs/en/cli.html for more details.`
}, (args, rawArgv) => {
api.setMode('test')
// for @vue/babel-preset-app
process.env.VUE_CLI_BABEL_TARGET_NODE = true
process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true
const execa = require('execa')
const jestBinPath = require.resolve('jest/bin/jest')
let testMatch = []
if (!args._.length) {
testMatch = [`--testMatch`, `<rootDir>/(tests/unit/**/*.spec.(ts|tsx|js)|**/__tests__/*.(ts|tsx|js))`]
}
const argv = [
...rawArgv,
...testMatch
]
return new Promise((resolve, reject) => {
const child = execa(jestBinPath, argv, {
cwd: api.resolve('.'),
stdio: 'inherit'
})
child.on('error', reject)
child.on('exit', code => {
if (code !== 0) {
reject(`jest exited with code ${code}.`)
} else {
resolve()
}
})
})
})
}