Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ Checks: "
readability-*,
modernize-*,
performance-*,
misc-include-cleaner,
-google-readability-todo,
-readability-convert-member-functions-to-static,
-readability-function-cognitive-complexity,
Expand Down
2 changes: 1 addition & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 5 additions & 6 deletions providers/flagd/src/provider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <string_view>
#include <utility>

Expand Down Expand Up @@ -80,7 +79,7 @@ absl::Status FlagdProvider::Shutdown() {
return status;
}

std::unique_ptr<openfeature::BoolResolutionDetails>
absl::StatusOr<std::unique_ptr<openfeature::BoolResolutionDetails>>
FlagdProvider::GetBooleanEvaluation(const std::string_view flag,
bool default_value,
const openfeature::EvaluationContext& ctx) {
Expand All @@ -93,7 +92,7 @@ FlagdProvider::GetBooleanEvaluation(const std::string_view flag,
return evaluator_->ResolveBoolean(flag, default_value, ctx);
}

std::unique_ptr<openfeature::StringResolutionDetails>
absl::StatusOr<std::unique_ptr<openfeature::StringResolutionDetails>>
FlagdProvider::GetStringEvaluation(const std::string_view flag,
std::string_view default_value,
const openfeature::EvaluationContext& ctx) {
Expand All @@ -106,7 +105,7 @@ FlagdProvider::GetStringEvaluation(const std::string_view flag,
return evaluator_->ResolveString(flag, default_value, ctx);
}

std::unique_ptr<openfeature::IntResolutionDetails>
absl::StatusOr<std::unique_ptr<openfeature::IntResolutionDetails>>
FlagdProvider::GetIntegerEvaluation(const std::string_view flag,
int64_t default_value,
const openfeature::EvaluationContext& ctx) {
Expand All @@ -119,7 +118,7 @@ FlagdProvider::GetIntegerEvaluation(const std::string_view flag,
return evaluator_->ResolveInteger(flag, default_value, ctx);
}

std::unique_ptr<openfeature::DoubleResolutionDetails>
absl::StatusOr<std::unique_ptr<openfeature::DoubleResolutionDetails>>
FlagdProvider::GetDoubleEvaluation(const std::string_view flag,
double default_value,
const openfeature::EvaluationContext& ctx) {
Expand All @@ -132,7 +131,7 @@ FlagdProvider::GetDoubleEvaluation(const std::string_view flag,
return evaluator_->ResolveDouble(flag, default_value, ctx);
}

std::unique_ptr<openfeature::ObjectResolutionDetails>
absl::StatusOr<std::unique_ptr<openfeature::ObjectResolutionDetails>>
FlagdProvider::GetObjectEvaluation(
const std::string_view flag,
openfeature::Value
Expand Down
31 changes: 16 additions & 15 deletions providers/flagd/src/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <memory>

#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "flagd/configuration.h"
#include "flagd/evaluator/evaluator.h"
#include "flagd/sync/sync.h"
Expand All @@ -29,25 +30,25 @@ class FlagdProvider : public openfeature::FeatureProvider {
absl::Status Init(const openfeature::EvaluationContext& ctx) override;
absl::Status Shutdown() override;

std::unique_ptr<openfeature::BoolResolutionDetails> GetBooleanEvaluation(
std::string_view flag, bool default_value,
const openfeature::EvaluationContext& ctx) override;
absl::StatusOr<std::unique_ptr<openfeature::BoolResolutionDetails>>
GetBooleanEvaluation(std::string_view flag, bool default_value,
const openfeature::EvaluationContext& ctx) override;

std::unique_ptr<openfeature::StringResolutionDetails> GetStringEvaluation(
std::string_view flag, std::string_view default_value,
const openfeature::EvaluationContext& ctx) override;
absl::StatusOr<std::unique_ptr<openfeature::StringResolutionDetails>>
GetStringEvaluation(std::string_view flag, std::string_view default_value,
const openfeature::EvaluationContext& ctx) override;

std::unique_ptr<openfeature::IntResolutionDetails> GetIntegerEvaluation(
std::string_view flag, int64_t default_value,
const openfeature::EvaluationContext& ctx) override;
absl::StatusOr<std::unique_ptr<openfeature::IntResolutionDetails>>
GetIntegerEvaluation(std::string_view flag, int64_t default_value,
const openfeature::EvaluationContext& ctx) override;

std::unique_ptr<openfeature::DoubleResolutionDetails> GetDoubleEvaluation(
std::string_view flag, double default_value,
const openfeature::EvaluationContext& ctx) override;
absl::StatusOr<std::unique_ptr<openfeature::DoubleResolutionDetails>>
GetDoubleEvaluation(std::string_view flag, double default_value,
const openfeature::EvaluationContext& ctx) override;

std::unique_ptr<openfeature::ObjectResolutionDetails> GetObjectEvaluation(
std::string_view flag, openfeature::Value default_value,
const openfeature::EvaluationContext& ctx) override;
absl::StatusOr<std::unique_ptr<openfeature::ObjectResolutionDetails>>
GetObjectEvaluation(std::string_view flag, openfeature::Value default_value,
const openfeature::EvaluationContext& ctx) override;

private:
FlagdProviderConfig configuration_;
Expand Down
1 change: 1 addition & 0 deletions providers/flagd/tests/.clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ InheritParentConfig: true
Checks: "
-readability-magic-numbers,
-readability-implicit-bool-conversion,
-misc-include-cleaner,
"
47 changes: 23 additions & 24 deletions providers/flagd/tests/provider_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,13 @@ TEST(ProviderTest, ReturnsNotReadyBeforeInit) {

FlagdProvider provider(mock_sync, std::move(mock_evaluator));

std::unique_ptr<openfeature::BoolResolutionDetails> 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) {
Expand All @@ -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<openfeature::BoolResolutionDetails> 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) {
Expand All @@ -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<openfeature::BoolResolutionDetails> 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) {
Expand All @@ -138,13 +137,13 @@ TEST(ProviderTest, ShutdownMakesProviderNotReady) {
(void)provider.Init(openfeature::EvaluationContext::Builder().build());
(void)provider.Shutdown();

std::unique_ptr<openfeature::BoolResolutionDetails> 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