From 6e8d776c371b9bf9d2fb5eaead848c49e6ae1ef2 Mon Sep 17 00:00:00 2001 From: Marcin Olko Date: Tue, 14 Jul 2026 15:00:18 +0000 Subject: [PATCH 1/4] Updated the cpp-sdk library to v0.1.2 Signed-off-by: Marcin Olko --- MODULE.bazel | 2 +- providers/flagd/src/provider.cpp | 11 +++--- providers/flagd/src/provider.h | 31 ++++++++-------- providers/flagd/tests/provider_test.cpp | 47 ++++++++++++------------- 4 files changed, 46 insertions(+), 45 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index dd67ad4..203a67d 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..61c9a19 100644 --- a/providers/flagd/src/provider.cpp +++ b/providers/flagd/src/provider.cpp @@ -9,6 +9,7 @@ #include "absl/log/log.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "flagd/configuration.h" #include "flagd/evaluator/evaluator.h" #include "flagd/sync/grpc/grpc_sync.h" @@ -80,7 +81,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 +94,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 +107,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 +120,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 +133,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/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 From 7f90efd307229fa7c0cc66b74018a9395fbaa077 Mon Sep 17 00:00:00 2001 From: Marcin Olko Date: Thu, 16 Jul 2026 08:52:56 +0000 Subject: [PATCH 2/4] Disabled one clang-tidy check for tests Signed-off-by: Marcin Olko --- providers/flagd/tests/.clang-tidy | 1 + 1 file changed, 1 insertion(+) 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, " From 7e0916ed768b4766c4cd8f5c557d0bc027277558 Mon Sep 17 00:00:00 2001 From: Marcin Olko Date: Thu, 16 Jul 2026 09:30:35 +0000 Subject: [PATCH 3/4] Fixed include-cleaner lint in provider.cpp Signed-off-by: Marcin Olko --- providers/flagd/src/provider.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/providers/flagd/src/provider.cpp b/providers/flagd/src/provider.cpp index 61c9a19..320a6ea 100644 --- a/providers/flagd/src/provider.cpp +++ b/providers/flagd/src/provider.cpp @@ -3,13 +3,11 @@ #include #include #include -#include #include #include #include "absl/log/log.h" #include "absl/status/status.h" -#include "absl/status/statusor.h" #include "flagd/configuration.h" #include "flagd/evaluator/evaluator.h" #include "flagd/sync/grpc/grpc_sync.h" From 522633fefc9990925fddfe967c8403a314beaaa2 Mon Sep 17 00:00:00 2001 From: Marcin Olko Date: Thu, 16 Jul 2026 09:55:53 +0000 Subject: [PATCH 4/4] Trying to fix linter Signed-off-by: Marcin Olko --- .github/workflows/ci-format-test-lint.yml | 2 +- providers/flagd/src/provider.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-format-test-lint.yml b/.github/workflows/ci-format-test-lint.yml index 5a363fd..ddcd4f6 100644 --- a/.github/workflows/ci-format-test-lint.yml +++ b/.github/workflows/ci-format-test-lint.yml @@ -54,7 +54,7 @@ jobs: tidy-checks: "" # Use .clang-tidy config file. database: "compile_commands.json" version: "21" - extra-args: "--system-headers -fdiagnostics-absolute-paths" + extra-args: "-fdiagnostics-absolute-paths" - name: Fail fast?! if: steps.linter.outputs.checks-failed > 0 diff --git a/providers/flagd/src/provider.cpp b/providers/flagd/src/provider.cpp index 320a6ea..61c9a19 100644 --- a/providers/flagd/src/provider.cpp +++ b/providers/flagd/src/provider.cpp @@ -3,11 +3,13 @@ #include #include #include +#include #include #include #include "absl/log/log.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "flagd/configuration.h" #include "flagd/evaluator/evaluator.h" #include "flagd/sync/grpc/grpc_sync.h"