aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/path_test.go
blob: cb4571ef74d4256b85687e071f2fbf6429c6b5c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package internal

import (
	"reflect"
	"testing"

	"hakurei.app/container/check"
)

func TestMustCheckPath(t *testing.T) {
	testCases := []struct {
		name      string
		pathname  string
		wantFatal string
	}{
		{"poison", compPoison, "invalid test path, this program is compiled incorrectly"},
		{"zero", "", "invalid test path, this program is compiled incorrectly"},
		{"not absolute", "\x00", `path "\x00" is not absolute`},
		{"success", "/proc/nonexistent", ""},
	}
	for _, tc := range testCases {
		t.Run(tc.name, func(t *testing.T) {
			fatal := func(v ...any) { t.Fatal(append([]any{"invalid call to fatal:"}, v...)...) }
			if tc.wantFatal != "" {
				fatal = func(v ...any) {
					if len(v) != 1 {
						t.Errorf("mustCheckPath: fatal %#v", v)
					} else if gotFatal, ok := v[0].(string); !ok {
						t.Errorf("mustCheckPath: fatal = %#v", v[0])
					} else if gotFatal != tc.wantFatal {
						t.Errorf("mustCheckPath: fatal = %q, want %q", gotFatal, tc.wantFatal)
					}

					// do not simulate exit
				}
			}

			if got := mustCheckPath(fatal, "test", tc.pathname); got != nil && !reflect.DeepEqual(got, check.MustAbs(tc.pathname)) {
				t.Errorf("mustCheckPath: %q", got)
			}
		})
	}
}