From: Jean Privat Date: Tue, 20 Jun 2017 17:46:57 +0000 (-0400) Subject: nitunit: try to mass compile all docunits at once X-Git-Url: http://nitlanguage.org?ds=sidebyside nitunit: try to mass compile all docunits at once Signed-off-by: Jean Privat --- diff --git a/src/testing/testing_doc.nit b/src/testing/testing_doc.nit index 0a092dd..9933e06 100644 --- a/src/testing/testing_doc.nit +++ b/src/testing/testing_doc.nit @@ -100,7 +100,8 @@ class NitUnitExecutor end # Try to group each nitunit into a single source file to fasten the compilation - var simple_du = new Array[DocUnit] + var simple_du = new Array[DocUnit] # du that are simple statements + var single_du = new Array[DocUnit] # du that are modules or include classes show_status for du in docunits do # Skip existing errors @@ -111,11 +112,17 @@ class NitUnitExecutor var ast = toolcontext.parse_something(du.block) if ast isa AExpr then simple_du.add du + else + single_du.add du end end # Try to mass compile all the simple du as a single nit module compile_simple_docunits(simple_du) + # Try to mass compile all the single du in a single nitc invocation with many modules + compile_single_docunits(single_du) + # If the mass compilation fail, then each one will be compiled individually + # Now test them in order for du in docunits do if du.error != null then @@ -124,7 +131,8 @@ class NitUnitExecutor # Already compiled. Execute it. execute_simple_docunit(du) else - # Need to try to compile it, then execute it + # A mass compilation failed + # Need to try to recompile it, then execute it test_single_docunit(du) end mark_done(du) @@ -279,7 +287,7 @@ class NitUnitExecutor return f end - # Compile an unit file and return the compiler return code + # Compile a unit file and return the compiler return code # # Can terminate the program if the compiler is not found private fun compile_unitfile(file: String): Int @@ -287,12 +295,52 @@ class NitUnitExecutor var nitc = toolcontext.find_nitc var opts = new Array[String] if mmodule != null then + # FIXME playing this way with the include dir is not safe nor robust opts.add "-I {mmodule.filepath.dirname}" end var cmd = "{nitc} --ignore-visibility --no-color -q '{file}' {opts.join(" ")} >'{file}.out1' 2>&1 '{prefix}.out1' 2>&1