aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js
new file mode 100644
index 00000000..36c8055b
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/runner.js
@@ -0,0 +1,92 @@
+/**
+ * Runner middleware is reponsible for communication with `karma run`.
+ *
+ * It basically triggers a test run and streams stdout back.
+ */
+
+var path = require('path')
+var helper = require('../helper')
+var log = require('../logger').create()
+var constant = require('../constants')
+var json = require('connect').json()
+
+// TODO(vojta): disable when single-run mode
+var createRunnerMiddleware = function (emitter, fileList, capturedBrowsers, reporter, executor,
+ /* config.hostname */ hostname, /* config.port */ port, /* config.urlRoot */ urlRoot, config) {
+ return function (request, response, next) {
+ if (request.url !== '/__run__' && request.url !== urlRoot + 'run') {
+ return next()
+ }
+
+ log.debug('Execution (fired by runner)')
+ response.writeHead(200)
+
+ if (!capturedBrowsers.length) {
+ var url = 'http://' + hostname + ':' + port + urlRoot
+
+ return response.end('No captured browser, open ' + url + '\n')
+ }
+
+ json(request, response, function () {
+ if (!capturedBrowsers.areAllReady([])) {
+ response.write('Waiting for previous execution...\n')
+ }
+
+ emitter.once('run_start', function () {
+ var responseWrite = response.write.bind(response)
+
+ reporter.addAdapter(responseWrite)
+
+ // clean up, close runner response
+ emitter.once('run_complete', function (browsers, results) {
+ reporter.removeAdapter(responseWrite)
+ response.end(constant.EXIT_CODE + results.exitCode)
+ })
+ })
+
+ var data = request.body
+ log.debug('Setting client.args to ', data.args)
+ config.client.args = data.args
+
+ var fullRefresh = true
+
+ if (helper.isArray(data.changedFiles)) {
+ data.changedFiles.forEach(function (filepath) {
+ fileList.changeFile(path.resolve(config.basePath, filepath))
+ fullRefresh = false
+ })
+ }
+
+ if (helper.isArray(data.addedFiles)) {
+ data.addedFiles.forEach(function (filepath) {
+ fileList.addFile(path.resolve(config.basePath, filepath))
+ fullRefresh = false
+ })
+ }
+
+ if (helper.isArray(data.removedFiles)) {
+ data.removedFiles.forEach(function (filepath) {
+ fileList.removeFile(path.resolve(config.basePath, filepath))
+ fullRefresh = false
+ })
+ }
+
+ if (fullRefresh && data.refresh !== false) {
+ log.debug('Refreshing all the files / patterns')
+ fileList.refresh()
+
+ if (!config.autoWatch) {
+ executor.schedule()
+ }
+ } else {
+ executor.schedule()
+ }
+ })
+ }
+}
+
+createRunnerMiddleware.$inject = ['emitter', 'fileList', 'capturedBrowsers', 'reporter', 'executor',
+ 'config.hostname', 'config.port', 'config.urlRoot', 'config']
+
+// PUBLIC API
+exports.create = createRunnerMiddleware