Skip to content

Commit d327873

Browse files
authoredMar 17, 2022
fix: improve renderer logic for --silent and FORCE_COLOR settings
1 parent 34fe319 commit d327873

File tree

4 files changed

+65
-12
lines changed

4 files changed

+65
-12
lines changed
 

‎lib/getRenderer.js

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,28 @@
1-
export const getRenderer = ({ debug, quiet }, env = process.env) => {
1+
const getMainRendererOptions = ({ debug, quiet }, env) => {
22
if (quiet) return { renderer: 'silent' }
33
// Better support for dumb terminals: https://en.wikipedia.org/wiki/Computer_terminal#Dumb_terminals
44
const isDumbTerminal = env.TERM === 'dumb'
55
if (debug || isDumbTerminal || env.NODE_ENV === 'test') return { renderer: 'verbose' }
66
return { renderer: 'update', rendererOptions: { dateFormat: false } }
77
}
8+
9+
const getFallbackRenderer = ({ renderer }, { FORCE_COLOR }) => {
10+
if (renderer === 'silent') {
11+
return 'silent'
12+
}
13+
14+
// If colors are being forced, then also force non-fallback rendering
15+
if (Number(FORCE_COLOR) > 0) {
16+
return renderer
17+
}
18+
19+
return 'verbose'
20+
}
21+
22+
export const getRenderer = (options, env = process.env) => {
23+
const mainRendererOptions = getMainRendererOptions(options, env)
24+
return {
25+
...mainRendererOptions,
26+
nonTTYRenderer: getFallbackRenderer(mainRendererOptions, env),
27+
}
28+
}

‎lib/runAll.js

-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ export const runAll = async (
143143
const listrOptions = {
144144
ctx,
145145
exitOnError: false,
146-
nonTTYRenderer: 'verbose',
147146
registerSignalListeners: false,
148147
...getRenderer({ debug, quiet }),
149148
}

‎test/getRenderer.spec.js

+42-9
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,61 @@
11
import { getRenderer } from '../lib/getRenderer'
22

33
describe('getRenderer', () => {
4-
it('should return silent renderer when quiet', () => {
5-
expect(getRenderer({ quiet: true }, {})).toEqual({ renderer: 'silent' })
4+
it('should return silent renderers when quiet', () => {
5+
expect(getRenderer({ quiet: true }, {})).toEqual({
6+
renderer: 'silent',
7+
nonTTYRenderer: 'silent',
8+
})
69
})
710

8-
it('should return verbose renderer when NODE_ENV=test', () => {
9-
expect(getRenderer({}, { NODE_ENV: 'test' })).toEqual({ renderer: 'verbose' })
11+
it('should return verbose renderers when NODE_ENV=test', () => {
12+
expect(getRenderer({}, { NODE_ENV: 'test' })).toEqual({
13+
renderer: 'verbose',
14+
nonTTYRenderer: 'verbose',
15+
})
1016
})
1117

12-
it('should return test renderer when TERM=dumb', () => {
13-
expect(getRenderer({}, { TERM: 'dumb' })).toEqual({ renderer: 'verbose' })
18+
it('should return test renderers when TERM=dumb', () => {
19+
expect(getRenderer({}, { TERM: 'dumb' })).toEqual({
20+
renderer: 'verbose',
21+
nonTTYRenderer: 'verbose',
22+
})
1423
})
1524

16-
it('should return verbose renderer when debug', () => {
17-
expect(getRenderer({ debug: true }, {})).toEqual({ renderer: 'verbose' })
25+
it('should return verbose renderers when debug', () => {
26+
expect(getRenderer({ debug: true }, {})).toEqual({
27+
renderer: 'verbose',
28+
nonTTYRenderer: 'verbose',
29+
})
1830
})
1931

20-
it('should return update renderer by default', () => {
32+
it('should return update main renderer and verbose fallback renderer by default', () => {
2133
expect(getRenderer({}, {})).toEqual({
2234
renderer: 'update',
2335
rendererOptions: {
2436
dateFormat: false,
2537
},
38+
nonTTYRenderer: 'verbose',
39+
})
40+
})
41+
42+
it('should return update main renderer and verbose fallback renderer when colors are not forced', () => {
43+
expect(getRenderer({}, { FORCE_COLOR: '0' })).toEqual({
44+
renderer: 'update',
45+
rendererOptions: {
46+
dateFormat: false,
47+
},
48+
nonTTYRenderer: 'verbose',
49+
})
50+
})
51+
52+
it('should return update renderers when colors are forced', () => {
53+
expect(getRenderer({}, { FORCE_COLOR: '1' })).toEqual({
54+
renderer: 'update',
55+
rendererOptions: {
56+
dateFormat: false,
57+
},
58+
nonTTYRenderer: 'update',
2659
})
2760
})
2861
})

‎test/index2.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ describe('lintStaged', () => {
4343
"shouldBackup": true,
4444
},
4545
"exitOnError": false,
46-
"nonTTYRenderer": "verbose",
46+
"nonTTYRenderer": "silent",
4747
"registerSignalListeners": false,
4848
"renderer": "silent",
4949
}

0 commit comments

Comments
 (0)
Please sign in to comment.