• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pureconfig / pureconfig / 16844894943

09 Aug 2025 03:28AM UTC coverage: 94.686% (-0.04%) from 94.726%
16844894943

Pull #1838

web-flow
Merge 12f0062cf into 38f73c635
Pull Request #1838: Rid of deprecated URL constructor

1 of 1 new or added line in 1 file covered. (100.0%)

95 existing lines in 26 files now uncovered.

2744 of 2898 relevant lines covered (94.69%)

2.43 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.0
/modules/circe/src/main/scala/pureconfig/module/circe/package.scala
1
package pureconfig.module
2

3
import scala.jdk.CollectionConverters._
4

5
import com.typesafe.config._
6
import io.circe._
7

8
import pureconfig.{ConfigReader, ConfigWriter}
9

10
package object circe {
11
  private def cvToJson(cv: ConfigValue): Json = {
1✔
12
    cv.valueType match {
2✔
UNCOV
13
      case ConfigValueType.NULL =>
14
        Json.Null
UNCOV
15
      case ConfigValueType.BOOLEAN =>
16
        Json.fromBoolean(cv.unwrapped.asInstanceOf[Boolean])
×
17
      case ConfigValueType.NUMBER =>
1✔
18
        cv.unwrapped match {
2✔
19
          case i: java.lang.Number if i.longValue() == i =>
2✔
20
            Json.fromLong(i.longValue())
2✔
21
          case d: java.lang.Number =>
1✔
22
            Json.fromDoubleOrNull(d.doubleValue())
2✔
23
        }
24
      case ConfigValueType.STRING =>
1✔
25
        Json.fromString(cv.unwrapped.asInstanceOf[String])
2✔
26
      case ConfigValueType.LIST => {
2✔
27
        val iter = cv.asInstanceOf[ConfigList].asScala.map(cvToJson _)
2✔
28
        Json.fromValues(iter)
2✔
29
      }
30
      case ConfigValueType.OBJECT => {
2✔
31
        val jsonMap = cv.asInstanceOf[ConfigObject].asScala.view.mapValues(cvToJson _).toMap
2✔
32
        val jsonObj = JsonObject.fromMap(jsonMap)
2✔
33
        Json.fromJsonObject(jsonObj)
2✔
34
      }
35
    }
36
  }
37

38
  private def jsonToCv(json: Json): ConfigValue = {
1✔
39
    json.fold(
2✔
40
      ConfigValueFactory.fromAnyRef(null),
×
41
      bool => ConfigValueFactory.fromAnyRef(bool),
×
42
      jnum =>
43
        jnum.toLong match {
1✔
44
          case Some(long) => ConfigValueFactory.fromAnyRef(long)
2✔
45
          case None => ConfigValueFactory.fromAnyRef(jnum.toDouble)
2✔
46
        },
47
      str => ConfigValueFactory.fromAnyRef(str),
2✔
48
      arr => ConfigValueFactory.fromIterable(arr.map(jsonToCv).asJava),
2✔
49
      obj => ConfigValueFactory.fromMap(obj.toMap.map { case (k, v) => k -> jsonToCv(v) }.asJava)
2✔
50
    )
51
  }
52

53
  implicit val circeJsonReader: ConfigReader[Json] =
54
    ConfigReader[ConfigValue].map(cvToJson)
2✔
55
  implicit val circeJsonWriter: ConfigWriter[Json] =
56
    ConfigWriter[ConfigValue].contramap(jsonToCv)
2✔
57
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc