UNPKG

1.49 kBJavaScriptView Raw
1'use strict';
2
3/**
4 * Module dependencies.
5 */
6
7var Base = require('./base');
8var utils = require('../utils');
9
10/**
11 * Expose `Doc`.
12 */
13
14exports = module.exports = Doc;
15
16/**
17 * Initialize a new `Doc` reporter.
18 *
19 * @param {Runner} runner
20 * @api public
21 */
22function Doc (runner) {
23 Base.call(this, runner);
24
25 var indents = 2;
26
27 function indent () {
28 return Array(indents).join(' ');
29 }
30
31 runner.on('suite', function (suite) {
32 if (suite.root) {
33 return;
34 }
35 ++indents;
36 console.log('%s<section class="suite">', indent());
37 ++indents;
38 console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title));
39 console.log('%s<dl>', indent());
40 });
41
42 runner.on('suite end', function (suite) {
43 if (suite.root) {
44 return;
45 }
46 console.log('%s</dl>', indent());
47 --indents;
48 console.log('%s</section>', indent());
49 --indents;
50 });
51
52 runner.on('pass', function (test) {
53 console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title));
54 var code = utils.escape(utils.clean(test.body));
55 console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);
56 });
57
58 runner.on('fail', function (test, err) {
59 console.log('%s <dt class="error">%s</dt>', indent(), utils.escape(test.title));
60 var code = utils.escape(utils.clean(test.body));
61 console.log('%s <dd class="error"><pre><code>%s</code></pre></dd>', indent(), code);
62 console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err));
63 });
64}