diff options
Diffstat (limited to 'internal/validate/validate_test.go')
| -rw-r--r-- | internal/validate/validate_test.go | 90 |
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) + } + }) + } +} |
