From 40140f9df8cbe571b7eeea06be45257586403379 Mon Sep 17 00:00:00 2001 From: John Chadwick Date: Tue, 28 Jan 2025 15:14:43 -0500 Subject: [PATCH 1/2] Remove deprecated options --- buf/validate/internal/constraint_rules.h | 1 - buf/validate/internal/constraints.h | 1 - buf/validate/internal/field_rules.cc | 2 +- buf/validate/validator.cc | 10 +++------- buf/validate/validator_test.cc | 14 -------------- 5 files changed, 4 insertions(+), 24 deletions(-) diff --git a/buf/validate/internal/constraint_rules.h b/buf/validate/internal/constraint_rules.h index 5dc66c1..05a9a97 100644 --- a/buf/validate/internal/constraint_rules.h +++ b/buf/validate/internal/constraint_rules.h @@ -97,7 +97,6 @@ struct ConstraintContext { std::reverse( violation.proto_.mutable_field()->mutable_elements()->begin(), violation.proto_.mutable_field()->mutable_elements()->end()); - *violation.proto_.mutable_field_path() = internal::fieldPathString(violation.proto().field()); } if (violation.proto().has_rule()) { std::reverse( diff --git a/buf/validate/internal/constraints.h b/buf/validate/internal/constraints.h index ac62279..3398837 100644 --- a/buf/validate/internal/constraints.h +++ b/buf/validate/internal/constraints.h @@ -45,7 +45,6 @@ class FieldConstraintRules : public CelConstraintRules { mapEntryField_(desc->containing_type()->options().map_entry()), ignoreEmpty_(field.ignore() == IGNORE_IF_DEFAULT_VALUE || field.ignore() == IGNORE_IF_UNPOPULATED || - field.ignore_empty() || (desc->has_presence() && !mapEntryField_)), ignoreDefault_(field.ignore() == IGNORE_IF_DEFAULT_VALUE && (desc->has_presence() && !mapEntryField_)), diff --git a/buf/validate/internal/field_rules.cc b/buf/validate/internal/field_rules.cc index 5004c03..7a715a3 100644 --- a/buf/validate/internal/field_rules.cc +++ b/buf/validate/internal/field_rules.cc @@ -25,7 +25,7 @@ absl::StatusOr> NewFieldRules( google::api::expr::runtime::CelExpressionBuilder& builder, const google::protobuf::FieldDescriptor* field, const FieldConstraints& fieldLvl) { - if (fieldLvl.ignore() == IGNORE_ALWAYS || fieldLvl.skipped()) { + if (fieldLvl.ignore() == IGNORE_ALWAYS) { return nullptr; } absl::StatusOr> rules_or; diff --git a/buf/validate/validator.cc b/buf/validate/validator.cc index 654f96b..633f8a2 100644 --- a/buf/validate/validator.cc +++ b/buf/validate/validator.cc @@ -46,13 +46,9 @@ absl::Status Validator::ValidateFields( } if (field->options().HasExtension(validate::field)) { const auto& fieldExt = field->options().GetExtension(validate::field); - if (fieldExt.ignore() == IGNORE_ALWAYS || fieldExt.skipped() || - (fieldExt.has_repeated() && - (fieldExt.repeated().items().ignore() == IGNORE_ALWAYS || - fieldExt.repeated().items().skipped())) || - (fieldExt.has_map() && - (fieldExt.map().values().ignore() == IGNORE_ALWAYS || - fieldExt.map().values().skipped()))) { + if (fieldExt.ignore() == IGNORE_ALWAYS || + (fieldExt.has_repeated() && (fieldExt.repeated().items().ignore() == IGNORE_ALWAYS)) || + (fieldExt.has_map() && (fieldExt.map().values().ignore() == IGNORE_ALWAYS))) { continue; } } diff --git a/buf/validate/validator_test.cc b/buf/validate/validator_test.cc index 2d1ecc4..6f52e2f 100644 --- a/buf/validate/validator_test.cc +++ b/buf/validate/validator_test.cc @@ -79,7 +79,6 @@ TEST(ValidatorTest, ValidateBool) { auto violations_or = validator.Validate(bool_const_false); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); ASSERT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "bool.const"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value must equal false"); } @@ -141,7 +140,6 @@ TEST(ValidatorTest, ValidateRelativeURIFailure) { auto violations_or = validator.Validate(str_uri); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.uri"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value must be a valid URI"); EXPECT_THAT( @@ -202,7 +200,6 @@ TEST(ValidatorTest, ValidateBadURIRefFailure) { auto violations_or = validator.Validate(str_uri_ref); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.uri_ref"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value must be a valid URI"); EXPECT_THAT( @@ -225,7 +222,6 @@ TEST(ValidatorTest, ValidateStrRepeatedUniqueFailure) { auto violations_or = validator.Validate(str_repeated); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "repeated.unique"); EXPECT_EQ( violations_or.value().violations(0).proto().message(), @@ -251,7 +247,6 @@ TEST(ValidatorTest, ValidateStringContainsFailure) { auto violations_or = validator.Validate(str_contains); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.contains"); EXPECT_EQ( violations_or.value().violations(0).proto().message(), "value does not contain substring `bar`"); @@ -281,7 +276,6 @@ TEST(ValidatorTest, ValidateBytesContainsFailure) { auto violations_or = validator.Validate(bytes_contains); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "bytes.contains"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value does not contain 626172"); } @@ -310,7 +304,6 @@ TEST(ValidatorTest, ValidateStartsWithFailure) { auto violations_or = validator.Validate(str_starts_with); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.prefix"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value does not have prefix `foo`"); } @@ -339,7 +332,6 @@ TEST(ValidatorTest, ValidateEndsWithFailure) { auto violations_or = validator.Validate(str_ends_with); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.suffix"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "value does not have suffix `baz`"); } @@ -368,7 +360,6 @@ TEST(ValidatorTest, ValidateGarbageHostnameFailure) { auto violations_or = validator.Validate(str_hostname); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.hostname"); } @@ -383,7 +374,6 @@ TEST(ValidatorTest, ValidateHostnameFailure) { auto violations_or = validator.Validate(str_hostname); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.hostname"); } @@ -398,7 +388,6 @@ TEST(ValidatorTest, ValidateHostnameDoubleDotFailure) { auto violations_or = validator.Validate(str_hostname); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); EXPECT_EQ(violations_or.value().violations_size(), 1); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), "val"); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "string.hostname"); } @@ -426,13 +415,10 @@ TEST(ValidatorTest, MessageConstraint) { auto violations_or = validator.Validate(message_expressions); ASSERT_TRUE(violations_or.ok()) << violations_or.status(); ASSERT_EQ(violations_or.value().violations_size(), 3); - EXPECT_EQ(violations_or.value().violations(0).proto().field_path(), ""); EXPECT_EQ(violations_or.value().violations(0).proto().constraint_id(), "message_expression_scalar"); EXPECT_EQ(violations_or.value().violations(0).proto().message(), "a must be less than b"); - EXPECT_EQ(violations_or.value().violations(1).proto().field_path(), ""); EXPECT_EQ(violations_or.value().violations(1).proto().constraint_id(), "message_expression_enum"); EXPECT_EQ(violations_or.value().violations(1).proto().message(), "c must not equal d"); - EXPECT_EQ(violations_or.value().violations(2).proto().field_path(), "e"); EXPECT_EQ(violations_or.value().violations(2).proto().constraint_id(), "message_expression_nested"); EXPECT_EQ(violations_or.value().violations(2).proto().message(), "a must be greater than b"); } From 41294e30dc4d1fc57c6b1ce0a6114ea0edd23a60 Mon Sep 17 00:00:00 2001 From: John Chadwick Date: Fri, 7 Feb 2025 11:59:33 -0500 Subject: [PATCH 2/2] Update protovalidate version to v0.10.0 --- Makefile | 2 +- bazel/deps.bzl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index c32fb4f..d7eb315 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ COPYRIGHT_YEARS := 2023 LICENSE_IGNORE := -e internal/testdata/ LICENSE_HEADER_VERSION := 0294fdbe1ce8649ebaf5e87e8cdd588e33730bbb # NOTE: Keep this version in sync with the version in `/bazel/deps.bzl`. -PROTOVALIDATE_VERSION ?= v0.9.0 +PROTOVALIDATE_VERSION ?= v0.10.0 # Set to use a different compiler. For example, `GO=go1.18rc1 make test`. GO ?= go diff --git a/bazel/deps.bzl b/bazel/deps.bzl index 756f537..3eacd8f 100644 --- a/bazel/deps.bzl +++ b/bazel/deps.bzl @@ -83,10 +83,10 @@ _dependencies = { }, # NOTE: Keep Version in sync with `/Makefile`. "com_github_bufbuild_protovalidate": { - "sha256": "fca6143d820e9575f3aec328918fa25acc8eeb6e706050127d3a36cfdede4610", - "strip_prefix": "protovalidate-0.9.0", + "sha256": "5879da3a72bcbd48e42f84b1eb0dfb45e3657fb68232b6b7c12c01bb937b659d", + "strip_prefix": "protovalidate-0.10.0", "urls": [ - "https://github.com/bufbuild/protovalidate/archive/v0.9.0.tar.gz", + "https://github.com/bufbuild/protovalidate/archive/v0.10.0.tar.gz", ], }, }