From 8fdf8604d2dc58a0fb32721ea7f314b7d1f2caf3 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Thu, 26 May 2016 19:53:59 -0400 Subject: [PATCH] nitunit: honor --no-color Signed-off-by: Jean Privat --- src/testing/testing_base.nit | 38 ++++++++++++++++++++++++++++++++------ src/testing/testing_doc.nit | 2 +- src/testing/testing_suite.nit | 2 +- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/testing/testing_base.nit b/src/testing/testing_base.nit index 88651ef..26c3a4b 100644 --- a/src/testing/testing_base.nit +++ b/src/testing/testing_base.nit @@ -116,6 +116,14 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null line += "X".red.bold end end + + if opt_no_color.value then + if done == 0 then + print "* {name} ({tests.length} tests)" + end + return + end + line += "] {done}/{tests.length}" if more_message != null then line += " " + more_message @@ -123,6 +131,14 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null printn "{line}" end + # Shoe the full description of the test-case. + # + # The output honors `--no-color`. + # + # `more message`, if any, is added after the error message. + fun show_unit(test: UnitTest, more_message: nullable String) do + print test.to_screen(more_message, not opt_no_color.value) + end end # A unit test is an elementary test discovered, run and reported by nitunit. @@ -157,32 +173,42 @@ abstract class UnitTest var error_location: nullable Location = null is writable # A colorful `[OK]` or `[KO]`. - fun status_tag: String do + fun status_tag(color: nullable Bool): String do + color = color or else true if not is_done then return "[ ]" else if error != null then - return "[KO]".red.bold + var res = "[KO]" + if color then res = res.red.bold + return res else - return "[OK]".green.bold + var res = "[OK]" + if color then res = res.green.bold + return res end end # The full (color) description of the test-case. # # `more message`, if any, is added after the error message. - fun to_screen(more_message: nullable String): String do + fun to_screen(more_message: nullable String, color: nullable Bool): String do + color = color or else true var res var error = self.error if error != null then if more_message != null then error += " " + more_message var loc = error_location or else location - res = "{status_tag} {full_name}\n {loc.to_s.yellow}: {error}\n{loc.colored_line("1;31")}" + if color then + res = "{status_tag(color)} {full_name}\n {loc.to_s.yellow}: {error}\n{loc.colored_line("1;31")}" + else + res = "{status_tag(color)} {full_name}\n {loc}: {error}" + end var output = self.raw_output if output != null then res += "\n Output\n\t{output.chomp.replace("\n", "\n\t")}\n" end else - res = "{status_tag} {full_name}" + res = "{status_tag(color)} {full_name}" if more_message != null then res += more_message end return res diff --git a/src/testing/testing_doc.nit b/src/testing/testing_doc.nit index 2465d37..a2fa067 100644 --- a/src/testing/testing_doc.nit +++ b/src/testing/testing_doc.nit @@ -119,7 +119,7 @@ class NitUnitExecutor print "" for du in docunits do - print du.to_screen + toolcontext.show_unit(du) end for du in docunits do diff --git a/src/testing/testing_suite.nit b/src/testing/testing_suite.nit index bbe9372..f755d25 100644 --- a/src/testing/testing_suite.nit +++ b/src/testing/testing_suite.nit @@ -159,7 +159,7 @@ class TestSuite var after_module = self.after_module if not after_module == null then after_module.run for case in test_cases do - print case.to_screen + toolcontext.show_unit(case) end end -- 1.7.9.5