UNPKG

dotenv-parser-serializer

Version:
177 lines (127 loc) 3.48 kB
'use strict'; var _parse = require('./parse'); var _parse2 = _interopRequireDefault(_parse); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const r = String.raw; describe('parse', () => { it('Supports simple key=value expressions', () => { expect((0, _parse2.default)(`MY_KEY=value`)).toEqual({ MY_KEY: 'value' }); }); it('Supports multiple key=value expressions', () => { expect((0, _parse2.default)(`MY_KEY=value\nMY_KEY2=12`)).toEqual({ MY_KEY: 'value', MY_KEY2: '12' }); }); it('Ignores whitespace and comments', () => { expect((0, _parse2.default)(` # This is my first value, very important MY_KEY=value # another key KEY2=test `)).toEqual({ MY_KEY: 'value', KEY2: 'test' }); }); it('Allows extracting comments', () => { expect((0, _parse2.default)(` # This is my first value, very important MY_KEY=value # this is a multiline # comment KEY2=test THIRD=abc `, { extractDescriptions: true })).toEqual({ MY_KEY: { value: 'value', description: 'This is my first value, very important' }, KEY2: { value: 'test', description: 'this is a multiline\ncomment' }, THIRD: { value: 'abc', description: null } }); }); it('Supports quoted strings', () => { expect((0, _parse2.default)(`MY_KEY="value"`)).toEqual({ MY_KEY: 'value' }); }); it('Supports empty values', () => { expect((0, _parse2.default)(`MY_KEY=`)).toEqual({ MY_KEY: '' }); expect((0, _parse2.default)(`MY_KEY=""`)).toEqual({ MY_KEY: '' }); }); it('Supports quotes inside unquoted strings', () => { expect((0, _parse2.default)(`MY_KEY=this "quote"`)).toEqual({ MY_KEY: 'this "quote"' }); }); it('Supports multiline values', () => { const value = ` a multiline! value `; expect((0, _parse2.default)(`MY_KEY="${value}"`)).toEqual({ MY_KEY: value }); }); it(r`Supports \n inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\nnewline"`)).toEqual({ MY_KEY: '\nnewline' }); // expect(parse(r`MY_KEY=\nnewline`)).toEqual({ // MY_KEY: '\nnewline', // }); }); it(r`Supports \t inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\t"`)).toEqual({ MY_KEY: '\t' }); // expect(parse(r`MY_KEY=\t`)).toEqual({ // MY_KEY: '\t', // }); }); it(r`Supports \b inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\b"`)).toEqual({ MY_KEY: '\b' }); // expect(parse(r`MY_KEY=\b`)).toEqual({ // MY_KEY: '\b', // }); }); it(r`Supports \r inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\r"`)).toEqual({ MY_KEY: '\r' }); // expect(parse(r`MY_KEY=\r`)).toEqual({ // MY_KEY: '\r', // }); }); it(r`Supports \" inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\""`)).toEqual({ MY_KEY: '"' }); }); it(r`Supports \f inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\f"`)).toEqual({ MY_KEY: '\f' }); }); it(r`Supports \\ inside strings`, () => { expect((0, _parse2.default)(r`MY_KEY="\\backslash"`)).toEqual({ MY_KEY: '\\backslash' }); }); });