-
Notifications
You must be signed in to change notification settings - Fork 97
Expand file tree
/
Copy pathenvironment.unit.test.ts
More file actions
103 lines (77 loc) · 3.56 KB
/
environment.unit.test.ts
File metadata and controls
103 lines (77 loc) · 3.56 KB
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
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
'use strict';
import { expect } from 'chai';
import { parseEnvFile } from '../../../extension/common/variables/environment';
suite('Environment File Parsing Tests', () => {
test('Should parse simple environment variables', () => {
const content = 'VAR1=value1\nVAR2=value2';
const result = parseEnvFile(content);
// eslint-disable-next-line @typescript-eslint/naming-convention
expect(result).to.deep.equal({
VAR1: 'value1',
VAR2: 'value2',
});
});
test('Should parse single-quoted multiline values', () => {
const content = "EXAMPLE_VAR='very long value\nwith new line , we need to get all the lines'";
const result = parseEnvFile(content);
expect(result.EXAMPLE_VAR).to.equal('very long value\nwith new line , we need to get all the lines');
});
test('Should parse double-quoted multiline values', () => {
const content = 'EXAMPLE_VAR="very long value\nwith new line , we need to get all the lines"';
const result = parseEnvFile(content);
expect(result.EXAMPLE_VAR).to.equal('very long value\nwith new line , we need to get all the lines');
});
test('Should parse escaped newlines in single-quoted values', () => {
const content = "VAR='line1\\nline2'";
const result = parseEnvFile(content);
expect(result.VAR).to.equal('line1\nline2');
});
test('Should parse escaped newlines in double-quoted values', () => {
const content = 'VAR="line1\\nline2"';
const result = parseEnvFile(content);
expect(result.VAR).to.equal('line1\nline2');
});
test('Should handle multiple variables with multiline values', () => {
const content = "VAR1='multiline\nvalue1'\nVAR2='multiline\nvalue2'";
const result = parseEnvFile(content);
expect(result.VAR1).to.equal('multiline\nvalue1');
expect(result.VAR2).to.equal('multiline\nvalue2');
});
test('Should handle unquoted values', () => {
const content = 'VAR=value_without_quotes';
const result = parseEnvFile(content);
expect(result.VAR).to.equal('value_without_quotes');
});
test('Should handle empty values', () => {
const content = 'VAR=';
const result = parseEnvFile(content);
expect(result.VAR).to.equal('');
});
test('Should ignore lines without equals sign', () => {
const content = 'VAR1=value1\nInvalid line\nVAR2=value2';
const result = parseEnvFile(content);
// eslint-disable-next-line @typescript-eslint/naming-convention
expect(result).to.deep.equal({
VAR1: 'value1',
VAR2: 'value2',
});
});
test('Should handle multiline value with multiple newlines', () => {
const content = "VAR='line1\nline2\nline3\nline4'";
const result = parseEnvFile(content);
expect(result.VAR).to.equal('line1\nline2\nline3\nline4');
});
test('Should parse environment file as Buffer', () => {
const content = Buffer.from("VAR='multiline\nvalue'");
const result = parseEnvFile(content);
expect(result.VAR).to.equal('multiline\nvalue');
});
test('Should handle whitespace around variable names and equals', () => {
const content = " VAR1 = value1 \n VAR2='multiline\nvalue'";
const result = parseEnvFile(content);
expect(result.VAR1).to.equal('value1');
expect(result.VAR2).to.equal('multiline\nvalue');
});
});