X-Git-Url: http://nitlanguage.org diff --git a/src/testing/testing_doc.nit b/src/testing/testing_doc.nit index 1ca4deb..0121162 100644 --- a/src/testing/testing_doc.nit +++ b/src/testing/testing_doc.nit @@ -19,6 +19,7 @@ private import parser_util import testing_base import markdown import html +import realtime # Extractor, Executor and Reporter for the tests in a module class NitUnitExecutor @@ -43,7 +44,7 @@ class NitUnitExecutor var mdproc = new MarkdownProcessor init do - mdproc.emitter.decorator = new NitunitDecorator(self) + mdproc.decorator = new NitunitDecorator(self) end # The associated documentation object @@ -86,6 +87,8 @@ class NitUnitExecutor fun mark_done(du: DocUnit) do du.is_done = true + toolcontext.clear_progress_bar + toolcontext.show_unit(du) show_status end @@ -96,33 +99,41 @@ class NitUnitExecutor return end + # Try to group each nitunit into a single source file to fasten the compilation var simple_du = new Array[DocUnit] show_status for du in docunits do # Skip existing errors if du.error != null then - mark_done(du) continue end var ast = toolcontext.parse_something(du.block) if ast isa AExpr then simple_du.add du + end + end + test_simple_docunits(simple_du) + + # Now test them in order + for du in docunits do + if du.error != null then + # Nothing to execute. Conclude + else if du.test_file != null then + # Already compiled. Execute it. + execute_simple_docunit(du) else + # Need to try to compile it, then execute it test_single_docunit(du) end + mark_done(du) end - test_simple_docunits(simple_du) - + # Final status show_status print "" for du in docunits do - toolcontext.show_unit(du) - end - - for du in docunits do testsuite.add du.to_xml end end @@ -164,28 +175,37 @@ class NitUnitExecutor if res != 0 then # Compilation error. - # Fall-back to individual modes: - for du in dus do - test_single_docunit(du) - end + # They will be executed independently return end + # Compilation was a success. + # Store what need to be executed for each one. i = 0 for du in dus do i += 1 - toolcontext.info("Execute doc-unit {du.full_name} in {file} {i}", 1) - var res2 = toolcontext.safe_exec("{file.to_program_name}.bin {i} >'{file}.out1' 2>&1 '{file}.out1' 2>&1 '{file}.out1' 2>&1 '{file}.out1' 2>&1 '{file}.out1' 2>&1 1 then + res += "#{number}" + end + return res else return xml_classname + "." + xml_name end @@ -490,7 +524,7 @@ redef class ModelBuilder var ndoc = nclassdef.n_doc if ndoc != null then doc_entities += 1 - d2m.extract(ndoc.to_mdoc, "nitunit." + mmodule.full_name + "." + mclassdef.mclass.full_name, "") + d2m.extract(ndoc.to_mdoc, "nitunit." + mclassdef.full_name.replace("$", "."), "") end end for npropdef in nclassdef.n_propdefs do @@ -500,7 +534,8 @@ redef class ModelBuilder var ndoc = npropdef.n_doc if ndoc != null then doc_entities += 1 - d2m.extract(ndoc.to_mdoc, "nitunit." + mmodule.full_name + "." + mclassdef.mclass.full_name, mpropdef.mproperty.full_name) + var a = mpropdef.full_name.split("$") + d2m.extract(ndoc.to_mdoc, "nitunit." + a[0] + "." + a[1], a[2]) end end end @@ -532,7 +567,7 @@ redef class ModelBuilder doc_entities += 1 # NOTE: jenkins expects a '.' in the classname attr - d2m.extract(mdoc, "nitunit." + mgroup.full_name, "") + d2m.extract(mdoc, "nitunit." + mgroup.mpackage.name + "." + mgroup.name + ".", "") d2m.run_tests @@ -543,7 +578,7 @@ redef class ModelBuilder fun test_mdoc(mdoc: MDoc): HTMLTag do var ts = new HTMLTag("testsuite") - var file = mdoc.location.to_s + var file = mdoc.location.file.filename toolcontext.info("nitunit: doc-unit file {file}", 2)