[dartdev] add --enable-experiment support to 'dart test'

Bug: https://github.com/dart-lang/sdk/issues/42339
Change-Id: Ic50493b1e9af5ae626358bee1c0c145f58bb7c2c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153323
Auto-Submit: Devon Carew <devoncarew@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Jaime Wren <jwren@google.com>
This commit is contained in:
Devon Carew 2020-07-06 16:38:11 +00:00 committed by commit-bot@chromium.org
parent 34ad5a5908
commit 68bcf1b28a
2 changed files with 31 additions and 2 deletions

View file

@ -8,6 +8,7 @@ import 'dart:io';
import 'package:args/args.dart';
import '../core.dart';
import '../experiments.dart';
import '../sdk.dart';
class TestCommand extends DartdevCommand<int> {
@ -42,9 +43,15 @@ class TestCommand extends DartdevCommand<int> {
@override
FutureOr<int> run() async {
final command = sdk.pub;
final args = argResults.arguments.toList();
final testArgs = argResults.arguments.toList();
args.insertAll(0, ['run', 'test']);
final args = [
'run',
if (wereExperimentsSpecified)
'--$experimentFlagName=${specifiedExperiments.join(',')}',
'test',
...testArgs,
];
log.trace('$command ${args.join(' ')}');

View file

@ -65,4 +65,26 @@ void main() {
expect(result.stdout, contains('All tests passed!'));
expect(result.stderr, isEmpty);
}, skip: 'https://github.com/dart-lang/sdk/issues/40854');
test('--enable-experiment', () {
p = project(mainSrc: 'int get foo => 1;\n');
p.file('test/foo_test.dart', '''
import 'package:test/test.dart';
void main() {
test('', () {
int a;
a = null;
print('a is \$a.');
});
}
''');
var result = p.runSync('pub', ['get', '--offline']);
expect(result.exitCode, 0);
result = p.runSync('--enable-experiment=non-nullable',
['test', '--no-color', '--reporter', 'expanded']);
expect(result.exitCode, 1);
}, skip: 'https://github.com/dart-lang/sdk/issues/40854');
}