From 179f40292f64debb6b3ea2fe5e950f62f5a05a18 Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Mon, 16 Sep 2024 14:29:26 +0200 Subject: pkg/validator: target value is not empty by default The consistency make the code more predictable. We want all the values to be non-empty. If "empty" is an option - use validator.AnyOk(validator.EmptyStr(target), otherCheck(target)). --- pkg/covermerger/bq_csv_reader.go | 2 +- pkg/validator/validator.go | 3 +++ pkg/validator/validator_test.go | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'pkg') diff --git a/pkg/covermerger/bq_csv_reader.go b/pkg/covermerger/bq_csv_reader.go index 60f6e5829..187da1812 100644 --- a/pkg/covermerger/bq_csv_reader.go +++ b/pkg/covermerger/bq_csv_reader.go @@ -34,7 +34,7 @@ func MakeBQCSVReader() *bqCSVReader { func (r *bqCSVReader) InitNsRecords(ctx context.Context, ns, filePath, commit string, from, to civil.Date) error { if err := validator.AnyError("input validation failed", validator.NamespaceName(ns), - validator.KernelFilePath(filePath), + validator.AnyOk(validator.EmptyStr(filePath), validator.KernelFilePath(filePath)), validator.AnyOk(validator.EmptyStr(commit), validator.CommitHash(commit)), ); err != nil { return err diff --git a/pkg/validator/validator.go b/pkg/validator/validator.go index 723cf2384..d4192f7b6 100644 --- a/pkg/validator/validator.go +++ b/pkg/validator/validator.go @@ -66,6 +66,9 @@ type strValidationFunc func(string, ...string) Result func makeStrReFunc(errStr, reStr string) strValidationFunc { matchRe := regexp.MustCompile(reStr) return func(s string, objName ...string) Result { + if s == "" { + return Result{false, wrapError(errStr + ": can't be empty")} + } if !matchRe.MatchString(s) { return Result{false, wrapError(errStr, objName...)} } diff --git a/pkg/validator/validator_test.go b/pkg/validator/validator_test.go index ef04d9cde..6397081e4 100644 --- a/pkg/validator/validator_test.go +++ b/pkg/validator/validator_test.go @@ -24,6 +24,7 @@ func TestIsCommitHash(t *testing.T) { validator.CommitHash("!311c1b497e51a628aa89e7cb954481e5f9dced2", "valName").Err.Error()) } +// nolint: dupl func TestIsNamespaceName(t *testing.T) { assert.True(t, validator.NamespaceName("upstream").Ok) assert.False(t, validator.NamespaceName("up").Ok) @@ -58,6 +59,7 @@ func TestIsDashboardClientKey(t *testing.T) { 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.False(t, validator.KernelFilePath("").Ok) assert.Equal(t, "not a kernel file path", validator.KernelFilePath("io-uring").Err.Error()) assert.Equal(t, "kernelPath: not a kernel file path", -- cgit mrf-deployment