diff --git a/core-tests/shared/src/test/scala/zio/ConfigProviderSpec.scala b/core-tests/shared/src/test/scala/zio/ConfigProviderSpec.scala index a686d5c2c7d5..805fed1ce177 100644 --- a/core-tests/shared/src/test/scala/zio/ConfigProviderSpec.scala +++ b/core-tests/shared/src/test/scala/zio/ConfigProviderSpec.scala @@ -184,6 +184,11 @@ object ConfigProviderSpec extends ZIOBaseSpec { for { exit <- provider(Map("k1.k3" -> "v")).load(Config.string("k2").nested("k1")).exit } yield assert(exit)(Assertion.failsWithA[Config.Error]) + } + + test("accessing a constant value succeeds") { + for { + value <- provider(Map()).load(Config.succeed("value")) + } yield assertTrue(value == "value") } ) + suite("props")( test("flat atoms") { @@ -283,6 +288,12 @@ object ConfigProviderSpec extends ZIOBaseSpec { ) ) ) + }, + test("succeed for constant value") { + for { + provider <- propsProvider(Map()) + result <- provider.load(Config.succeed("value")) + } yield assertTrue(result == "value") } ) } diff --git a/core/shared/src/main/scala/zio/ConfigProvider.scala b/core/shared/src/main/scala/zio/ConfigProvider.scala index c12de1279ff5..5756dda634c6 100644 --- a/core/shared/src/main/scala/zio/ConfigProvider.scala +++ b/core/shared/src/main/scala/zio/ConfigProvider.scala @@ -260,6 +260,12 @@ object ConfigProvider { } } yield result + case Constant(value) => + ZIO.succeed(Chunk(value)) + + case Fail(message) => + ZIO.fail(Config.Error.MissingData(prefix, message)) + case primitive: Primitive[A] => for { vs <- flat.load(prefix, primitive).catchSome {