diff --git a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java index a862bf7e4..86fbb8056 100644 --- a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java +++ b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java @@ -204,6 +204,15 @@ private ProviderEvaluation resolve(Class type, String key, EvaluationC // check variant existence Object value = flag.getVariants().get(resolvedVariant); if (value == null) { + if (resolvedVariant.isEmpty() && flag.getDefaultVariant().isEmpty()) { + return ProviderEvaluation.builder() + .reason(Reason.ERROR.toString()) + .errorCode(ErrorCode.FLAG_NOT_FOUND) + .errorMessage("Flag '" + key + "' has no default variant defined, will use code default") + .flagMetadata(getFlagMetadata(storageQueryResult)) + .build(); + } + String message = String.format("variant %s not found in flag with key %s", resolvedVariant, key); log.debug(message); throw new GeneralError(message); diff --git a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java index a662b4441..3a1c33f03 100644 --- a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java +++ b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java @@ -29,7 +29,7 @@ @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps") @ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory") @IncludeTags("in-process") -@ExcludeTags({"unixsocket", "targetURI", "no-default"}) +@ExcludeTags({"unixsocket", "targetURI"}) @Testcontainers @Isolated public class RunInProcessTest {