shithub: mc

Download patch

ref: bc9ee15fdd4a4c961bac0de2f4f9c4fceccd4a86
parent: 65c02369b7b2c94e3832bb2a333b98bca852ada6
author: Ori Bernstein <ori@markovcorp.com>
date: Wed Jan 31 06:41:59 EST 2018

Teach mbld how to parse skipped tests.

	Not the cleanest, but it's a start.

--- a/mbld/subtest.myr
+++ b/mbld/subtest.myr
@@ -18,7 +18,7 @@
 const __init__ = {
 	planpat = std.try(regex.compile("MTEST\\s+(-?\\d+)\\s*"))
 	headpat = std.try(regex.compile("test\\s+(.*)<<{!\\s*"))
-	footpat = std.try(regex.compile("!}>>\\s*(ok|fail|timing)\\s*(.*)\\s*"))
+	footpat = std.try(regex.compile("!}>>\\s*(ok|fail|timing|skip)\\s*(.*)\\s*"))
 }
 
 const showsub = {b, cmd, fd, logfd, failed
@@ -92,6 +92,9 @@
 		| `std.Some `Timing (niter, avg, stddev):
 			showbench(b, &curtest, &nresults, niter, avg, stddev)
 			continue
+		| `std.Some `Skip:
+			skiptest(b, &curtest, &nresults)
+			continue
 		| `std.Some `Pass:
 			passtest(b, &curtest, &nresults)
 			continue
@@ -123,11 +126,20 @@
 }
 
 const checktests = {ntests, nresults
-	if ntests > 0 && ntests != nresults
-		mbldput("mismatched test count: expected {}, got {}\n", ntests, nresults)
-		-> false
+	/*
+	  FIXME: ugly hack.
+	  we don't currently print subtests all the time, so we don't check
+	  plan count here.
+	 */
+	match std.getenv("MTEST_SUBSET")
+	| `std.Some _:	-> true
+	| `std.None:
+		if ntests > 0 && ntests != nresults
+			mbldput("mismatched test count: expected {}, got {}\n", ntests, nresults)
+			-> false
+		;;
+		-> true
 	;;
-	-> true
 }
 
 const starttest = {curtest, t
@@ -138,6 +150,11 @@
 	curtest# = t
 }
 
+const skiptest = {b, curtest, nresults
+	donetest(b, curtest, nresults)
+	mbldput("SKIP\n")
+}
+
 const passtest = {b, curtest, nresults
 	donetest(b, curtest, nresults)
 	mbldput("PASS\n")
@@ -217,6 +234,7 @@
 	match regex.exec(footpat, ln)
 	| `std.Some m:
 		match m[1]
+		| "skip":	-> `std.Some `Skip
 		| "timing":	-> parsetiming(m[2])
 		| "ok":		-> `std.Some `Pass
 		| "fail":	-> `std.Some `Fail std.sldup(m[2])
--- a/mbld/types.myr
+++ b/mbld/types.myr
@@ -36,8 +36,9 @@
 		dir	: byte[:]
 
 		inputs	: byte[:][:]
-		libdeps	: (byte[:], byte[:], byte[:])[:]	/* dir, lib, targname */
-		tstdeps	: (byte[:], byte[:], byte[:])[:]	/* dir, lib, targname */
+		/* dir, lib, targname */
+		libdeps	: (byte[:], byte[:], byte[:])[:]
+		tstdeps	: (byte[:], byte[:], byte[:])[:]
 		runtime	: byte[:]
 		incpath	: byte[:][:]
 		tags	: byte[:][:]
@@ -87,6 +88,7 @@
 	;;
 
 	type testresult = union
+		`Skip
 		`Pass
 		`Fail byte[:]
 		`Timing (int, flt64, flt64)