Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
lima-vm
GitHub Repository: lima-vm/lima
Path: blob/master/hack/test-preserve-env.sh
1637 views
1
#!/usr/bin/env bash
2
3
# SPDX-FileCopyrightText: Copyright The Lima Authors
4
# SPDX-License-Identifier: Apache-2.0
5
6
set -eu -o pipefail
7
8
scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
# shellcheck source=common.inc.sh
10
source "${scriptdir}/common.inc.sh"
11
12
if [ "$#" -ne 1 ]; then
13
ERROR "Usage: $0 NAME"
14
exit 1
15
fi
16
17
NAME="$1"
18
19
INFO "Testing --preserve-env flag"
20
21
# Environment variable propagation with --preserve-env
22
INFO "=== Environment variable propagation with --preserve-env ==="
23
test_var_name="LIMA_TEST_PRESERVE_ENV_VAR"
24
test_var_value="test-value-${RANDOM}"
25
26
got="$(LIMA_SHELLENV_ALLOW="LIMA_TEST_*" LIMA_TEST_PRESERVE_ENV_VAR="$test_var_value" limactl shell --preserve-env "$NAME" printenv "$test_var_name" 2>/dev/null || echo "NOT_FOUND")"
27
INFO "$test_var_name: expected=${test_var_value}, got=${got}"
28
if [ "$got" != "$test_var_value" ]; then
29
ERROR "Environment variable was not propagated with --preserve-env"
30
exit 1
31
fi
32
33
# Clean up before next test
34
unset LIMA_TEST_PRESERVE_ENV_VAR
35
unset LIMA_SHELLENV_ALLOW
36
37
# Environment variable NOT propagated without --preserve-env
38
INFO "=== Environment variable NOT propagated without --preserve-env ==="
39
got_without_flag="$(LIMA_TEST_PRESERVE_ENV_VAR="$test_var_value" limactl shell "$NAME" printenv "$test_var_name" 2>/dev/null || echo "NOT_FOUND")"
40
INFO "$test_var_name without --preserve-env: got=${got_without_flag}"
41
if [ "$got_without_flag" != "NOT_FOUND" ]; then
42
ERROR "Environment variable was unexpectedly propagated without --preserve-env"
43
exit 1
44
fi
45
46
# Blocked environment variables should not be propagated even with --preserve-env
47
INFO "=== Blocked environment variables are not propagated with --preserve-env ==="
48
blocked_var_name="HOME"
49
fake_home="/tmp/fake-home-${RANDOM}"
50
got_blocked="$(HOME="$fake_home" limactl shell --preserve-env "$NAME" printenv "$blocked_var_name" 2>/dev/null || echo "NOT_FOUND")"
51
INFO "$blocked_var_name: host=${fake_home}, guest=${got_blocked}"
52
if [ "$got_blocked" = "$fake_home" ]; then
53
ERROR "Blocked environment variable $blocked_var_name was propagated"
54
exit 1
55
fi
56
57
# LIMA_SHELLENV_BLOCK functionality
58
INFO "=== LIMA_SHELLENV_BLOCK with custom pattern ==="
59
custom_test_var="LIMA_TEST_CUSTOM_BLOCK"
60
custom_test_value="should-be-blocked"
61
got_custom_blocked="$(LIMA_SHELLENV_BLOCK="+LIMA_TEST_CUSTOM_*" LIMA_TEST_CUSTOM_BLOCK="$custom_test_value" limactl shell --preserve-env "$NAME" printenv "$custom_test_var" 2>/dev/null || echo "NOT_FOUND")"
62
INFO "$custom_test_var with LIMA_SHELLENV_BLOCK: got=${got_custom_blocked}"
63
if [ "$got_custom_blocked" != "NOT_FOUND" ]; then
64
ERROR "Custom blocked environment variable was propagated"
65
exit 1
66
fi
67
68
# Clean up before next test
69
unset LIMA_TEST_CUSTOM_BLOCK 2>/dev/null || true
70
unset LIMA_SHELLENV_BLOCK 2>/dev/null || true
71
72
# LIMA_SHELLENV_ALLOW functionality
73
INFO "=== LIMA_SHELLENV_ALLOW with custom pattern ==="
74
allow_test_var="LIMA_TEST_ALLOW_VAR"
75
allow_test_value="should-be-allowed"
76
got_allowed="$(LIMA_SHELLENV_ALLOW="LIMA_TEST_ALLOW_*" LIMA_TEST_ALLOW_VAR="$allow_test_value" limactl shell --preserve-env "$NAME" printenv "$allow_test_var" 2>/dev/null || echo "NOT_FOUND")"
77
INFO "$allow_test_var with LIMA_SHELLENV_ALLOW: got=${got_allowed}"
78
if [ "$got_allowed" != "$allow_test_value" ]; then
79
ERROR "Allowed environment variable was not propagated"
80
exit 1
81
fi
82
83
# Non-allowed variables are blocked when LIMA_SHELLENV_ALLOW is set
84
INFO "=== Non-allowed variables are blocked when LIMA_SHELLENV_ALLOW is set ==="
85
other_test_var="LIMA_TEST_OTHER_VAR"
86
other_test_value="should-be-blocked"
87
got_other="$(LIMA_SHELLENV_ALLOW="LIMA_TEST_ALLOW_*" LIMA_TEST_OTHER_VAR="$other_test_value" limactl shell --preserve-env "$NAME" printenv "$other_test_var" 2>/dev/null || echo "NOT_FOUND")"
88
INFO "$other_test_var with LIMA_SHELLENV_ALLOW (should be blocked): got=${got_other}"
89
if [ "$got_other" != "NOT_FOUND" ]; then
90
ERROR "Non-allowed environment variable was propagated when LIMA_SHELLENV_ALLOW was set"
91
exit 1
92
fi
93
94
INFO "All --preserve-env tests passed"
95
96