Skip to content

Commit

Permalink
Restructure to support extending to other report types
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacs committed Mar 25, 2019
1 parent 8d6cc42 commit f726bb8
Show file tree
Hide file tree
Showing 53 changed files with 524 additions and 747 deletions.
2 changes: 2 additions & 0 deletions index.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const t = require('tap')
t.ok(require('./index.js'))
15 changes: 2 additions & 13 deletions test/cardinal-theme.js → lib/cardinal-theme.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require('./term-setup.js')
require('./term-setup.test.js')
const t = require('tap')
const theme = require('../lib/cardinal-theme.js')
const theme = require('./cardinal-theme.js')
t.match(theme, { Boolean: { _default: Function }})

const c = require('chalk')
Expand All @@ -19,14 +19,3 @@ const str = theme.String._default('str', {
t.equal(str, c.greenBright('str'), 'strings are bright')

t.equal(theme.Boolean._default('true'), c.redBright('true'), 'red as boold')

/*
_default: function(s, info) {
var nextToken = info.tokens[info.tokenIndex + 1]
// show keys of object literals and json in different color
return (nextToken && nextToken.type === 'Punctuator' && nextToken.value === ':')
? green(s)
: greenBright(s)
}
*/
18 changes: 15 additions & 3 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
const React = require('react')
const importJSX = require('import-jsx')
const Report = importJSX('./report.js')
const {render} = require('ink')
const importJSX = require('import-jsx')
/* istanbul ignore next */
module.exports = tap => render(<Report tap={tap} />)
module.exports = (tap, reporter = 'base') => {
if (!types.includes(reporter))
throw new Error('unsupported report type: ' + reporter)

const Report = importJSX('./reports/' + reporter)
render(<Report tap={tap} />)
}

const fs = require('fs')
const types = module.exports.types = fs.readdirSync(__dirname + '/reports')
types.forEach(type => Object.defineProperty(module.exports, type, {
get: importJSX(`./reports/${type}`),
enumerable: true,
}))
2 changes: 2 additions & 0 deletions lib/index.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const t = require('tap')
t.ok(require('import-jsx')('./index.js'))
4 changes: 2 additions & 2 deletions test/pretty-diff.js → lib/pretty-diff.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require('./term-setup.js')
require('./term-setup.test.js')
const t = require('tap')
const pretty = require('../lib/pretty-diff.js')
const pretty = require('./pretty-diff.js')

t.equal(pretty(), null)

Expand Down
4 changes: 2 additions & 2 deletions test/pretty-source.js → lib/pretty-source.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
require('./term-setup.js')
const pretty = require('../lib/pretty-source.js')
require('./term-setup.test.js')
const pretty = require('./pretty-source.js')
const t = require('tap')
const fs = require('fs')
const path = require('path')
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const importJSX = require('import-jsx')
const {render} = require('ink-testing-library')
const t = require('tap')
const AssertCounts = importJSX('../lib/assert-counts.js')
const AssertCounts = importJSX('./assert-counts.js')

const cases = [
[0, 0, 0, 0],
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const importJSX = require('import-jsx')
const t = require('tap')
const AssertName = importJSX('../lib/assert-name.js')
const AssertName = importJSX('./assert-name.js')
const {render} = require('ink-testing-library')

const ok = [ true, false ]
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/counts.js → lib/reports/base/counts.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const t = require('tap')
const counts = require('../lib/counts.js')
const counts = require('./counts.js')

const cases = [
[0,0,0,0],
Expand Down
17 changes: 13 additions & 4 deletions lib/report.js → lib/reports/base/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,20 @@ const Parser = require('tap-parser')
const chalk = require('chalk')

const Summary = importJSX('./summary.js')
const Result = importJSX('./result.js')
const Runs = importJSX('./runs.js')
const Log = importJSX('./log.js')

class Report extends React.Component {
get Summary () {
return Summary
}
get Runs () {
return Runs
}
get Log () {
return Log
}

constructor ({ tap }) {
super()

Expand Down Expand Up @@ -201,9 +210,9 @@ class Report extends React.Component {
render () {
return (
<Box flexDirection="column">
<Log log={this.state.log} />
<Runs runs={this.state.runs} />
<Summary
<this.Log log={this.state.log} />
<this.Runs runs={this.state.runs} />
<this.Summary
results={this.state.results || null}
counts={this.state.counts}
time={this.state.time}
Expand Down
4 changes: 2 additions & 2 deletions test/report.jsx → lib/reports/base/index.test.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const importJSX = require('import-jsx')
const React = require('react')
const Report = importJSX('../lib/report.js')
const Report = importJSX('./index.js')
const t = require('tap')
const {Test} = t
const {render, cleanup} = require('ink-testing-library')
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/log.jsx → lib/reports/base/log.test.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const importJSX = require('import-jsx')
const React = require('react')
const Log = importJSX('../lib/log.js')
const Log = importJSX('./log.js')
const t = require('tap')
const {render} = require('ink-testing-library')

Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/pass-fail.jsx → lib/reports/base/pass-fail.test.jsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const t = require('tap')
const importJSX = require('import-jsx')
const PassFail = importJSX('../lib/pass-fail.js')
const PassFail = importJSX('./pass-fail.js')
const {render} = require('ink-testing-library')

const r = render(<PassFail ok={true} name="this is fine" />)
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/result.jsx → lib/reports/base/result.test.jsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const t = require('tap')
const importJSX = require('import-jsx')
const Result = importJSX('../lib/result.js')
const Result = importJSX('./result.js')
const {render} = require('ink-testing-library')

const r = render(<Result raw="hello" />)
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/runs.jsx → lib/reports/base/runs.test.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const importJSX = require('import-jsx')
const React = require('react')
const Runs = importJSX('../lib/runs.js')
const Runs = importJSX('./runs.js')
const t = require('tap')
const {Test} = t
const {render} = require('ink-testing-library')
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const t = require('tap')
const importJSX = require('import-jsx')
const StatusMark = importJSX('../lib/status-mark.js')
const StatusMark = importJSX('./status-mark.js')
const {render} = require('ink-testing-library')

const r = render(<StatusMark />)
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const importJSX = require('import-jsx')
const {render} = require('ink-testing-library')
const t = require('tap')
const SuiteCounts = importJSX('../lib/suite-counts.js')
const SuiteCounts = importJSX('./suite-counts.js')

const cases = [
[0, 0, 0, 0, 4],
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/summary.jsx → lib/reports/base/summary.test.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const importJSX = require('import-jsx')
const React = require('react')
const Summary = importJSX('../lib/summary.js')
const Summary = importJSX('./summary.js')
const t = require('tap')
const {Test} = t
const {render} = require('ink-testing-library')
Expand Down
4 changes: 2 additions & 2 deletions lib/test-point.js → lib/reports/base/test-point.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const React = require('react')
const {Box, Color} = require('ink')
const prettyDiff = require('./pretty-diff.js')
const prettySource = require('./pretty-source.js')
const prettyDiff = require('../../pretty-diff.js')
const prettySource = require('../../pretty-source.js')
const yaml = require('tap-yaml')
const importJSX = require('import-jsx')
const PassFail = importJSX('./pass-fail.js')
Expand Down
4 changes: 2 additions & 2 deletions test/test-point.jsx → lib/reports/base/test-point.test.jsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const React = require('react')
const t = require('tap')
const importJSX = require('import-jsx')
const TestPoint = importJSX('../lib/test-point.js')
const TestPoint = importJSX('./test-point.js')
const {render} = require('ink-testing-library')

const r = render(<div />)
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions test/test.jsx → lib/reports/base/test.test.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('./term-setup.js')
require('../../term-setup.test.js')
const importJSX = require('import-jsx')
const React = require('react')
const TestTag = importJSX('../lib/test.js')
const TestTag = importJSX('./test.js')
const t = require('tap')
const {Test} = t
const {render} = require('ink-testing-library')
Expand Down
File renamed without changes.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,20 @@
"postpublish": "git push origin --all; git push origin --tags"
},
"tap": {
"check-coverage": true,
"test-arg": [
"--color"
]
},
"files": [
"index.js",
"lib"
"lib/**/!(*.test).js"
],
"nyc": {
"all": true,
"include": [
"index.js",
"lib/*.js*"
"lib/**/!(*.test).js"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Make sure to inspect the output below. Do not ignore changes!
*/
'use strict'
exports[`test/pretty-diff.js TAP > a pretty diff at 40 columns 1`] = `
exports[`lib/pretty-diff.test.js TAP > a pretty diff at 40 columns 1`] = `
--- expected 
+++ actual 
 Object { 
Expand All @@ -14,7 +14,7 @@ exports[`test/pretty-diff.js TAP > a pretty diff at 40 columns 1`] = `
 } 
`

exports[`test/pretty-diff.js TAP > a pretty diff at 2 columns 1`] = `
exports[`lib/pretty-diff.test.js TAP > a pretty diff at 2 columns 1`] = `
--- expected
+++ actual
 Object {
Expand All @@ -23,7 +23,7 @@ exports[`test/pretty-diff.js TAP > a pretty diff at 2 columns 1`] = `
 }
`

exports[`test/pretty-diff.js TAP > a pretty diff at 0 columns 1`] = `
exports[`lib/pretty-diff.test.js TAP > a pretty diff at 0 columns 1`] = `
--- expected 
+++ actual 
 Object { 
Expand All @@ -32,7 +32,7 @@ exports[`test/pretty-diff.js TAP > a pretty diff at 0 columns 1`] = `
 } 
`

exports[`test/pretty-diff.js TAP > a pretty diff without ansi support 1`] = `
exports[`lib/pretty-diff.test.js TAP > a pretty diff without ansi support 1`] = `
--- expected 
+++ actual 
 Object { 
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Make sure to inspect the output below. Do not ignore changes!
*/
'use strict'
exports[`test/pretty-source.js TAP highlight a file > with the caret 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > with the caret 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  2 | const line1 = 'line 1' 
  3 | const line2 = 'line 2' 
Expand All @@ -17,7 +17,7 @@ exports[`test/pretty-source.js TAP highlight a file > with the caret 1`] = `
`

exports[`test/pretty-source.js TAP highlight a file > no caret 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > no caret 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  2 | const line1 = 'line 1' 
  3 | const line2 = 'line 2' 
Expand All @@ -28,15 +28,15 @@ exports[`test/pretty-source.js TAP highlight a file > no caret 1`] = `
`

exports[`test/pretty-source.js TAP highlight a file > last line, no caret 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > last line, no caret 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  8 | const line7 = 'line 7' 
  9 | const line8 = 'line 8' 
> 10 | const line9 = 'line 9' 
`

exports[`test/pretty-source.js TAP highlight a file > last line, with caret 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > last line, with caret 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  8 | const line7 = 'line 7' 
  9 | const line8 = 'line 8' 
Expand All @@ -45,7 +45,7 @@ exports[`test/pretty-source.js TAP highlight a file > last line, with caret 1`]
`

exports[`test/pretty-source.js TAP highlight a file > caret way too far off the line 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > caret way too far off the line 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  1 | const line0 = 'line 0' 
> 2 | const line1 = 'line 1' 
Expand All @@ -55,7 +55,7 @@ exports[`test/pretty-source.js TAP highlight a file > caret way too far off the
`

exports[`test/pretty-source.js TAP highlight a file > slightly less colorful 1`] = `
exports[`lib/pretty-source.test.js TAP highlight a file > slightly less colorful 1`] = `
 /Users/isaacs/dev/js/treport/delete-me.js 
  2 | const line1 = 'line 1' 
  3 | const line2 = 'line 2' 
Expand Down
Loading

0 comments on commit f726bb8

Please sign in to comment.