X-Git-Url: http://nitlanguage.org diff --git a/src/testing/testing_base.nit b/src/testing/testing_base.nit index 414de9a..7db143e 100644 --- a/src/testing/testing_base.nit +++ b/src/testing/testing_base.nit @@ -17,6 +17,7 @@ module testing_base import modelize private import parser_util +import html redef class ToolContext # opt --full @@ -94,6 +95,65 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null var ulimit_usertime = 600 is writable end +# A unit test is an elementary test discovered, run and reported by nitunit. +# +# This class factorizes `DocUnit` and `TestCase`. +abstract class UnitTest + # The name of the unit to show in messages + fun full_name: String is abstract + + # The location of the unit test to show in messages. + fun location: Location is abstract + + # Flag that indicates if the unit test was compiled/run. + var is_done: Bool = false is writable + + # Error message occurred during test-case execution (or compilation). + var error: nullable String = null is writable + + # Was the test case executed at least once? + # + # This will indicate the status of the test (failture or error) + var was_exec = false is writable + + # The raw output of the execution (or compilation) + # + # It merges the standard output and error output + var raw_output: nullable String = null is writable + + # The location where the error occurred, if it makes sense. + var error_location: nullable Location = null is writable + + # Return a `` XML node in format compatible with Jenkins unit tests. + 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 + # + # See to_xml + 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`. #