Skip to content

Commit cb263ea

Browse files
authored
Merge pull request #185 from 2m/fix/resolve-2m
2 parents 30f914d + 31d69a8 commit cb263ea

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/main/scala/Hocon.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ object Hocon extends HoconConfigDecoders {
4141
hoconAt(ConfigFactory.load())(path)
4242

4343
def hoconAt(config: Config)(path: String): HoconAt =
44-
new HoconAt(config, path)
44+
new HoconAt(config.resolve(), path)
4545
}
4646

4747
trait HoconConfigDecoders {

src/test/scala/HoconSpec.scala

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import munit.CatsEffectSuite
2323
class HoconSpec extends CatsEffectSuite {
2424
import lt.dvim.ciris.Hocon._
2525

26-
private val config = ConfigFactory.parseString("""
26+
private val config = ConfigFactory.parseString(s"""
2727
|nested {
2828
| config {
2929
| int = 2
@@ -33,30 +33,34 @@ class HoconSpec extends CatsEffectSuite {
3333
| per = 2 weeks
3434
| }
3535
|}
36+
|subst {
37+
| int = $${nested.config.int}
38+
|}
3639
""".stripMargin)
3740

38-
private val hocon = hoconAt(config)("nested.config")
41+
private val nested = hoconAt(config)("nested.config")
42+
private val subst = hoconAt(config)("subst")
3943

4044
test("parse Int") {
41-
hocon("int").as[Int].load[IO] assertEquals 2
45+
nested("int").as[Int].load[IO] assertEquals 2
4246
}
4347
test("parse String") {
44-
hocon("str").as[String].load[IO] assertEquals "labas"
48+
nested("str").as[String].load[IO] assertEquals "labas"
4549
}
4650
test("parse java Duration") {
47-
hocon("dur").as[java.time.Duration].load[IO] assertEquals java.time.Duration.ofMillis(10)
51+
nested("dur").as[java.time.Duration].load[IO] assertEquals java.time.Duration.ofMillis(10)
4852
}
4953
test("parse scala Duration") {
50-
hocon("dur").as[FiniteDuration].load[IO] assertEquals 10.millis
54+
nested("dur").as[FiniteDuration].load[IO] assertEquals 10.millis
5155
}
5256
test("parse Boolean") {
53-
hocon("bool").as[Boolean].load[IO] assertEquals true
57+
nested("bool").as[Boolean].load[IO] assertEquals true
5458
}
5559
test("parse Period") {
56-
hocon("per").as[java.time.Period].load[IO] assertEquals java.time.Period.ofWeeks(2)
60+
nested("per").as[java.time.Period].load[IO] assertEquals java.time.Period.ofWeeks(2)
5761
}
5862
test("handle missing") {
59-
hocon("missing")
63+
nested("missing")
6064
.as[Int]
6165
.attempt[IO]
6266
.map {
@@ -66,7 +70,7 @@ class HoconSpec extends CatsEffectSuite {
6670
.assertEquals("Missing nested.config.missing")
6771
}
6872
test("handle decode error") {
69-
hocon("str")
73+
nested("str")
7074
.as[Int]
7175
.attempt[IO]
7276
.map {
@@ -75,4 +79,7 @@ class HoconSpec extends CatsEffectSuite {
7579
}
7680
.assertEquals("Nested.config.str with value labas cannot be converted to Int")
7781
}
82+
test("resolve substitutions") {
83+
subst("int").as[Int].load[IO] assertEquals 2
84+
}
7885
}

0 commit comments

Comments
 (0)