-
-
Notifications
You must be signed in to change notification settings - Fork 68
/
Copy pathparse-args.spec.ts
112 lines (94 loc) · 3.79 KB
/
parse-args.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/* eslint @typescript-eslint/no-non-null-assertion: 0 */
import * as sinon from 'sinon'
import { assert } from 'chai'
import { parseArgs } from '../src/parse-args'
describe('parseArgs', (): void => {
const command = 'command'
const commandArgs = ['cmda1', 'cmda2', '--cmda3', '-4', 'cmda4', '--fallback']
const environments = ['development', 'production']
const rcFilePath = './.env-cmdrc'
const envFilePath = './.env'
let logInfoStub: sinon.SinonStub<any, any>
before((): void => {
logInfoStub = sinon.stub(console, 'info')
})
after((): void => {
sinon.restore()
})
afterEach((): void => {
sinon.resetHistory()
sinon.resetBehavior()
})
it('should parse environment value', (): void => {
const res = parseArgs(['-e', environments[0], command])
assert.exists(res.rc)
assert.sameOrderedMembers(res.rc!.environments, [environments[0]])
})
it('should parse multiple environment values', (): void => {
const res = parseArgs(['-e', environments.join(','), command])
assert.exists(res.rc)
assert.sameOrderedMembers(res.rc!.environments, environments)
})
it('should parse command value', (): void => {
const res = parseArgs(['-e', environments[0], command])
assert.equal(res.command, command)
})
it('should parse multiple command arguments', (): void => {
const res = parseArgs(['-e', environments[0], command, ...commandArgs])
assert.sameOrderedMembers(res.commandArgs, commandArgs)
})
it('should parse multiple command arguments even if they use the same options flags as env-cmd',
(): void => {
const commandFlags = ['-f', './other-file', '--use-shell', '-r']
const res = parseArgs(['-e', environments[0], command, ...commandFlags])
assert.sameOrderedMembers(res.commandArgs, commandFlags)
assert.notOk(res.options!.useShell)
assert.notOk(res.envFile)
}
)
it('should parse override option', (): void => {
const res = parseArgs(['-e', environments[0], '--no-override', command, ...commandArgs])
assert.exists(res.options)
assert.isTrue(res.options!.noOverride)
})
it('should parse use shell option', (): void => {
const res = parseArgs(['-e', environments[0], '--use-shell', command, ...commandArgs])
assert.exists(res.options)
assert.isTrue(res.options!.useShell)
})
it('should parse rc file path', (): void => {
const res = parseArgs(['-e', environments[0], '-r', rcFilePath, command, ...commandArgs])
assert.exists(res.rc)
assert.equal(res.rc!.filePath, rcFilePath)
})
it('should parse env file path', (): void => {
const res = parseArgs(['-f', envFilePath, command, ...commandArgs])
assert.exists(res.envFile)
assert.equal(res.envFile!.filePath, envFilePath)
})
it('should parse fallback option', (): void => {
const res = parseArgs(['-f', envFilePath, '--fallback', command, ...commandArgs])
assert.exists(res.envFile)
assert.isTrue(res.envFile!.fallback)
})
it('should print to console.info if --verbose flag is passed', (): void => {
const res = parseArgs(['-f', envFilePath, '--verbose', command, ...commandArgs])
assert.exists(res.options!.verbose)
assert.equal(logInfoStub.callCount, 1)
})
it('should parse expandEnvs option', (): void => {
const res = parseArgs(['-f', envFilePath, '-x', command, ...commandArgs])
assert.exists(res.envFile)
assert.isTrue(res.options!.expandEnvs)
})
it('should parse recursive option', (): void => {
const res = parseArgs(['-f', envFilePath, '--recursive', command, ...commandArgs])
assert.exists(res.envFile)
assert.isTrue(res.options!.recursive)
})
it('should parse silent option', (): void => {
const res = parseArgs(['-f', envFilePath, '--silent', command, ...commandArgs])
assert.exists(res.envFile)
assert.isTrue(res.options!.silent)
})
})