UNPKG

karma-kickoff

Version:

Kick off karma with ease along with running specific specs with one config file.

63 lines (49 loc) 1.56 kB
'use strict' var Karma = require('karma').Server const _ = require('lodash') let getOriginalConfig = (configFile, logFn) => { let confFactory = require(configFile) let genConfig = null let setConfig = function(config) { logFn('getting original Karma config') return genConfig = config } confFactory({set: setConfig}) return genConfig } const ourOptions = ['logFn', 'appendFiles', 'lengthToPop'] module.exports = (done, opts) => { /*eslint-disable no-alert, no-console */ opts = opts || {} let configFile = opts.configFile let appendFiles = opts.appendFiles let lengthToPop = opts.lengthToPop || 1 let logFn = opts.logFn || console.log if (!configFile) throw new Error('configFile must be defined') let copy = _.extend({}, getOriginalConfig(configFile, logFn)) var defaultSingleRun = copy.singleRun != null ? copy.singleRun : true opts.singleRun = opts.singleRun != null ? opts.singleRun : defaultSingleRun ourOptions.forEach((name) => { if (opts[name]) delete opts[name] }) if (typeof configFile === 'string') opts.configFile = require.resolve(configFile) if (appendFiles) { for (let i = 0; i < lengthToPop; i++) copy.files.pop() opts.files = copy.files.concat(appendFiles) } logFn('-- Karma Setup --') try { let server = new Karma(opts, function(code) { logFn(`Karma Callback Code: ${code}`) return done.apply(null,arguments) }) return server.start() } catch (error) { logFn(`KARMA ERROR: ${error}`) return done(error) } }