Unverified Commit ebbc94bc authored by Mateus Felipe C. C. Pinto's avatar Mateus Felipe C. C. Pinto Committed by GitHub

allow passing --file-reporter option to test running refs #69425 (#120716)

* allow passing --file-reporter option to test running refs #69425

* Add trailing comma to help to meet style requirements

* Add space between tests for clarity

---------
Co-authored-by: 's avatardaniel-v <dvarga@skawa.hu>
parent 23df7708
......@@ -208,6 +208,11 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
'json': 'A machine-readable format. See: https://dart.dev/go/test-docs/json_reporter.md',
},
)
..addOption('file-reporter',
help: 'Enable an additional reporter writing test results to a file.\n'
'Should be in the form <reporter>:<filepath>, '
'Example: "json:reports/tests.json".'
)
..addOption('timeout',
help: 'The default test timeout, specified either '
'in seconds (e.g. "60s"), '
......@@ -463,6 +468,7 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
web: stringArgDeprecated('platform') == 'chrome',
randomSeed: stringArgDeprecated('test-randomize-ordering-seed'),
reporter: stringArgDeprecated('reporter'),
fileReporter: stringArg('file-reporter'),
timeout: stringArgDeprecated('timeout'),
runSkipped: boolArgDeprecated('run-skipped'),
shardIndex: shardIndex,
......
......@@ -45,6 +45,7 @@ abstract class FlutterTestRunner {
bool web = false,
String? randomSeed,
String? reporter,
String? fileReporter,
String? timeout,
bool runSkipped = false,
int? shardIndex,
......@@ -82,6 +83,7 @@ class _FlutterTestRunnerImpl implements FlutterTestRunner {
bool web = false,
String? randomSeed,
String? reporter,
String? fileReporter,
String? timeout,
bool runSkipped = false,
int? shardIndex,
......@@ -103,6 +105,8 @@ class _FlutterTestRunnerImpl implements FlutterTestRunner {
...<String>['-r', 'json']
else if (reporter != null)
...<String>['-r', reporter],
if (fileReporter != null)
'--file-reporter=$fileReporter',
if (timeout != null)
...<String>['--timeout', timeout],
'--concurrency=$concurrency',
......
......@@ -804,6 +804,41 @@ dev_dependencies:
ProcessManager: () => FakeProcessManager.any(),
});
});
group('File Reporter', () {
testUsingContext('defaults to unset null value', () async {
final FakeFlutterTestRunner testRunner = FakeFlutterTestRunner(0);
final TestCommand testCommand = TestCommand(testRunner: testRunner);
final CommandRunner<void> commandRunner = createTestCommandRunner(testCommand);
await commandRunner.run(const <String>[
'test',
'--no-pub',
]);
expect(testRunner.lastFileReporterValue, null);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
ProcessManager: () => FakeProcessManager.any(),
});
testUsingContext('when set --file-reporter value is passed on', () async {
final FakeFlutterTestRunner testRunner = FakeFlutterTestRunner(0);
final TestCommand testCommand = TestCommand(testRunner: testRunner);
final CommandRunner<void> commandRunner = createTestCommandRunner(testCommand);
await commandRunner.run(const <String>[
'test',
'--no-pub',
'--file-reporter=json:out.jsonl'
]);
expect(testRunner.lastFileReporterValue, 'json:out.jsonl');
}, overrides: <Type, Generator>{
FileSystem: () => fs,
ProcessManager: () => FakeProcessManager.any(),
});
});
}
class FakeFlutterTestRunner implements FlutterTestRunner {
......@@ -813,6 +848,7 @@ class FakeFlutterTestRunner implements FlutterTestRunner {
Duration? leastRunTime;
bool? lastEnableObservatoryValue;
late DebuggingOptions lastDebuggingOptionsValue;
String? lastFileReporterValue;
String? lastReporterOption;
@override
......@@ -839,6 +875,7 @@ class FakeFlutterTestRunner implements FlutterTestRunner {
bool web = false,
String? randomSeed,
String? reporter,
String? fileReporter,
String? timeout,
bool runSkipped = false,
int? shardIndex,
......@@ -849,6 +886,7 @@ class FakeFlutterTestRunner implements FlutterTestRunner {
}) async {
lastEnableObservatoryValue = enableObservatory;
lastDebuggingOptionsValue = debuggingOptions;
lastFileReporterValue = fileReporter;
lastReporterOption = reporter;
if (leastRunTime != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment