Forráskód Böngészése

[tests] print compiler output on failed server tests

Aleksandr Kuzmenko 5 éve
szülő
commit
81542db7e4

+ 3 - 0
tests/server/build.hxml

@@ -8,3 +8,6 @@
 -D analyzer-optimize
 # -D UTEST_PATTERN=9087
 # or set UTEST_PATTERN environment variable
+
+#Temporary. To find out what's wrong with random CI failures
+--macro addMetadata('@:build(utils.macro.DebugFailures.patchAssert())', 'utest.Assert')

+ 8 - 0
tests/server/src/TestCase.hx

@@ -16,6 +16,8 @@ using Lambda;
 
 @:autoBuild(utils.macro.BuildHub.build())
 class TestCase implements ITest {
+	static public var debugLastResult:{hasError:Bool, stdout:String, stderr:String, prints:Array<String>};
+
 	var server:HaxeServerAsync;
 	var vfs:Vfs;
 	var testDir:String;
@@ -42,6 +44,12 @@ class TestCase implements ITest {
 		errorMessages = [];
 		server.rawRequest(args, null, function(result) {
 			lastResult = result;
+			debugLastResult = {
+				hasError: lastResult.hasError,
+				prints: lastResult.prints,
+				stderr: lastResult.stderr,
+				stdout: lastResult.stdout
+			}
 			sendLogMessage(result.stdout);
 			for (print in result.prints) {
 				var line = print.trim();

+ 26 - 0
tests/server/src/utils/macro/DebugFailures.hx

@@ -0,0 +1,26 @@
+package utils.macro;
+
+import haxe.macro.Context;
+import haxe.macro.Expr;
+
+/**
+ * Temporary. To find out what's wrong with random CI failures
+ */
+class DebugFailures {
+	macro static public function patchAssert():Array<Field> {
+		var fields = Context.getBuildFields();
+		for(field in fields) {
+			if(field.name == 'processResult') {
+				switch field.kind {
+					case FFun(fn):
+						fn.expr = macro {
+							if(!cond) js.Browser.console.log(pos.fileName + ":" + pos.lineNumber + ": " + haxe.Json.stringify(TestCase.debugLastResult));
+							${fn.expr};
+						}
+					case _:
+				}
+			}
+		}
+		return fields;
+	}
+}