X-Git-Url: http://nitlanguage.org diff --git a/src/testing/testing_base.nit b/src/testing/testing_base.nit index 36ce1f9..e035c9e 100644 --- a/src/testing/testing_base.nit +++ b/src/testing/testing_base.nit @@ -31,6 +31,8 @@ redef class ToolContext var opt_noact = new OptionBool("Does not compile and run tests", "--no-act") # opt --nitc var opt_nitc = new OptionString("nitc compiler to use", "--nitc") + # opt --no-time + var opt_no_time = new OptionBool("Disable time information in XML", "--no-time") # Working directory for testing. fun test_dir: String do @@ -62,8 +64,8 @@ redef class ToolContext return nitc end - var nit_dir = nit_dir - nitc = nit_dir/"bin/nitc" + var nit_dir = nit_dir or else "." + nitc = nit_dir / "bin/nitc" if not nitc.file_exists then fatal_error(null, "Error: cannot find nitc. Set envvar NIT_DIR or NITC or use the --nitc option.") abort @@ -106,7 +108,6 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null # If `has_progress_bar` is false, then only the first and last state is shown fun show_unit_status(name: String, tests: SequenceRead[UnitTest]) do - var esc = 27.code_point.to_s var line = "\r\x1B[K==== {name} [" var done = tests.length var fails = 0 @@ -165,6 +166,13 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null fun show_unit(test: UnitTest, more_message: nullable String) do print test.to_screen(more_message, not opt_no_color.value) end + + # Set the `NIT_TESTING_PATH` environment variable with `path`. + # + # If `path == null` then `NIT_TESTING_PATH` is set with the empty string. + fun set_testing_path(path: nullable String) do + "NIT_TESTING_PATH".setenv(path or else "") + end end # A unit test is an elementary test discovered, run and reported by nitunit. @@ -201,6 +209,9 @@ abstract class UnitTest # Additional noteworthy information when a test success. var info: nullable String = null + # Time for the execution, in seconds + var real_time: Float = 0.0 is writable + # A colorful `[OK]` or `[KO]`. fun status_tag(color: nullable Bool): String do color = color or else true @@ -252,17 +263,23 @@ abstract class UnitTest var tc = new HTMLTag("testcase") tc.attr("classname", xml_classname) tc.attr("name", xml_name) + tc.attr("time", real_time.to_s) + + var output = self.raw_output + if output != null then output = output.trunc(8192).filter_nonprintable var error = self.error if error != null then + var node if was_exec then - tc.open("error").append(error) + node = tc.open("error").attr("message", error) else - tc.open("failure").append(error) + node = tc.open("failure").attr("message", error) end - end - var output = self.raw_output - if output != null then - tc.open("system-err").append(output.trunc(8192).filter_nonprintable) + if output != null then + node.append(output) + end + else if output != null then + tc.open("system-err").append(output) end return tc end