aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/validate/validate_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/validate/validate_test.go')
-rw-r--r--internal/validate/validate_test.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/internal/validate/validate_test.go b/internal/validate/validate_test.go
new file mode 100644
index 00000000..338e5693
--- /dev/null
+++ b/internal/validate/validate_test.go
@@ -0,0 +1,90 @@
+package validate_test
+
+import (
+ "testing"
+
+ "hakurei.app/internal/validate"
+)
+
+func TestDeepContainsH(t *testing.T) {
+ t.Parallel()
+
+ testCases := []struct {
+ name string
+ basepath string
+ targpath string
+ want bool
+ wantErr bool
+ }{
+ {
+ name: "empty",
+ want: true,
+ },
+ {
+ name: "equal abs",
+ basepath: "/run",
+ targpath: "/run",
+ want: true,
+ },
+ {
+ name: "equal rel",
+ basepath: "./run",
+ targpath: "run",
+ want: true,
+ },
+ {
+ name: "contains abs",
+ basepath: "/run",
+ targpath: "/run/dbus",
+ want: true,
+ },
+ {
+ name: "inverse contains abs",
+ basepath: "/run/dbus",
+ targpath: "/run",
+ want: false,
+ },
+ {
+ name: "contains rel",
+ basepath: "../run",
+ targpath: "../run/dbus",
+ want: true,
+ },
+ {
+ name: "inverse contains rel",
+ basepath: "../run/dbus",
+ targpath: "../run",
+ want: false,
+ },
+ {
+ name: "weird abs",
+ basepath: "/run/dbus",
+ targpath: "/run/dbus/../current-system",
+ want: false,
+ },
+ {
+ name: "weird rel",
+ basepath: "../run/dbus",
+ targpath: "../run/dbus/../current-system",
+ want: false,
+ },
+
+ {
+ name: "invalid mix",
+ basepath: "/run",
+ targpath: "./run",
+ wantErr: true,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ t.Parallel()
+ if got, err := validate.DeepContainsH(tc.basepath, tc.targpath); (err != nil) != tc.wantErr {
+ t.Errorf("DeepContainsH: error = %v, wantErr %v", err, tc.wantErr)
+ } else if got != tc.want {
+ t.Errorf("DeepContainsH: = %v, want %v", got, tc.want)
+ }
+ })
+ }
+}