From: Jean Privat Date: Thu, 19 May 2016 03:49:54 +0000 (-0400) Subject: nitunit: filter the XML content (and trunc it if needed) X-Git-Url: http://nitlanguage.org nitunit: filter the XML content (and trunc it if needed) Signed-off-by: Jean Privat --- diff --git a/src/testing/testing_base.nit b/src/testing/testing_base.nit index 5e9b83b..414de9a 100644 --- a/src/testing/testing_base.nit +++ b/src/testing/testing_base.nit @@ -93,3 +93,39 @@ ulimit -t {{{ulimit_usertime}}} 2> /dev/null # Default: 10 CPU minute var ulimit_usertime = 600 is writable end + +redef class String + # If needed, truncate `self` at `max_length` characters and append an informative `message`. + # + # ~~~ + # assert "hello".trunc(10) == "hello" + # assert "hello".trunc(2) == "he[truncated. Full size is 5]" + # assert "hello".trunc(2, "...") == "he..." + # ~~~ + fun trunc(max_length: Int, message: nullable String): String + do + if length <= max_length then return self + if message == null then message = "[truncated. Full size is {length}]" + return substring(0, max_length) + message + end + + # Use a special notation for whitespace characters that are not `'\n'` (LFD) or `' '` (space). + # + # ~~~ + # assert "hello".filter_nonprintable == "hello" + # assert "\r\n\t".filter_nonprintable == "^13\n^9" + # ~~~ + fun filter_nonprintable: String + do + var buf = new Buffer + for c in self do + var cp = c.code_point + if cp < 32 and c != '\n' then + buf.append "^{cp}" + else + buf.add c + end + end + return buf.to_s + end +end diff --git a/src/testing/testing_doc.nit b/src/testing/testing_doc.nit index f040253..05c1f67 100644 --- a/src/testing/testing_doc.nit +++ b/src/testing/testing_doc.nit @@ -159,12 +159,13 @@ class NitUnitExecutor toolcontext.info("Execute doc-unit {du.testcase.attrs["name"]} in {file} {i}", 1) var res2 = toolcontext.safe_exec("{file.to_program_name}.bin {i} >'{file}.out1' 2>&1 '{file}.out1' 2>&1