forked from motdotla/dotenv
/
test-env-options.js
56 lines (41 loc) · 1.4 KB
/
test-env-options.js
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
/* @flow */
const t = require('tap')
const decache = require('decache')
// warm cache
require('../lib/env-options')
// preserve existing env
const e = process.env.DOTENV_CONFIG_ENCODING
const p = process.env.DOTENV_CONFIG_PATH
const d = process.env.DOTENV_CONFIG_DEBUG
const m = process.env.DOTENV_CONFIG_MULTILINE
// get fresh object for each test
function options () {
decache('../lib/env-options.js')
return require('../lib/env-options')
}
function testOption (envVar, tmpVal, expect) {
delete process.env[envVar]
process.env[envVar] = tmpVal
t.same(options(), expect)
delete process.env[envVar]
}
t.plan(5)
// returns empty object when no options set in process.env
delete process.env.DOTENV_CONFIG_ENCODING
delete process.env.DOTENV_CONFIG_PATH
delete process.env.DOTENV_CONFIG_DEBUG
delete process.env.DOTENV_CONFIG_MULTILINE
t.same(options(), {})
// sets encoding option
testOption('DOTENV_CONFIG_ENCODING', 'latin1', { encoding: 'latin1' })
// sets path option
testOption('DOTENV_CONFIG_PATH', '~/.env.test', { path: '~/.env.test' })
// sets debug option
testOption('DOTENV_CONFIG_DEBUG', 'true', { debug: 'true' })
// sets multiline option
testOption('DOTENV_CONFIG_MULTILINE', 'line-breaks', { multiline: 'line-breaks' })
// restore existing env
process.env.DOTENV_CONFIG_ENCODING = e
process.env.DOTENV_CONFIG_PATH = p
process.env.DOTENV_CONFIG_DEBUG = d
process.env.DOTENV_CONFIG_MULTILINE = m