grunt-qunit-node

0.1.0 • Public • Published

grunt-qunit-node

Simple Grunt task that runs QUnit tests in Node.js

Getting Started

This plugin requires Grunt >=0.4.0.

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-qunit-node --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-qunit-node');

This plugin has a peer dependency on qunitjs in version ^2.0.0. If you haven't already installed it, run this command:

npm install qunitjs --save-dev

The "qunit-node" task

Overview

In your project's Gruntfile, add a section named qunit-node to the data object passed into grunt.initConfig().

grunt.initConfig({
  'qunit-node': {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
});

Options

options.setup

Type: Function
Default value: function (QUnit) { }

Specify a callback function which will be called before QUnit starts the tests.
This grunt task doesn't log individual test or module results, just the end result.
Therefore, it is a good place to register callbacks on the QUnit argument, e.g. with QUnit.on(...).
See callbacks/QUnit.on for details.

options.<anyOtherProperty>

Type: any

Any other property of the config object will be directly set on QUnit.config.
See config/QUnit.config for details.

Usage Examples

In your package.json:

  ...,
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-qunit-node": "^0.1.0",
    "qunitjs": "^2.3.0"
  },
  "scripts": {
    "test": "grunt test"
  },
  ...

Install

$ npm install

In your Gruntfile.js:

var inspect = require('util').inspect,
    EOL = require('os').EOL;

module.exports = function (grunt) {
  grunt.initConfig({
    'qunit-node': {
      options: {
        noglobals: true
      },
      test: {
        src: 'test/qunit-node-fixture.js',
        options: {
          requireExpects: true,
          setup: function (qunit) {
            qunit.on('testEnd', function (testEnd) {
              testEnd.errors.forEach(function (error) {
                var actual = inspect(error.actual),
                    expected = inspect(error.expected),
                    reason = 'Actual value ' + actual + ' does not match expected value ' + expected,
                    message = 'Description: ' + error.message + EOL +
                              'Reason: ' + reason + EOL +
                              'Stack: ' + error.stack;

                grunt.log.errorlns(message);
              });
            });
          }
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-qunit-node');
  grunt.registerTask('test', ['qunit-node:test']);
};

In test/qunit-node-fixture.js:

QUnit.test('a basic test example', function (assert) {
  assert.expect(1);
  var value = 'hello';
  assert.equal(value, 'hello', 'We expect value to be hello');
});

Run the tests

$ npm test

Contributing

$ git clone https://github.com/mucaho/grunt-qunit-node.git
$ cd grunt-qunit-node
$ npm install

Modify code.
Add unit tests for any new or changed functionality.

$ npm test

Release History

0.0.1: Initial version

Readme

Keywords

Package Sidebar

Install

npm i grunt-qunit-node

Weekly Downloads

5

Version

0.1.0

License

MIT

Last publish

Collaborators

  • mucaho