import modelize
private import parser_util
+import html
redef class ToolContext
# opt --full
var ulimit_usertime = 600 is writable
end
+# A unit test is an elementary test discovered, run and reported bu nitunit.
+#
+# This class factorizes `DocUnit` and `TestCase`.
+abstract class UnitTest
+
+ # Error occurred during test-case execution.
+ var error: nullable String = null is writable
+
+ # Was the test case executed at least once?
+ var was_exec = false is writable
+
+ # Return the `TestCase` in XML format compatible with Jenkins.
+ #
+ # See to_xml
+ fun to_xml: HTMLTag do
+ var tc = new HTMLTag("testcase")
+ tc.attr("classname", xml_classname)
+ tc.attr("name", xml_name)
+ var error = self.error
+ if error != null then
+ if was_exec then
+ tc.open("error").append("Runtime Error")
+ else
+ tc.open("failure").append("Compilation Error")
+ end
+ tc.open("system-err").append(error.trunc(8192).filter_nonprintable)
+ end
+ return tc
+ end
+
+ # The `classname` attribute of the XML format.
+ #
+ # NOTE: jenkins expects a '.' in the classname attr
+ fun xml_classname: String is abstract
+
+ # The `name` attribute of the XML format.
+ #
+ # See to_xml
+ fun xml_name: String is abstract
+end
+
redef class String
# If needed, truncate `self` at `max_length` characters and append an informative `message`.
#
# A test case is a unit test considering only a `MMethodDef`.
class TestCase
+ super UnitTest
# Test suite wich `self` belongs to.
var test_suite: TestSuite
toolcontext.check_errors
end
- # Error occured during test-case execution.
- var error: nullable String = null
-
- # Was the test case executed at least one?
- var was_exec = false
-
- # Return the `TestCase` in XML format compatible with Jenkins.
- fun to_xml: HTMLTag do
+ redef fun xml_classname do
var mclassdef = test_method.mclassdef
- var tc = new HTMLTag("testcase")
- # NOTE: jenkins expects a '.' in the classname attr
- tc.attr("classname", "nitunit." + mclassdef.mmodule.full_name + "." + mclassdef.mclass.full_name)
- tc.attr("name", test_method.mproperty.full_name)
- if was_exec then
- tc.add new HTMLTag("system-out")
- var n = new HTMLTag("system-err")
- tc.add n
- var error = self.error
- if error != null then
- n.append error.trunc(8192).filter_nonprintable
- n = new HTMLTag("error")
- n.attr("message", "Runtime Error")
- tc.add n
- end
- end
- return tc
+ return "nitunit." + mclassdef.mmodule.full_name + "." + mclassdef.mclass.full_name
+ end
+
+ redef fun xml_name do
+ return test_method.mproperty.full_name
end
end