diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-03-27 03:16:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-03-27 03:16:33 +0900 |
| commit | f8502c3ece1ff53b244326e341b166174f7f5d79 (patch) | |
| tree | 896aa5ce7a03b3cd0a128da9e9414166c6184e60 /test | |
| parent | 996b42634dba83a488d0ac67eac954c0b5582c71 (diff) | |
test/sandbox: check environment
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'test')
| -rw-r--r-- | test/sandbox/assert.go | 31 | ||||
| -rw-r--r-- | test/sandbox/case/mapuid.nix | 13 | ||||
| -rw-r--r-- | test/sandbox/case/preset.nix | 13 | ||||
| -rw-r--r-- | test/sandbox/case/tty.nix | 13 |
4 files changed, 70 insertions, 0 deletions
diff --git a/test/sandbox/assert.go b/test/sandbox/assert.go index 3cf81ffb..3a34c736 100644 --- a/test/sandbox/assert.go +++ b/test/sandbox/assert.go @@ -23,6 +23,7 @@ func printf(format string, v ...any) { printfFunc(format, v...) } func fatalf(format string, v ...any) { fatalfFunc(format, v...) } type TestCase struct { + Env []string `json:"env"` FS *FS `json:"fs"` Mount []*MountinfoEntry `json:"mount"` Seccomp bool `json:"seccomp"` @@ -44,6 +45,36 @@ func (t *T) MustCheckFile(wantFilePath, markerPath string) { } func (t *T) MustCheck(want *TestCase) { + if want.Env != nil { + var ( + fail bool + i int + got string + ) + for i, got = range os.Environ() { + if i == len(want.Env) { + fatalf("got more than %d environment variables", len(want.Env)) + } + if got != want.Env[i] { + fail = true + printf("[FAIL] %s", got) + } else { + printf("[ OK ] %s", got) + } + } + + i++ + if i != len(want.Env) { + fatalf("got %d environment variables, want %d", i, len(want.Env)) + } + + if fail { + fatalf("[FAIL] some environment variables did not match") + } + } else { + printf("[SKIP] skipping environ check") + } + if want.FS != nil && t.FS != nil { if err := want.FS.Compare(".", t.FS); err != nil { fatalf("%v", err) diff --git a/test/sandbox/case/mapuid.nix b/test/sandbox/case/mapuid.nix index eb042e8c..bf9837d4 100644 --- a/test/sandbox/case/mapuid.nix +++ b/test/sandbox/case/mapuid.nix @@ -9,6 +9,19 @@ mapRealUid = true; want = { + env = [ + "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus" + "HOME=/var/lib/fortify/u0/a3" + "PULSE_SERVER=unix:/run/user/1000/pulse/native" + "SHELL=/run/current-system/sw/bin/bash" + "TERM=linux" + "USER=u0_a3" + "WAYLAND_DISPLAY=wayland-0" + "XDG_RUNTIME_DIR=/run/user/1000" + "XDG_SESSION_CLASS=user" + "XDG_SESSION_TYPE=tty" + ]; + fs = fs "dead" { ".fortify" = fs "800001ed" { etc = fs "800001ed" null null; diff --git a/test/sandbox/case/preset.nix b/test/sandbox/case/preset.nix index b31ec3db..cedd9d79 100644 --- a/test/sandbox/case/preset.nix +++ b/test/sandbox/case/preset.nix @@ -9,6 +9,19 @@ mapRealUid = false; want = { + env = [ + "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus" + "HOME=/var/lib/fortify/u0/a1" + "PULSE_SERVER=unix:/run/user/65534/pulse/native" + "SHELL=/run/current-system/sw/bin/bash" + "TERM=linux" + "USER=u0_a1" + "WAYLAND_DISPLAY=wayland-0" + "XDG_RUNTIME_DIR=/run/user/65534" + "XDG_SESSION_CLASS=user" + "XDG_SESSION_TYPE=tty" + ]; + fs = fs "dead" { ".fortify" = fs "800001ed" { etc = fs "800001ed" null null; diff --git a/test/sandbox/case/tty.nix b/test/sandbox/case/tty.nix index 2a3de556..f295b926 100644 --- a/test/sandbox/case/tty.nix +++ b/test/sandbox/case/tty.nix @@ -9,6 +9,19 @@ mapRealUid = false; want = { + env = [ + "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus" + "HOME=/var/lib/fortify/u0/a2" + "PULSE_SERVER=unix:/run/user/65534/pulse/native" + "SHELL=/run/current-system/sw/bin/bash" + "TERM=linux" + "USER=u0_a2" + "WAYLAND_DISPLAY=wayland-0" + "XDG_RUNTIME_DIR=/run/user/65534" + "XDG_SESSION_CLASS=user" + "XDG_SESSION_TYPE=tty" + ]; + fs = fs "dead" { ".fortify" = fs "800001ed" { etc = fs "800001ed" null null; |
