aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-03-27 03:16:33 +0900
committerOphestra <cat@gensokyo.uk>2025-03-27 03:16:33 +0900
commitf8502c3ece1ff53b244326e341b166174f7f5d79 (patch)
tree896aa5ce7a03b3cd0a128da9e9414166c6184e60 /test
parent996b42634dba83a488d0ac67eac954c0b5582c71 (diff)
test/sandbox: check environment
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'test')
-rw-r--r--test/sandbox/assert.go31
-rw-r--r--test/sandbox/case/mapuid.nix13
-rw-r--r--test/sandbox/case/preset.nix13
-rw-r--r--test/sandbox/case/tty.nix13
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;