From 8bdc1d2418a0fe19f54fa3bcace1d4cafbe5ea25 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Thu, 14 Nov 2013 11:12:19 -0800 Subject: [PATCH] Better error messages --- tasks/spec-task.coffee | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tasks/spec-task.coffee b/tasks/spec-task.coffee index 23f4048db..f19b61478 100644 --- a/tasks/spec-task.coffee +++ b/tasks/spec-task.coffee @@ -2,6 +2,7 @@ fs = require 'fs' path = require 'path' _ = require 'underscore-plus' + async = require 'async' module.exports = (grunt) -> @@ -10,7 +11,7 @@ module.exports = (grunt) -> packageSpecQueue = null runPackageSpecs = (callback) -> - passed = true + failedPackages = [] rootDir = grunt.config.get('atom.shellAppDir') appDir = grunt.config.get('atom.appDir') atomPath = path.join(appDir, 'atom.sh') @@ -25,9 +26,8 @@ module.exports = (grunt) -> env: _.extend({}, process.env, ATOM_PATH: rootDir) grunt.verbose.writeln "Launching #{path.basename(packagePath)} specs." spawn options, (error, results, code) -> - if error - passed = false - grunt.log.error "#{path.basename(packagePath)} specs failed" + + failedPackages.push path.basename(packagePath) if error callback() modulesDirectory = path.resolve('node_modules') @@ -38,7 +38,7 @@ module.exports = (grunt) -> packageSpecQueue.push(packagePath) packageSpecQueue.concurrency = 1 - packageSpecQueue.drain = -> callback(null, passed) + packageSpecQueue.drain = -> callback(null, failedPackages) runCoreSpecs = (callback) -> contentsDir = grunt.config.get('atom.contentsDir') @@ -51,14 +51,19 @@ module.exports = (grunt) -> args: ['--test', "--resource-path=#{resourcePath}", "--spec-directory=#{coreSpecsPath}"] spawn options, (error, results, code) -> packageSpecQueue.concurrency = 2 - callback(null, not error) + callback(null, error) grunt.registerTask 'run-specs', 'Run the specs', -> done = @async() startTime = Date.now() async.parallel [runCoreSpecs, runPackageSpecs], (error, results) -> - [coreSpecPassed, packageSpecsPassed] = results + [coreSpecFailed, failedPackages] = results elapsedTime = Math.round((Date.now() - startTime) / 100) / 10 grunt.verbose.writeln("Total spec time: #{elapsedTime}s") - done(coreSpecPassed and packageSpecsPassed) + failures = failedPackages + failures.push "atom core" if coreSpecFailed + + grunt.log.error("[Error]".red + " #{failures.join(', ')} spec(s) failed") if failures.length > 0 + + done(!coreSpecFailed and failedPackages.length == 0)