mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
merge #5266 into opencontainers/runc:main
Kir Kolyshkin (3): runc exec -p: fix adding HOME to nil env tests/int/env.bats: add test for runc exec -p tests/int: amend runc exec --env test LGTMs: rata cyphar
This commit is contained in:
+1
-4
@@ -22,10 +22,7 @@ import (
|
||||
//
|
||||
// Returns the prepared environment.
|
||||
func prepareEnv(env []string, uid int) ([]string, error) {
|
||||
if env == nil {
|
||||
return nil, nil
|
||||
}
|
||||
var homeIsSet bool
|
||||
homeIsSet := false
|
||||
|
||||
// Deduplication code based on dedupEnv from Go 1.22 os/exec.
|
||||
|
||||
|
||||
@@ -21,6 +21,10 @@ func TestPrepareEnv(t *testing.T) {
|
||||
tests := []struct {
|
||||
env, wantEnv []string
|
||||
}{
|
||||
{
|
||||
env: nil,
|
||||
wantEnv: []string{home},
|
||||
},
|
||||
{
|
||||
env: []string{},
|
||||
wantEnv: []string{home},
|
||||
|
||||
@@ -95,3 +95,51 @@ function teardown() {
|
||||
#
|
||||
[ "$(wc -l <<<"$output")" -eq 4 ]
|
||||
}
|
||||
|
||||
# Check that runc exec -p process.json takes env from
|
||||
# process.json only, not from config.json, and that HOME
|
||||
# is always set.
|
||||
@test "env [runc exec -p]" {
|
||||
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
|
||||
[ "$status" -eq 0 ]
|
||||
|
||||
cat <<_EOF_ >process.json
|
||||
{
|
||||
"terminal": false,
|
||||
"args": [
|
||||
"/bin/env"
|
||||
],
|
||||
"cwd": "/",
|
||||
"env": [
|
||||
"FOO=bar"
|
||||
]
|
||||
}
|
||||
_EOF_
|
||||
|
||||
runc exec -p process.json test_busybox
|
||||
[ "$status" -eq 0 ]
|
||||
# Env should have entries from process.json.
|
||||
[[ "$output" == *'FOO=bar'* ]]
|
||||
# ...and HOME set from container's /etc/passwd.
|
||||
[[ "$output" == *'HOME=/root'* ]]
|
||||
# Env should NOT contain entries from config.json.
|
||||
[[ "$output" != *'TERM='* ]]
|
||||
[[ "$output" != *'PATH='* ]]
|
||||
}
|
||||
|
||||
@test "env HOME is set for runc exec -p with no process.env" {
|
||||
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
|
||||
[ "$status" -eq 0 ]
|
||||
|
||||
# "env" is not set.
|
||||
cat <<_EOF_ >process.json
|
||||
{
|
||||
"args": ["/bin/env"],
|
||||
"cwd": "/"
|
||||
}
|
||||
_EOF_
|
||||
runc exec -p process.json test_busybox
|
||||
[ "$status" -eq 0 ]
|
||||
# Env should have HOME set from container's /etc/passwd.
|
||||
[[ "$output" == *'HOME=/root'* ]]
|
||||
}
|
||||
|
||||
@@ -100,8 +100,12 @@ function teardown() {
|
||||
|
||||
runc exec --env RUNC_EXEC_TEST=true test_busybox env
|
||||
[ "$status" -eq 0 ]
|
||||
|
||||
[[ ${output} == *"RUNC_EXEC_TEST=true"* ]]
|
||||
[[ "$output" == *"RUNC_EXEC_TEST=true"* ]]
|
||||
# Env should inherit what's in config.json.
|
||||
[[ "$output" == *'PATH='* ]]
|
||||
[[ "$output" == *'TERM='* ]]
|
||||
# Env should have HOME set from container's /etc/passwd.
|
||||
[[ "$output" == *'HOME='* ]]
|
||||
}
|
||||
|
||||
@test "runc exec --user" {
|
||||
|
||||
Reference in New Issue
Block a user