https://github.com/angular/angular
Raw File
Tip revision: 046758cf6196e928b747ea5787280cd3c5a943a9 authored by Rado Kirov on 08 January 2016, 20:09:34 UTC
docs(changelog): update change log to beta.1
Tip revision: 046758c
run_server_dart_tests.js
var Q = require('q');
var glob = require('glob');
var fs = require('fs');
var path = require('path');
var spawn = require('child_process').spawn;

var util = require('./util');

module.exports = function(gulp, plugins, config) {
  return function() {
    if (config.dir) {
      return run(config.dir);
    } else {
      return util.forEachSubDirSequential(config.dest, run);
    }
  };

  function run(dir) {
    var testDir = path.join(dir, 'test');
    var relativeMasterTestFile = 'test/_all_tests.dart';
    var testFiles = [].slice.call(glob.sync('**/*.server.spec.dart', {
      cwd: testDir
    }));
    if (testFiles.length == 0) {
      // No test files found
      return Q.resolve();
    }
    var header = ['library _all_tests;', ''];
    var main = ['main() {'];
    testFiles.forEach(function(fileName, index) {
      header.push('import "' + fileName + '" as test_' + index + ';');
      main.push('  test_' + index + '.main();');
    });
    header.push('');
    main.push('}');

    var absMasterTestFile = path.join(dir, relativeMasterTestFile);
    fs.writeFileSync(absMasterTestFile, header.concat(main).join('\n'));

    var defer = Q.defer();
    var done = defer.makeNodeResolver();
    console.log('start tests:', dir);
    util.processToPromise(spawn('dart', ['-c', relativeMasterTestFile], {
      stdio: 'inherit',
      cwd: dir
    })).then(
      function() { done(); },
      function(error) { done(error); }
    );
    return defer.promise.then(function() {
      console.log('end tests');
    });
  }
};
back to top