text: /**
   * This serves as the main function for starting a test run that has been
   * requested by the launcher.
   */
  "use strict";
  var configParser_1 = require('./configParser');
  var logger_1 = require('./logger');
  var runner_1 = require('./runner');
  var logger = new logger_1.Logger('runnerCli');
  process.on('message', function (m) {
      switch (m.command) {
          case 'run':
              if (!m.capabilities) {
                  throw new Error('Run message missing capabilities');
              }
              // Merge in config file options.
              var configParser = new configParser_1.ConfigParser();
              if (m.configFile) {
                  configParser.addFileConfig(m.configFile);
              }
              if (m.additionalConfig) {
                  configParser.addConfig(m.additionalConfig);
              }
              var config = configParser.getConfig();
              logger_1.Logger.set(config);
              // Grab capabilities to run from launcher.
              config.capabilities = m.capabilities;
              // Get specs to be executed by this runner
              config.specs = m.specs;
              // Launch test run.
              var runner = new runner_1.Runner(config);
              // Pipe events back to the launcher.
              runner.on('testPass', function () {
                  process.send({ event: 'testPass' });
              });
              runner.on('testFail', function () {
                  process.send({ event: 'testFail' });
              });
              runner.on('testsDone', function (results) {
                  process.send({ event: 'testsDone', results: results });
              });
              runner.run()
                  .then(function (exitCode) {
                  process.exit(exitCode);
              })
                  .catch(function (err) {
                  logger.info(err.message);
                  process.exit(1);
              });
              break;
          default:
              throw new Error('command ' + m.command + ' is invalid');
      }
  });
  