nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nitcc: tests script return non-zero on failure (print is not enough)
[nit.git]
/
src
/
testing
/
testing_base.nit
diff --git
a/src/testing/testing_base.nit
b/src/testing/testing_base.nit
index
b01d7dd
..
e035c9e
100644
(file)
--- 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")
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
# Working directory for testing.
fun test_dir: String do
@@
-62,8
+64,8
@@
redef class ToolContext
return nitc
end
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
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
# 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
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
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.
end
# A unit test is an elementary test discovered, run and reported by nitunit.
@@
-198,6
+206,12
@@
abstract class UnitTest
# The location where the error occurred, if it makes sense.
var error_location: nullable Location = null is writable
# The location where the error occurred, if it makes sense.
var error_location: nullable Location = null is writable
+ # 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
# A colorful `[OK]` or `[KO]`.
fun status_tag(color: nullable Bool): String do
color = color or else true
@@
-236,6
+250,10
@@
abstract class UnitTest
else
res = "{status_tag(color)} {full_name}"
if more_message != null then res += more_message
else
res = "{status_tag(color)} {full_name}"
if more_message != null then res += more_message
+ var info = self.info
+ if info != null then
+ res += "\n {info}"
+ end
end
return res
end
end
return res
end
@@
-245,17
+263,23
@@
abstract class UnitTest
var tc = new HTMLTag("testcase")
tc.attr("classname", xml_classname)
tc.attr("name", xml_name)
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 error = self.error
if error != null then
+ var node
if was_exec then
if was_exec then
- tc.open("error").append(error)
+ node = tc.open("error").attr("message", error)
else
else
- tc.open("failure").append(error)
+ node = tc.open("failure").attr("message", error)
end
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
end
return tc
end