@@ -93,13 +93,13 @@ local_setup() {
93
93
assert_line BAR=bar
94
94
}
95
95
96
- @test ' wildcard does only work at the end of the pattern' {
96
+ @test ' wildcard works at the start of the pattern' {
97
97
export LIMA_SHELLENV_BLOCK=" *FOO"
98
98
export FOO=foo
99
99
export BARFOO=barfoo
100
100
run -0 limactl shell --preserve-env " $NAME " printenv
101
- assert_line FOO=foo
102
- assert_line BARFOO=barfoo
101
+ refute_line --regexp ' ^BARFOO= '
102
+ refute_line --regexp ' ^FOO= '
103
103
}
104
104
105
105
@test ' block list can use a , separated list with whitespace ignored' {
@@ -114,16 +114,6 @@ local_setup() {
114
114
assert_line BARBAZ=barbaz
115
115
}
116
116
117
- @test ' allow list overrides block list but blocks everything else' {
118
- export LIMA_SHELLENV_ALLOW=SSH_FOO
119
- export SSH_FOO=ssh_foo
120
- export SSH_BAR=ssh_bar
121
- export BAR=bar
122
- run -0 limactl shell --preserve-env " $NAME " printenv
123
- assert_line SSH_FOO=ssh_foo
124
- refute_line --regexp ' ^SSH_BAR='
125
- refute_line --regexp ' ^BAR='
126
- }
127
117
128
118
@test ' allow list can use a , separated list with whitespace ignored' {
129
119
export LIMA_SHELLENV_ALLOW=" FOO*, , BAR"
@@ -135,16 +125,174 @@ local_setup() {
135
125
assert_line FOO=foo
136
126
assert_line FOOBAR=foobar
137
127
assert_line BAR=bar
138
- refute_line --regexp ' ^ BARBAZ='
128
+ assert_line BARBAZ=barbaz
139
129
}
140
130
141
- @test ' setting both allow list and block list generates a warning' {
142
- export LIMA_SHELLENV_ALLOW=FOO
143
- export LIMA_SHELLENV_BLOCK=BAR
131
+ @test ' wildcard works in the middle of the pattern' {
132
+ export LIMA_SHELLENV_BLOCK=" FOO*BAR"
144
133
export FOO=foo
145
- run -0 --separate-stderr limactl shell --preserve-env " $NAME " printenv FOO
146
- assert_output foo
147
- assert_stderr --regexp ' level=warning msg="Both LIMA_SHELLENV_BLOCK and LIMA_SHELLENV_ALLOW are set'
134
+ export FOOBAR=foobar
135
+ export FOOXYZBAR=fooxyzbar
136
+ export FOOBAZ=foobaz
137
+ export BAZBAR=bazbar
138
+ run -0 limactl shell --preserve-env " $NAME " printenv
139
+ refute_line --regexp ' ^FOOBAR='
140
+ refute_line --regexp ' ^FOOXYZBAR='
141
+ assert_line FOO=foo
142
+ assert_line FOOBAZ=foobaz
143
+ assert_line BAZBAR=bazbar
144
+ }
145
+
146
+ @test ' multiple wildcards work in complex patterns' {
147
+ export LIMA_SHELLENV_BLOCK=" *FOO*BAR*"
148
+ export FOO=foo
149
+ export BAR=bar
150
+ export FOOBAR=foobar
151
+ export XFOOYBARZDOTCOM=xfooybarzdotcom
152
+ export FOOBAZ=foobaz
153
+ export BAZBAR=bazbar
154
+ export UNRELATED=unrelated
155
+ run -0 limactl shell --preserve-env " $NAME " printenv
156
+ refute_line --regexp ' ^FOOBAR='
157
+ refute_line --regexp ' ^XFOOYBARZDOTCOM='
158
+ assert_line FOO=foo
159
+ assert_line BAR=bar
160
+ assert_line FOOBAZ=foobaz
161
+ assert_line BAZBAR=bazbar
162
+ assert_line UNRELATED=unrelated
163
+ }
164
+
165
+ @test ' wildcards at beginning, middle, and end all work together' {
166
+ export LIMA_SHELLENV_BLOCK=" *TEST*,FOO*BAR,*SUFFIX"
167
+ export PREFIX_TEST_VAR=prefix_test_var
168
+ export FOOBAR=foobar
169
+ export FOOXYZBAR=fooxyzbar
170
+ export VAR_SUFFIX=var_suffix
171
+ export NORMAL_VAR=normal_var
172
+ run -0 limactl shell --preserve-env " $NAME " printenv
173
+ refute_line --regexp ' ^PREFIX_TEST_VAR='
174
+ refute_line --regexp ' ^FOOBAR='
175
+ refute_line --regexp ' ^FOOXYZBAR='
176
+ refute_line --regexp ' ^VAR_SUFFIX='
177
+ assert_line NORMAL_VAR=normal_var
178
+ }
179
+
180
+ @test ' complex allow/block interaction with default block list' {
181
+ export LIMA_SHELLENV_ALLOW=" SSH_FOO,CUSTOM*"
182
+ export LIMA_SHELLENV_BLOCK=" +*TOKEN"
183
+ export SSH_FOO=ssh_foo
184
+ export SSH_BAR=ssh_bar
185
+ export CUSTOM_VAR=custom_var
186
+ export MY_TOKEN=my_token
187
+ export NORMAL_VAR=normal_var
188
+ run -0 limactl shell --preserve-env " $NAME " printenv
189
+ assert_line SSH_FOO=ssh_foo
190
+ refute_line --regexp ' ^SSH_BAR='
191
+ assert_line CUSTOM_VAR=custom_var
192
+ refute_line --regexp ' ^MY_TOKEN='
193
+ assert_line NORMAL_VAR=normal_var
194
+ }
195
+
196
+ @test ' allow list with * block list blocks everything not explicitly allowed' {
197
+ export LIMA_SHELLENV_ALLOW=" FOO,BAR*"
198
+ export LIMA_SHELLENV_BLOCK=" *"
199
+ export FOO=foo
200
+ export BAR=bar
201
+ export BARBAZ=barbaz
202
+ export OTHER_VAR=other_var
203
+ run -0 limactl shell --preserve-env " $NAME " printenv
204
+ assert_line FOO=foo
205
+ assert_line BAR=bar
206
+ assert_line BARBAZ=barbaz
207
+ refute_line --regexp ' ^OTHER_VAR='
208
+ }
209
+
210
+ @test ' allow list supports wildcards in all positions' {
211
+ export LIMA_SHELLENV_ALLOW=" *PREFIX,MIDDLE*PATTERN,SUFFIX*"
212
+ export LIMA_SHELLENV_BLOCK=" *"
213
+ export TEST_PREFIX=test_prefix
214
+ export MIDDLE_TEST_PATTERN=middle_test_pattern
215
+ export SUFFIX_TEST=suffix_test
216
+ export OTHER=other
217
+ run -0 limactl shell --preserve-env " $NAME " printenv
218
+ assert_line TEST_PREFIX=test_prefix
219
+ assert_line MIDDLE_TEST_PATTERN=middle_test_pattern
220
+ assert_line SUFFIX_TEST=suffix_test
221
+ refute_line --regexp ' ^OTHER='
222
+ }
223
+
224
+ @test ' invalid characters in patterns cause fatal errors' {
225
+ export LIMA_SHELLENV_BLOCK=" FOO-BAR"
226
+ run ! limactl shell --preserve-env " $NAME " printenv
227
+ assert_output --partial " Invalid LIMA_SHELLENV_BLOCK pattern"
228
+ assert_output --partial " contains invalid character"
229
+ }
230
+
231
+ @test ' allow list with wildcards allows only matching patterns' {
232
+ export LIMA_SHELLENV_ALLOW=" FOO*,BAR"
233
+ export FOO=foo
234
+ export FOOBAR=foobar
235
+ export BAR=bar
236
+ export BARBAZ=barbaz
237
+ export OTHER_VAR=OTHER_VAR
238
+ run -0 limactl shell --preserve-env " $NAME " printenv
239
+ assert_line FOO=foo
240
+ assert_line FOOBAR=foobar
241
+ assert_line BAR=bar
242
+ assert_line BARBAZ=barbaz
243
+ assert_line OTHER_VAR=OTHER_VAR
244
+ }
245
+
246
+ @test ' allow list overrides block list entries but block list still applies to others' {
247
+ export LIMA_SHELLENV_BLOCK=" FOO,*TOKEN"
248
+ export FOO=foo
249
+ export MY_TOKEN=my_token
250
+ export SECRET_TOKEN=secret_token
251
+ export OTHER_VAR=other_var
252
+ run -0 limactl shell --preserve-env " $NAME " printenv
253
+ refute_line --regexp ' ^FOO='
254
+ refute_line --regexp ' ^MY_TOKEN='
255
+ refute_line --regexp ' ^SECRET_TOKEN='
256
+ assert_line OTHER_VAR=other_var
257
+ }
258
+
259
+ @test ' allow/block interaction with default block list' {
260
+ export LIMA_SHELLENV_ALLOW=" SSH_FOO,CUSTOM*"
261
+ export LIMA_SHELLENV_BLOCK=" +*TOKEN"
262
+ export SSH_FOO=ssh_foo
263
+ export SSH_BAR=ssh_bar
264
+ export CUSTOM_VAR=custom_var
265
+ export MY_TOKEN=my_token
266
+ export NORMAL_VAR=normal_var
267
+ run -0 limactl shell --preserve-env " $NAME " printenv
268
+ assert_line SSH_FOO=ssh_foo
269
+ refute_line --regexp ' ^SSH_BAR='
270
+ assert_line CUSTOM_VAR=custom_var
271
+ refute_line --regexp ' ^MY_TOKEN='
272
+ assert_line NORMAL_VAR=normal_var
273
+ }
274
+
275
+ @test ' universal block list blocks everything' {
276
+ export LIMA_SHELLENV_BLOCK=" *"
277
+ export FOO=foo
278
+ export BAR=bar
279
+ export OTHER_VAR=other_var
280
+ run -0 limactl shell --preserve-env " $NAME " printenv
281
+ refute_line --regexp ' ^FOO='
282
+ refute_line --regexp ' ^BAR='
283
+ refute_line --regexp ' ^OTHER_VAR='
284
+ }
285
+
286
+ @test ' universal block list blocks everything but with an allow' {
287
+ export LIMA_SHELLENV_BLOCK=" *"
288
+ export LIMA_SHELLENV_ALLOW=" FOO*"
289
+ export FOO=foo
290
+ export BAR=bar
291
+ export OTHER_VAR=other_var
292
+ run -0 limactl shell --preserve-env " $NAME " printenv
293
+ assert_line FOO=foo
294
+ refute_line --regexp ' ^BAR='
295
+ refute_line --regexp ' ^OTHER_VAR='
148
296
}
149
297
150
298
@test ' limactl info includes the default block list' {
0 commit comments