Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

added new reporter #197

Open
wants to merge 2 commits into from

1 participant

@guyzmo

Added new reporter better_skip_passed based on skip_passed, with a more concise and colorful formatting.

Test screenshot

Signed-off-by: Bernard Guyzmo Pratz

@guyzmo

now it correctly handles the curly brackets, for color matching (i.e. in picture, you now have Line 4, Char 5 in bold and Expected… in regular.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Mar 21, 2013
  1. @guyzmo

    added 'better skip passed' reporter

    guyzmo authored
    Signed-off-by: Guyzmo <guyzmo+github@m0g.net>
Commits on Mar 30, 2013
  1. @guyzmo
This page is out of date. Refresh to see the latest.
Showing with 117 additions and 0 deletions.
  1. +116 −0 lib/reporters/better_skip_passed.js
  2. +1 −0  lib/reporters/index.js
View
116 lib/reporters/better_skip_passed.js
@@ -0,0 +1,116 @@
+/*!
+ * Nodeunit
+ * Copyright (c) 2010 Caolan McMahon
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies
+ */
+
+var nodeunit = require('../nodeunit'),
+ utils = require('../utils'),
+ fs = require('fs'),
+ path = require('path'),
+ AssertionError = require('assert').AssertionError;
+
+/**
+ * Reporter info string
+ */
+
+exports.info = "Skip passed tests output";
+
+/**
+ * Run all tests within each module, reporting the results to the command-line.
+ *
+ * @param {Array} files
+ * @api public
+ */
+
+exports.run = function (files, options, callback) {
+
+ if (!options) {
+ // load default options
+ var content = fs.readFileSync(
+ __dirname + '/../../bin/nodeunit.json', 'utf8'
+ );
+ options = JSON.parse(content);
+ }
+
+ var error = function (str) {
+ return options.error_prefix + str + options.error_suffix;
+ };
+ var ok = function (str) {
+ return options.ok_prefix + str + options.ok_suffix;
+ };
+ var bold = function (str) {
+ return options.bold_prefix + str + options.bold_suffix;
+ };
+ var assertion_message = function (str) {
+ return options.assertion_prefix + str + options.assertion_suffix;
+ };
+ var yellow = function (str) {
+ return "" + str + " ";
+ };
+
+ var start = new Date().getTime();
+ var paths = files.map(function (p) {
+ return path.join(process.cwd(), p);
+ });
+
+ var out = "";
+ nodeunit.runFiles(paths, {
+ testspec: options.testspec,
+ testFullSpec: options.testFullSpec,
+ moduleStart: function (name) {
+ name = (" " + bold(name) + ": ").slice(-30)
+ process.stdout.write(name);
+ },
+ testDone: function (name, assertions) {
+ if (assertions.failures()) {
+ out += "\n " + error('' + name);
+ assertions.forEach(function (a) {
+ if (a.failed()) {
+ a = utils.betterErrors(a);
+ if (a.error instanceof AssertionError && a.message) {
+ out += 'Assertion Message: ' + assertion_message(a.message);
+ }
+ out += "\n"
+ + a.error.message.replace(/\[bold\]\{([a-zA-Z0-9, ]*)\}/g, " " + bold("$1") + " \t")
+ .replace(/\[yellow\]\{([a-zA-Z0-9, ]*)\}/g, yellow("$1"))
+ .replace(/\[red\]\{([a-zA-Z0-9\(\) ]*)\}/g, error("$1"));
+ }
+ });
+ }
+ },
+ moduleDone: function (name, assertions) {
+ if (!assertions.failures()) {
+ console.log(options.ok_prefix+'✔ all tests passed'+options.ok_suffix);
+ }
+ else {
+ console.log(error('✖ some tests failed'));
+ console.log(out);
+ }
+ out = "";
+ },
+ done: function (assertions) {
+ var end = new Date().getTime();
+ var duration = end - start;
+ if (assertions.failures()) {
+ console.log(
+ '\n' + bold(error('FAILURES: ')) + assertions.failures() +
+ '/' + assertions.length + ' assertions failed (' +
+ assertions.duration + 'ms)'
+ );
+ }
+ else {
+ console.log(
+ '\n' + bold(ok('OK: ')) + assertions.length +
+ ' assertions (' + assertions.duration + 'ms)'
+ );
+ }
+
+ if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined);
+ }
+ });
+};
View
1  lib/reporters/index.js
@@ -2,6 +2,7 @@ module.exports = {
'junit': require('./junit'),
'default': require('./default'),
'skip_passed': require('./skip_passed'),
+ 'better_skip_passed': require('./better_skip_passed'),
'minimal': require('./minimal'),
'html': require('./html'),
'eclipse': require('./eclipse'),
Something went wrong with that request. Please try again.