All Downloads are FREE. Search and download functionalities are using the official Maven repository.

zio.test.ExecutionEventPrinter.scala Maven / Gradle / Ivy

There is a newer version: 2.1.6
Show newest version
package zio.test

import zio.{ZIO, ZLayer}

trait ExecutionEventPrinter {
  def print(event: ExecutionEvent): ZIO[Any, Nothing, Unit]
}
object ExecutionEventPrinter {
  def live(renderer: ReporterEventRenderer): ZLayer[TestLogger, Nothing, ExecutionEventPrinter] =
    ZLayer {
      for {
        testLogger <- ZIO.service[TestLogger]
      } yield new Live(testLogger, renderer)
    }

  def print(event: ExecutionEvent): ZIO[ExecutionEventPrinter, Nothing, Unit] =
    ZIO.serviceWithZIO(_.print(event))

  class Live(logger: TestLogger, eventRenderer: ReporterEventRenderer) extends ExecutionEventPrinter {
    override def print(event: ExecutionEvent): ZIO[Any, Nothing, Unit] = {
      val rendered = eventRenderer.render(event)
      ZIO
        .when(rendered.nonEmpty)(
          logger.logLine(
            rendered.mkString("\n")
          )
        )
        .unit
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy