Skip to content

Commit

Permalink
unittest: default no color if stdout is not a tty
Browse files Browse the repository at this point in the history
We accept a new environment variable, NIMTEST_COLOR,
which override the effect of NIMTEST_NO_COLOR.
The environment variable, NIMTEST_COLOR, can be 'never'
or 'always', which set the color output to false or true,
respectively.
  • Loading branch information
jxy committed Mar 29, 2018
1 parent 5022929 commit 9df2ebf
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
23 changes: 19 additions & 4 deletions lib/pure/unittest.nim
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,16 @@ type
ConsoleOutputFormatter* = ref object of OutputFormatter
colorOutput: bool
## Have test results printed in color.
## Default is true for the non-js target
## unless, the environment variable
## ``NIMTEST_NO_COLOR`` is set.
## Default is true for the non-js target,
## for which ``stdout`` is a tty.
## Setting the environment variable
## ``NIMTEST_COLOR`` to ``always`` or
## ``never`` changes the default for the
## non-js target to true or false respectively.
## The deprecated environment variable
## ``NIMTEST_NO_COLOR``, when set,
## changes the defualt to true, if
## ``NIMTEST_COLOR`` is undefined.
outputLevel: OutputLevel
## Set the verbosity of test results.
## Default is ``PRINT_ALL``, unless
Expand Down Expand Up @@ -185,7 +192,15 @@ proc defaultConsoleFormatter*(): ConsoleOutputFormatter =
# Reading settings
# On a terminal this branch is executed
var envOutLvl = os.getEnv("NIMTEST_OUTPUT_LVL").string
var colorOutput = not existsEnv("NIMTEST_NO_COLOR")
var colorOutput = isatty(stdout)
if existsEnv("NIMTEST_COLOR"):
let colorEnv = getenv("NIMTEST_COLOR")
if colorEnv == "never":
colorOutput = false
elif colorEnv == "always":
colorOutput = true
elif existsEnv("NIMTEST_NO_COLOR"):
colorOutput = false
var outputLevel = PRINT_ALL
if envOutLvl.len > 0:
for opt in countup(low(OutputLevel), high(OutputLevel)):
Expand Down
2 changes: 1 addition & 1 deletion tests/testament/tester.nim
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ include categories
# if status: reSuccess else: reOutputsDiffer)

proc main() =
os.putenv "NIMTEST_NO_COLOR", "1"
os.putenv "NIMTEST_COLOR", "never"
os.putenv "NIMTEST_OUTPUT_LVL", "PRINT_FAILURES"

backend.open()
Expand Down

0 comments on commit 9df2ebf

Please sign in to comment.