aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/validator/validator_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/validator/validator_test.go')
-rw-r--r--pkg/validator/validator_test.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/pkg/validator/validator_test.go b/pkg/validator/validator_test.go
new file mode 100644
index 000000000..ef04d9cde
--- /dev/null
+++ b/pkg/validator/validator_test.go
@@ -0,0 +1,85 @@
+// Copyright 2024 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package validator_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/google/syzkaller/pkg/validator"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestIsCommitHash(t *testing.T) {
+ assert.True(t, validator.CommitHash("b311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
+ assert.False(t, validator.CommitHash("").Ok)
+ assert.False(t, validator.CommitHash("b311").Ok)
+ assert.False(t, validator.CommitHash("+311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
+
+ assert.Equal(t, "not a hash: len is not 40", validator.CommitHash("b311").Err.Error())
+ assert.Equal(t, "valName: not a hash: len is not 40",
+ validator.CommitHash("b311", "valName").Err.Error())
+ assert.Equal(t, "valName: not a hash: not an alphanum",
+ validator.CommitHash("!311c1b497e51a628aa89e7cb954481e5f9dced2", "valName").Err.Error())
+}
+
+func TestIsNamespaceName(t *testing.T) {
+ assert.True(t, validator.NamespaceName("upstream").Ok)
+ assert.False(t, validator.NamespaceName("up").Ok)
+ assert.False(t, validator.NamespaceName("").Ok)
+
+ assert.Equal(t, "not a namespace name", validator.NamespaceName("up").Err.Error())
+ assert.Equal(t, "ns: not a namespace name",
+ validator.NamespaceName("up", "ns").Err.Error())
+}
+
+// nolint: dupl
+func TestIsDashboardClientName(t *testing.T) {
+ assert.True(t, validator.DashClientName("name").Ok)
+ assert.False(t, validator.DashClientName("").Ok)
+
+ assert.Equal(t, "not a dashboard client name", validator.DashClientName("cl").Err.Error())
+ assert.Equal(t, "client: not a dashboard client name",
+ validator.DashClientName("cl", "client").Err.Error())
+}
+
+// nolint: dupl
+func TestIsDashboardClientKey(t *testing.T) {
+ assert.True(t, validator.DashClientKey("b311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
+ assert.False(t, validator.DashClientKey("").Ok)
+
+ assert.Equal(t, "not a dashboard client key", validator.DashClientKey("key").Err.Error())
+ assert.Equal(t, "clientKey: not a dashboard client key",
+ validator.DashClientKey("clKey", "clientKey").Err.Error())
+}
+
+// nolint: dupl
+func TestIsKernelFilePath(t *testing.T) {
+ assert.True(t, validator.KernelFilePath("io_uring/advise.c").Ok)
+ assert.False(t, validator.KernelFilePath("io-uring/advise.c").Ok)
+
+ assert.Equal(t, "not a kernel file path", validator.KernelFilePath("io-uring").Err.Error())
+ assert.Equal(t, "kernelPath: not a kernel file path",
+ validator.KernelFilePath("io-uring", "kernelPath").Err.Error())
+}
+
+var badResult = validator.Result{false, errors.New("sample error")}
+
+func TestAnyError(t *testing.T) {
+ assert.Nil(t, validator.AnyError("prefix", validator.ResultOk, validator.ResultOk))
+ assert.Equal(t, "prefix: sample error",
+ validator.AnyError("prefix", validator.ResultOk, badResult).Error())
+}
+
+func TestPanicIfNot(t *testing.T) {
+ assert.NotPanics(t, func() { validator.PanicIfNot(validator.ResultOk, validator.ResultOk) })
+ assert.Panics(t, func() { validator.PanicIfNot(validator.ResultOk, badResult) })
+}
+
+func TestAnyOk(t *testing.T) {
+ assert.Equal(t, validator.ResultOk, validator.AnyOk())
+ assert.Equal(t, validator.ResultOk, validator.AnyOk(validator.ResultOk))
+ assert.Equal(t, badResult, validator.AnyOk(badResult))
+ assert.Equal(t, validator.ResultOk, validator.AnyOk(badResult, validator.ResultOk))
+}