@@ -40,9 +40,11 @@ import 'spelling_test_src_suite.dart' as spelling_src show createContext;
4040class Options {
4141 final String configurationName;
4242 final bool verbose;
43+ final bool printFailureLog;
4344 final Uri outputDirectory;
4445
45- Options (this .configurationName, this .verbose, this .outputDirectory);
46+ Options (this .configurationName, this .verbose, this .printFailureLog,
47+ this .outputDirectory);
4648
4749 static Options parse (List <String > args) {
4850 var parser = new ArgParser ()
@@ -52,27 +54,30 @@ class Options {
5254 ..addOption ("output-directory" ,
5355 help: "directory to which results.json and logs.json are written" )
5456 ..addFlag ("verbose" ,
55- abbr: "v" , help: "print additional information" , defaultsTo: false );
57+ abbr: "v" , help: "print additional information" , defaultsTo: false )
58+ ..addFlag ("print" ,
59+ abbr: "p" , help: "print failure logs" , defaultsTo: false );
5660 var parsedArguments = parser.parse (args);
5761 String outputPath = parsedArguments["output-directory" ] ?? "." ;
5862 Uri outputDirectory = Uri .base .resolveUri (Uri .directory (outputPath));
5963 return Options (parsedArguments["named-configuration" ],
60- parsedArguments["verbose" ], outputDirectory);
64+ parsedArguments["verbose" ], parsedArguments[ "print" ], outputDirectory);
6165 }
6266}
6367
6468class ResultLogger implements Logger {
6569 final String suiteName;
6670 final String prefix;
6771 final bool verbose;
72+ final bool printFailureLog;
6873 final SendPort resultsPort;
6974 final SendPort logsPort;
7075 final Map <String , Stopwatch > stopwatches = {};
7176 final String configurationName;
7277 final Set <String > seenTests = {};
7378
7479 ResultLogger (this .suiteName, this .prefix, this .resultsPort, this .logsPort,
75- this .verbose, this .configurationName);
80+ this .verbose, this .printFailureLog, this . configurationName);
7681
7782 String getTestName (TestDescription description) {
7883 return "$prefix /${description .shortName }" ;
@@ -131,6 +136,10 @@ class ResultLogger implements Logger {
131136 "result" : outcome,
132137 "log" : failureLog,
133138 }));
139+ if (printFailureLog) {
140+ print ('FAILED: $testName : $outcome ' );
141+ print (failureLog);
142+ }
134143 }
135144 if (verbose) {
136145 String result = matchedExpectations ? "PASS" : "FAIL" ;
@@ -222,9 +231,10 @@ class SuiteConfiguration {
222231 final SendPort resultsPort;
223232 final SendPort logsPort;
224233 final bool verbose;
234+ final bool printFailureLog;
225235 final String configurationName;
226236 const SuiteConfiguration (this .name, this .resultsPort, this .logsPort,
227- this .verbose, this .configurationName);
237+ this .verbose, this .printFailureLog, this . configurationName);
228238}
229239
230240void runSuite (SuiteConfiguration configuration) {
@@ -238,6 +248,7 @@ void runSuite(SuiteConfiguration configuration) {
238248 configuration.resultsPort,
239249 configuration.logsPort,
240250 configuration.verbose,
251+ configuration.printFailureLog,
241252 configuration.configurationName);
242253 runMe (< String > [], suite.createContext,
243254 me: suiteUri,
@@ -270,6 +281,7 @@ main([List<String> arguments = const <String>[]]) async {
270281 resultsPort.sendPort,
271282 logsPort.sendPort,
272283 options.verbose,
284+ options.printFailureLog,
273285 options.configurationName);
274286 Future future = Future <bool >(() async {
275287 Stopwatch stopwatch = Stopwatch ()..start ();
0 commit comments