|
@@ -7,19 +7,25 @@ using StringTools;
|
|
|
|
|
|
typedef Result = {
|
|
typedef Result = {
|
|
count:Int,
|
|
count:Int,
|
|
- failures:Int
|
|
|
|
|
|
+ failures:Int,
|
|
|
|
+ summary:String
|
|
}
|
|
}
|
|
|
|
|
|
class Main {
|
|
class Main {
|
|
static public function main() {
|
|
static public function main() {
|
|
var result:Result = compileProjects();
|
|
var result:Result = compileProjects();
|
|
Sys.println('Done running ${result.count} tests with ${result.failures} failures');
|
|
Sys.println('Done running ${result.count} tests with ${result.failures} failures');
|
|
|
|
+ if(result.count > 20 && result.failures > 0) {
|
|
|
|
+ Sys.println('Summary:');
|
|
|
|
+ Sys.println(result.summary);
|
|
|
|
+ }
|
|
Sys.exit(result.failures);
|
|
Sys.exit(result.failures);
|
|
}
|
|
}
|
|
|
|
|
|
static public function compileProjects():Result {
|
|
static public function compileProjects():Result {
|
|
var count = 0;
|
|
var count = 0;
|
|
var failures = 0;
|
|
var failures = 0;
|
|
|
|
+ var failuresSummary = [];
|
|
var filter = Compiler.getDefine("MISC_TEST_FILTER");
|
|
var filter = Compiler.getDefine("MISC_TEST_FILTER");
|
|
var filterRegex = filter == null ? ~/.*/ : new EReg(filter, "");
|
|
var filterRegex = filter == null ? ~/.*/ : new EReg(filter, "");
|
|
function browse(dirPath) {
|
|
function browse(dirPath) {
|
|
@@ -39,10 +45,11 @@ class Main {
|
|
Sys.println('Running haxe $path');
|
|
Sys.println('Running haxe $path');
|
|
var expectFailure = file.endsWith("-fail.hxml");
|
|
var expectFailure = file.endsWith("-fail.hxml");
|
|
var expectStderr = if (FileSystem.exists('$file.stderr')) prepareExpectedOutput(File.getContent('$file.stderr')) else null;
|
|
var expectStderr = if (FileSystem.exists('$file.stderr')) prepareExpectedOutput(File.getContent('$file.stderr')) else null;
|
|
- var success = runCommand("haxe", [file], expectFailure, expectStderr);
|
|
|
|
|
|
+ var result = runCommand("haxe", [file], expectFailure, expectStderr);
|
|
++count;
|
|
++count;
|
|
- if (!success) {
|
|
|
|
|
|
+ if (!result.success) {
|
|
failures++;
|
|
failures++;
|
|
|
|
+ failuresSummary.push(result.summary);
|
|
}
|
|
}
|
|
Sys.setCwd(old);
|
|
Sys.setCwd(old);
|
|
}
|
|
}
|
|
@@ -51,7 +58,8 @@ class Main {
|
|
browse("projects");
|
|
browse("projects");
|
|
return {
|
|
return {
|
|
count: count,
|
|
count: count,
|
|
- failures: failures
|
|
|
|
|
|
+ failures: failures,
|
|
|
|
+ summary: failuresSummary.join('\n')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -77,7 +85,12 @@ class Main {
|
|
return p;
|
|
return p;
|
|
}
|
|
}
|
|
|
|
|
|
- static function runCommand(command:String, args:Array<String>, expectFailure:Bool, expectStderr:String) {
|
|
|
|
|
|
+ static function runCommand(command:String, args:Array<String>, expectFailure:Bool, expectStderr:String):{success:Bool, summary:String} {
|
|
|
|
+ var summary = [];
|
|
|
|
+ function println(msg:String) {
|
|
|
|
+ summary.push(msg);
|
|
|
|
+ Sys.println(msg);
|
|
|
|
+ }
|
|
#if timeout
|
|
#if timeout
|
|
switch Sys.systemName() {
|
|
switch Sys.systemName() {
|
|
case 'Linux':
|
|
case 'Linux':
|
|
@@ -94,13 +107,13 @@ class Main {
|
|
var success = exit == 0;
|
|
var success = exit == 0;
|
|
// 124 - exit code of linux `timeout` command in case it actually timed out
|
|
// 124 - exit code of linux `timeout` command in case it actually timed out
|
|
if (exit == 124) {
|
|
if (exit == 124) {
|
|
- Sys.println('Timeout. No response in ${Compiler.getDefine('timeout')} seconds.');
|
|
|
|
|
|
+ println('Timeout. No response in ${Compiler.getDefine('timeout')} seconds.');
|
|
}
|
|
}
|
|
var result = switch [success, expectFailure] {
|
|
var result = switch [success, expectFailure] {
|
|
case [true, false]:
|
|
case [true, false]:
|
|
true;
|
|
true;
|
|
case [true, true]:
|
|
case [true, true]:
|
|
- Sys.println("Expected failure, but no failure occurred");
|
|
|
|
|
|
+ println("Expected failure, but no failure occurred");
|
|
false;
|
|
false;
|
|
case [false, true]:
|
|
case [false, true]:
|
|
true;
|
|
true;
|
|
@@ -111,19 +124,19 @@ class Main {
|
|
}
|
|
}
|
|
|
|
|
|
if (stdout.length > 0) {
|
|
if (stdout.length > 0) {
|
|
- Sys.println(stdout);
|
|
|
|
|
|
+ println(stdout.toString());
|
|
}
|
|
}
|
|
|
|
|
|
if (result && expectStderr != null) {
|
|
if (result && expectStderr != null) {
|
|
var stderr = proc.stderr.readAll().toString().replace("\r\n", "\n").trim();
|
|
var stderr = proc.stderr.readAll().toString().replace("\r\n", "\n").trim();
|
|
if (stderr != expectStderr.trim()) {
|
|
if (stderr != expectStderr.trim()) {
|
|
- Sys.println("Actual stderr output doesn't match the expected one");
|
|
|
|
- Sys.println('Expected:\n"$expectStderr"');
|
|
|
|
- Sys.println('Actual:\n"$stderr"');
|
|
|
|
|
|
+ println("Actual stderr output doesn't match the expected one");
|
|
|
|
+ println('Expected:\n"$expectStderr"');
|
|
|
|
+ println('Actual:\n"$stderr"');
|
|
result = false;
|
|
result = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
proc.close();
|
|
proc.close();
|
|
- return result;
|
|
|
|
|
|
+ return {success:result, summary:summary.join('\n')};
|
|
}
|
|
}
|
|
}
|
|
}
|