From f0055cd18a9bdcda7462edb534cb4f256faaca29 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Wed, 19 Aug 2020 11:21:53 -0700 Subject: [PATCH] Don't use virtual io by default in CI The CI output logs for the sbt build are truncated when using sbt 1.4.0-M2 because the virtual tty provided by the build agent doesn't seem to work well with sbt's virtual io. --- .../src/main/scala/sbt/internal/util/Terminal.scala | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala index 15bb3ae40..4e8ef7262 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala @@ -171,6 +171,8 @@ object Terminal { // Disable noisy jline log spam if (System.getProperty("sbt.jline.verbose", "false") != "true") jline.internal.Log.setOutput(new PrintStream(_ => {}, false)) + private[this] val isCI = System.getProperty("sbt.ci", "") == "true" || + sys.env.contains("BUILD_NUMBER") || sys.env.contains("CI") def consoleLog(string: String): Unit = { try Terminal.console.printStream.println(s"[info] $string") catch { case _: IOException => } @@ -281,7 +283,9 @@ object Terminal { * @return the result of the thunk */ private[sbt] def withStreams[T](isServer: Boolean)(f: => T): T = - if (System.getProperty("sbt.io.virtual", "true") == "true") { + // In ci environments, don't touch the io streams unless run with -Dsbt.io.virtual=true + if (isCI && System.getProperty("sbt.io.virtual", "") != "true") f + else { hasProgress.set(isServer) consoleTerminalHolder.set(wrap(jline.TerminalFactory.get)) activeTerminal.set(consoleTerminalHolder.get) @@ -313,7 +317,7 @@ object Terminal { console.close() } } - } else f + } private[this] object ProxyTerminal extends Terminal { private def t: Terminal = activeTerminal.get @@ -775,7 +779,6 @@ object Terminal { val size = system.getSize (size.getColumns, size.getRows) } - private[this] val isCI = sys.env.contains("BUILD_NUMBER") || sys.env.contains("CI") override lazy val isAnsiSupported: Boolean = term.isAnsiSupported && !isCI override private[sbt] def progressState: ProgressState = consoleProgressState.get override def isEchoEnabled: Boolean = system.echo()