Quantcast
Viewing latest article 6
Browse Latest Browse All 15

Emojis in Play! test logs

Several months ago, Play! secretly added emoji support in the test logs. To add this revolutionary feature to your project, throw play.Project.emojiLogs in your project’s settings.
Image may be NSFW.
Clik here to view.
Emoji Tests

James Roper cautions that the feature is unsupported and may be removed, so you may rather to include it directly in your Build.scala:

  val emojiLogs = logManager ~= { lm =>
      new LogManager {
        def apply(data: sbt.Settings[Scope], state: State, task: Def.ScopedKey[_], writer: java.io.PrintWriter) = {
          val l = lm.apply(data, state, task, writer)
          val FailuresErrors = "(?s).*(\\d+) failures?, (\\d+) errors?.*".r
          new Logger {
            def filter(s: String) = {
              val filtered = s.replace("\033[32m+\033[0m", "\u2705 ")
                .replace("\033[33mx\033[0m", "\u274C ")
                .replace("\033[31m!\033[0m", "\uD83D\uDCA5 ")
              filtered match {
                case FailuresErrors("0", "0") => filtered + " \uD83D\uDE04"
                case FailuresErrors(_, _) => filtered + " \uD83D\uDE22"
                case _ => filtered
              }
            }
            def log(level: Level.Value, message: => String) = l.log(level, filter(message))
            def success(message: => String) = l.success(message)
            def trace(t: => Throwable) = l.trace(t)
 
            override def ansiCodesSupported = l.ansiCodesSupported
          }
        }
      }
    }
 
// and your project:
  val yourProject = play.Project("sample", appVersion, yourDependencies).settings(
    // ... your current settings ...
    emojiLogs
  )

Viewing latest article 6
Browse Latest Browse All 15

Trending Articles