+
+ # Extracts and executes all the docunits in the readme of the `mgroup`
+ # Returns a JUnit-compatible `<testsuite>` XML element that contains the results of the executions.
+ fun test_group(mgroup: MGroup): HTMLTag
+ do
+ var ts = new HTMLTag("testsuite")
+ toolcontext.info("nitunit: doc-unit group {mgroup}", 2)
+
+ # usually, only the default module must be imported in the unit test.
+ var o = mgroup.default_mmodule
+
+ ts.attr("package", mgroup.full_name)
+
+ var prefix = toolcontext.test_dir
+ prefix = prefix.join_path(mgroup.to_s)
+ var d2m = new NitUnitExecutor(toolcontext, prefix, o, ts, "Docunits of group {mgroup.full_name}")
+
+ total_entities += 1
+ var mdoc = mgroup.mdoc
+ if mdoc == null then return ts
+
+ doc_entities += 1
+ # NOTE: jenkins expects a '.' in the classname attr
+ d2m.extract(mdoc, "nitunit." + mgroup.mpackage.name + "." + mgroup.name + ".<group>", "<group>")
+
+ d2m.run_tests
+
+ return ts
+ end
+
+ # Test a document object unrelated to a Nit entity
+ fun test_mdoc(mdoc: MDoc): HTMLTag
+ do
+ var ts = new HTMLTag("testsuite")
+ var file = mdoc.location.file.as(not null).filename
+
+ toolcontext.info("nitunit: doc-unit file {file}", 2)
+
+ ts.attr("package", file)
+
+ var prefix = toolcontext.test_dir / "file"
+ var d2m = new NitUnitExecutor(toolcontext, prefix, null, ts, "Docunits of file {file}")
+
+ total_entities += 1
+ doc_entities += 1
+
+ # NOTE: jenkins expects a '.' in the classname attr
+ d2m.extract(mdoc, "nitunit.<file>", file)
+ d2m.run_tests
+
+ return ts
+ end