From a23302ef560743295be4576c3b9e3301709e8390 Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Mon, 4 May 2020 06:07:32 -0700 Subject: [PATCH] fix https://github.com/timotheecour/Nim/issues/152: avoid writing spurious `^[[0m` to stderr when callStyledWriteLineStderr not called (#14214) * fix https://github.com/timotheecour/Nim/issues/152 `^[[0m` is inserted in stderr for `echo code | nim c -` * resetAttributes not even needed, already handled in styledWriteLine * simplify tests in tests/trunner.nim thanks to this fix --- compiler/main.nim | 2 -- compiler/msgs.nim | 7 +++---- tests/trunner.nim | 8 ++------ 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/compiler/main.nim b/compiler/main.nim index 66ae830d2f..a609d26bcf 100644 --- a/compiler/main.nim +++ b/compiler/main.nim @@ -405,5 +405,3 @@ proc mainCommand*(graph: ModuleGraph) = echo " int tries: ", gCacheIntTries echo " efficiency: ", formatFloat(1-(gCacheMisses.float/gCacheTries.float), ffDecimal, 3) - - resetAttributes(conf) diff --git a/compiler/msgs.nim b/compiler/msgs.nim index 6fdd4931bb..c0d98007b5 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -298,6 +298,9 @@ macro callStyledWriteLineStderr(args: varargs[typed]): untyped = result.add(bindSym"stderr") for arg in children(args[0][1]): result.add(arg) + when false: + # not needed because styledWriteLine already ends with resetAttributes + result = newStmtList(result, newCall(bindSym"resetAttributes", bindSym"stderr")) template callWritelnHook(args: varargs[string, `$`]) = conf.writelnHook concat(args) @@ -441,10 +444,6 @@ proc rawMessage*(conf: ConfigRef; msg: TMsgKind, args: openArray[string]) = proc rawMessage*(conf: ConfigRef; msg: TMsgKind, arg: string) = rawMessage(conf, msg, [arg]) -proc resetAttributes*(conf: ConfigRef) = - if {optUseColors, optStdout} * conf.globalOptions == {optUseColors}: - terminal.resetAttributes(stderr) - proc addSourceLine(conf: ConfigRef; fileIdx: FileIndex, line: string) = conf.m.fileInfos[fileIdx.int32].lines.add line diff --git a/tests/trunner.nim b/tests/trunner.nim index 65016d2f11..265a3712d4 100644 --- a/tests/trunner.nim +++ b/tests/trunner.nim @@ -74,9 +74,7 @@ else: # don't run twice the same test var output = p.outputStream.readAll let error = p.errorStream.readAll doAssert p.waitForExit == 0 - when false: # https://github.com/timotheecour/Nim/issues/152 - # bug: `^[[0m` is being inserted somehow with `-` (regarless of --run) - doAssert error.len == 0, $(error,) + doAssert error.len == 0, $error output.stripLineEnd doAssert output == expected p.errorStream.close @@ -85,8 +83,6 @@ else: # don't run twice the same test block: when defined(posix): let cmd = fmt"echo 'import os; echo commandLineParams()' | {nimcmd}" - # avoid https://github.com/timotheecour/Nim/issues/152 by - # making sure `poStdErrToStdOut` isn't passed - var (output, exitCode) = execCmdEx(cmd, options = {poEvalCommand}) + var (output, exitCode) = execCmdEx(cmd) output.stripLineEnd doAssert output == expected