1 | 'use strict'
|
2 |
|
3 | const chalk = require('chalk')
|
4 | const figures = require('figures')
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | function padding (string, span = 2) {
|
14 | const spaces = ' '.repeat(span)
|
15 | return spaces + string.replace(/\n/g, `\n${spaces}`)
|
16 | }
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | function reduceEmptyLine (string) {
|
26 | return string.replace(/\n([ ]*\n)+/g, '\n\n')
|
27 | }
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 | const passedMessage = chalk.green(`${figures.tick} Passed`)
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 | function report (results) {
|
45 | const arr = []
|
46 |
|
47 | results.forEach(result => {
|
48 | const name = result.name
|
49 | const output = result.output
|
50 | const success = result.success
|
51 |
|
52 | arr.push('\n')
|
53 | arr.push(`${chalk.bold(`> ${name}:`)}\n`)
|
54 | arr.push('\n')
|
55 |
|
56 | if (success && !output.trim()) {
|
57 | arr.push(padding(passedMessage))
|
58 | } else {
|
59 | arr.push(padding(output))
|
60 | }
|
61 |
|
62 | arr.push('\n')
|
63 | })
|
64 |
|
65 | arr.push('\n')
|
66 |
|
67 | return reduceEmptyLine(arr.join(''))
|
68 | }
|
69 |
|
70 | module.exports = report
|