diff --git a/.clang-tidy b/.clang-tidy index 79ff50a..cb28593 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -3,7 +3,6 @@ Checks: " readability-*, modernize-*, performance-*, - misc-include-cleaner, -google-readability-todo, -readability-convert-member-functions-to-static, -readability-function-cognitive-complexity, diff --git a/MODULE.bazel b/MODULE.bazel index 25e7aa4..7e978b2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,8 +8,8 @@ bazel_dep(name = "abseil-cpp", version = "20250814.2") bazel_dep(name = "openfeature_cpp_sdk") git_override( module_name = "openfeature_cpp_sdk", - branch = "main", remote = "https://github.com/open-feature/cpp-sdk.git", + tag = "v0.1.2", ) # Hedron's Compile Commands Extractor for Bazel diff --git a/providers/flagd/src/provider.cpp b/providers/flagd/src/provider.cpp index 31ea15f..320a6ea 100644 --- a/providers/flagd/src/provider.cpp +++ b/providers/flagd/src/provider.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include @@ -80,7 +79,7 @@ absl::Status FlagdProvider::Shutdown() { return status; } -std::unique_ptr +absl::StatusOr> FlagdProvider::GetBooleanEvaluation(const std::string_view flag, bool default_value, const openfeature::EvaluationContext& ctx) { @@ -93,7 +92,7 @@ FlagdProvider::GetBooleanEvaluation(const std::string_view flag, return evaluator_->ResolveBoolean(flag, default_value, ctx); } -std::unique_ptr +absl::StatusOr> FlagdProvider::GetStringEvaluation(const std::string_view flag, std::string_view default_value, const openfeature::EvaluationContext& ctx) { @@ -106,7 +105,7 @@ FlagdProvider::GetStringEvaluation(const std::string_view flag, return evaluator_->ResolveString(flag, default_value, ctx); } -std::unique_ptr +absl::StatusOr> FlagdProvider::GetIntegerEvaluation(const std::string_view flag, int64_t default_value, const openfeature::EvaluationContext& ctx) { @@ -119,7 +118,7 @@ FlagdProvider::GetIntegerEvaluation(const std::string_view flag, return evaluator_->ResolveInteger(flag, default_value, ctx); } -std::unique_ptr +absl::StatusOr> FlagdProvider::GetDoubleEvaluation(const std::string_view flag, double default_value, const openfeature::EvaluationContext& ctx) { @@ -132,7 +131,7 @@ FlagdProvider::GetDoubleEvaluation(const std::string_view flag, return evaluator_->ResolveDouble(flag, default_value, ctx); } -std::unique_ptr +absl::StatusOr> FlagdProvider::GetObjectEvaluation( const std::string_view flag, openfeature::Value diff --git a/providers/flagd/src/provider.h b/providers/flagd/src/provider.h index 7c85b9e..9841221 100644 --- a/providers/flagd/src/provider.h +++ b/providers/flagd/src/provider.h @@ -7,6 +7,7 @@ #include #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "flagd/configuration.h" #include "flagd/evaluator/evaluator.h" #include "flagd/sync/sync.h" @@ -29,25 +30,25 @@ class FlagdProvider : public openfeature::FeatureProvider { absl::Status Init(const openfeature::EvaluationContext& ctx) override; absl::Status Shutdown() override; - std::unique_ptr GetBooleanEvaluation( - std::string_view flag, bool default_value, - const openfeature::EvaluationContext& ctx) override; + absl::StatusOr> + GetBooleanEvaluation(std::string_view flag, bool default_value, + const openfeature::EvaluationContext& ctx) override; - std::unique_ptr GetStringEvaluation( - std::string_view flag, std::string_view default_value, - const openfeature::EvaluationContext& ctx) override; + absl::StatusOr> + GetStringEvaluation(std::string_view flag, std::string_view default_value, + const openfeature::EvaluationContext& ctx) override; - std::unique_ptr GetIntegerEvaluation( - std::string_view flag, int64_t default_value, - const openfeature::EvaluationContext& ctx) override; + absl::StatusOr> + GetIntegerEvaluation(std::string_view flag, int64_t default_value, + const openfeature::EvaluationContext& ctx) override; - std::unique_ptr GetDoubleEvaluation( - std::string_view flag, double default_value, - const openfeature::EvaluationContext& ctx) override; + absl::StatusOr> + GetDoubleEvaluation(std::string_view flag, double default_value, + const openfeature::EvaluationContext& ctx) override; - std::unique_ptr GetObjectEvaluation( - std::string_view flag, openfeature::Value default_value, - const openfeature::EvaluationContext& ctx) override; + absl::StatusOr> + GetObjectEvaluation(std::string_view flag, openfeature::Value default_value, + const openfeature::EvaluationContext& ctx) override; private: FlagdProviderConfig configuration_; diff --git a/providers/flagd/tests/.clang-tidy b/providers/flagd/tests/.clang-tidy index 08be53c..e430875 100644 --- a/providers/flagd/tests/.clang-tidy +++ b/providers/flagd/tests/.clang-tidy @@ -2,4 +2,5 @@ InheritParentConfig: true Checks: " -readability-magic-numbers, -readability-implicit-bool-conversion, + -misc-include-cleaner, " diff --git a/providers/flagd/tests/provider_test.cpp b/providers/flagd/tests/provider_test.cpp index f99f19c..cdc9309 100644 --- a/providers/flagd/tests/provider_test.cpp +++ b/providers/flagd/tests/provider_test.cpp @@ -61,13 +61,13 @@ TEST(ProviderTest, ReturnsNotReadyBeforeInit) { FlagdProvider provider(mock_sync, std::move(mock_evaluator)); - std::unique_ptr result = - provider.GetBooleanEvaluation( - "some-flag", false, - openfeature::EvaluationContext::Builder().build()); + auto result = provider.GetBooleanEvaluation( + "some-flag", false, openfeature::EvaluationContext::Builder().build()); - EXPECT_EQ(result->GetErrorCode(), openfeature::ErrorCode::kProviderNotReady); - EXPECT_EQ(result->GetReason(), openfeature::Reason::kError); + ASSERT_TRUE(result.ok()); + EXPECT_EQ((*result)->GetErrorCode(), + openfeature::ErrorCode::kProviderNotReady); + EXPECT_EQ((*result)->GetReason(), openfeature::Reason::kError); } TEST(ProviderTest, ReturnsReadyAfterInit) { @@ -87,13 +87,12 @@ TEST(ProviderTest, ReturnsReadyAfterInit) { FlagdProvider provider(mock_sync, std::move(mock_evaluator)); (void)provider.Init(openfeature::EvaluationContext::Builder().build()); - std::unique_ptr result = - provider.GetBooleanEvaluation( - "some-flag", false, - openfeature::EvaluationContext::Builder().build()); + auto result = provider.GetBooleanEvaluation( + "some-flag", false, openfeature::EvaluationContext::Builder().build()); - EXPECT_EQ(result->GetValue(), true); - EXPECT_EQ(result->GetReason(), openfeature::Reason::kStatic); + ASSERT_TRUE(result.ok()); + EXPECT_EQ((*result)->GetValue(), true); + EXPECT_EQ((*result)->GetReason(), openfeature::Reason::kStatic); } TEST(ProviderTest, DelegationWorks) { @@ -118,13 +117,13 @@ TEST(ProviderTest, DelegationWorks) { FlagdProvider provider(mock_sync, std::move(mock_evaluator)); (void)provider.Init(openfeature::EvaluationContext::Builder().build()); - std::unique_ptr result = - provider.GetBooleanEvaluation( - expected_flag, expected_default, - openfeature::EvaluationContext::Builder().build()); + auto result = provider.GetBooleanEvaluation( + expected_flag, expected_default, + openfeature::EvaluationContext::Builder().build()); - EXPECT_EQ(result->GetValue(), expected_default); - EXPECT_EQ(result->GetReason(), openfeature::Reason::kDefault); + ASSERT_TRUE(result.ok()); + EXPECT_EQ((*result)->GetValue(), expected_default); + EXPECT_EQ((*result)->GetReason(), openfeature::Reason::kDefault); } TEST(ProviderTest, ShutdownMakesProviderNotReady) { @@ -138,13 +137,13 @@ TEST(ProviderTest, ShutdownMakesProviderNotReady) { (void)provider.Init(openfeature::EvaluationContext::Builder().build()); (void)provider.Shutdown(); - std::unique_ptr result = - provider.GetBooleanEvaluation( - "some-flag", false, - openfeature::EvaluationContext::Builder().build()); + auto result = provider.GetBooleanEvaluation( + "some-flag", false, openfeature::EvaluationContext::Builder().build()); - EXPECT_EQ(result->GetErrorCode(), openfeature::ErrorCode::kProviderNotReady); - EXPECT_EQ(result->GetReason(), openfeature::Reason::kError); + ASSERT_TRUE(result.ok()); + EXPECT_EQ((*result)->GetErrorCode(), + openfeature::ErrorCode::kProviderNotReady); + EXPECT_EQ((*result)->GetReason(), openfeature::Reason::kError); } } // namespace flagd