Gruntfile.js
function(nodeUnitTaskName) {
    grunt.registerTask(nodeUnitTaskName, 'Nodeunit sync runner', function() {
      try {
        var result = execSync('node_modules/.bin/nodeunit --reporter="minimal"', { encoding: 'utf8' });
        grunt.log.writeln(result);
      } catch (e) {
        grunt.fail.warn(e);
      }
    });
  }
function(nodeUnitTaskName) {
    grunt.registerTask(nodeUnitTaskName, 'Nodeunit sync runner', function() {
      try {
        var result = execSync('node_modules/.bin/nodeunit --reporter="minimal"', { encoding: 'utf8' });
        grunt.log.writeln(result);
      } catch (e) {
        grunt.fail.warn(e);
      }
    });
  }
function ( nodeUnitTaskName ) { grunt . registerTask ( nodeUnitTaskName , 'Nodeunit sync runner' , function ( ) { try { var result = execSync ( 'node_modules/.bin/nodeunit --reporter="minimal"' , { encoding : 'utf8' } ) ; grunt . log . writeln ( result ) ; } catch ( e ) { grunt . fail . warn ( e ) ; } } ) ; }
Dynamically generates new nodeunit runner, otherwise nodeunit wouldn't reinitialize the changed filesystem.
Bower install new ember version, template compiler generates new files, so nodeunit has to read these new files.
Using always the same nodeunit taskname wouldn't sync the test source, so only the first test iteration would work.

@param {String} nodeUnitTaskName
Dynamically generates new nodeunit runner otherwise nodeunit wouldn t reinitialize the changed filesystem . Bower install new ember version template compiler generates new files so nodeunit has to read these new files . Using always the same nodeunit taskname wouldn t sync the test source so only the first test iteration would work .