Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/gitpod-protocol/src/user-env-var.spec.ts
2498 views
1
/**
2
* Copyright (c) 2023 Gitpod GmbH. All rights reserved.
3
* Licensed under the GNU Affero General Public License (AGPL).
4
* See License.AGPL.txt in the project root for license information.
5
*/
6
7
import { suite, test } from "@testdeck/mocha";
8
import * as chai from "chai";
9
10
import { UserEnvVar } from "./protocol";
11
12
const expect = chai.expect;
13
14
@suite
15
class TestUserEnvVar {
16
public before() {}
17
18
@test public testMatchEnvVarPattern() {
19
interface Test {
20
pattern: string;
21
repository: string;
22
result: boolean;
23
}
24
const tests: Test[] = [
25
{
26
pattern: "*/*",
27
repository: "some/repo",
28
result: true,
29
},
30
{
31
pattern: "*/*",
32
repository: "some/nested/repo",
33
result: false,
34
},
35
{
36
pattern: "*/*",
37
repository: "some/nested/deeply/repo",
38
result: false,
39
},
40
{
41
pattern: "some/*",
42
repository: "some/repo",
43
result: true,
44
},
45
{
46
pattern: "some/*",
47
repository: "some/nested/repo",
48
result: false,
49
},
50
{
51
pattern: "some/*",
52
repository: "some/nested/deeply/repo",
53
result: false,
54
},
55
{
56
pattern: "some/**",
57
repository: "some/repo",
58
result: true,
59
},
60
{
61
pattern: "some/**",
62
repository: "some/nested/repo",
63
result: true,
64
},
65
{
66
pattern: "some/**",
67
repository: "some/nested/deeply/repo",
68
result: true,
69
},
70
{
71
pattern: "some/nested/*",
72
repository: "some/repo",
73
result: false,
74
},
75
{
76
pattern: "some/nested/*",
77
repository: "some/nested/repo",
78
result: true,
79
},
80
{
81
pattern: "some/nested/*",
82
repository: "some/nested/deeply/repo",
83
result: false,
84
},
85
{
86
pattern: "some/nested/*",
87
repository: "another/repo",
88
result: false,
89
},
90
{
91
pattern: "some/nested/**",
92
repository: "some/nested/repo",
93
result: true,
94
},
95
{
96
pattern: "some/nested/**",
97
repository: "some/nested/deeply/repo",
98
result: true,
99
},
100
{
101
pattern: "some/nested/**",
102
repository: "another/repo",
103
result: false,
104
},
105
{
106
pattern: "*/repo",
107
repository: "some/repo",
108
result: true,
109
},
110
{
111
pattern: "*/repo",
112
repository: "some/nested/repo",
113
result: false,
114
},
115
{
116
pattern: "*/repo",
117
repository: "some/nested/deeply/repo",
118
result: false,
119
},
120
{
121
pattern: "*/repo",
122
repository: "another/repo",
123
result: true,
124
},
125
{
126
pattern: "*/*/repo",
127
repository: "some/repo",
128
result: false,
129
},
130
{
131
pattern: "*/*/repo",
132
repository: "some/nested/repo",
133
result: true,
134
},
135
{
136
pattern: "*/*/repo",
137
repository: "some/nested/deeply/repo",
138
result: false,
139
},
140
{
141
pattern: "*/*/repo",
142
repository: "another/repo",
143
result: false,
144
},
145
];
146
147
for (const test of tests) {
148
const actual = UserEnvVar.matchEnvVarPattern(test.pattern, test.repository);
149
expect(actual, `'${test.repository}' % '${test.pattern}' -> ${test.result}`).to.eq(test.result);
150
}
151
}
152
}
153
154
module.exports = new TestUserEnvVar();
155
156