a49bea950d
Initial updates, related to https://github.com/dart-lang/sdk/issues/45279. Change-Id: I459e719ad6e92378f9240a612e0bd8229d0fcb2e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192727 Reviewed-by: Devon Carew <devoncarew@google.com>
204 lines
5.2 KiB
Dart
204 lines
5.2 KiB
Dart
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'dart:io';
|
|
|
|
import 'package:path/path.dart' as path;
|
|
import 'package:pub_semver/pub_semver.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import '../experiment_util.dart';
|
|
import '../utils.dart';
|
|
|
|
Future<void> main() async {
|
|
final experiments = await experimentsWithValidation();
|
|
group('test', () => defineTest(experiments), timeout: longTimeout);
|
|
}
|
|
|
|
void defineTest(List<Experiment> experiments) {
|
|
TestProject p;
|
|
|
|
tearDown(() => p?.dispose());
|
|
|
|
test('--help', () {
|
|
p = project();
|
|
|
|
final result = p.runSync(['test', '--help']);
|
|
|
|
expect(result.exitCode, 0);
|
|
expect(result.stdout, startsWith('''
|
|
Runs tests in this package.
|
|
|
|
Usage: pub run test [files or directories...]
|
|
'''));
|
|
expect(result.stderr, isEmpty);
|
|
});
|
|
|
|
test('dart help test', () {
|
|
p = project();
|
|
|
|
final result = p.runSync(['help', 'test']);
|
|
|
|
expect(result.exitCode, 0);
|
|
expect(result.stdout, contains(' tests for a project'));
|
|
expect(result.stderr, isEmpty);
|
|
});
|
|
|
|
test('no pubspec.yaml', () {
|
|
p = project();
|
|
var pubspec = File(path.join(p.dirPath, 'pubspec.yaml'));
|
|
pubspec.deleteSync();
|
|
|
|
var result = p.runSync(['test']);
|
|
|
|
expect(result.stderr, isEmpty);
|
|
expect(result.stdout, '''
|
|
No pubspec.yaml file found - run this command in your project folder.
|
|
''');
|
|
expect(result.exitCode, 65);
|
|
|
|
var resultHelp = p.runSync(['test', '--help']);
|
|
|
|
expect(resultHelp.stderr, isEmpty);
|
|
expect(resultHelp.stdout, '''
|
|
No pubspec.yaml file found - run this command in your project folder.
|
|
|
|
Run tests for a project.
|
|
|
|
Usage: dart test [arguments]
|
|
|
|
|
|
Run "dart help" to see global options.
|
|
''');
|
|
expect(resultHelp.exitCode, 65);
|
|
});
|
|
|
|
test('runs test', () {
|
|
p = project();
|
|
p.file('test/foo_test.dart', '''
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('', () {
|
|
expect(1,1);
|
|
});
|
|
}
|
|
''');
|
|
|
|
// An implicit `pub get` will happen.
|
|
final result = p.runSync(['test', '--no-color', '--reporter', 'expanded']);
|
|
expect(result.stderr, isEmpty);
|
|
expect(result.stdout, contains('All tests passed!'));
|
|
expect(result.exitCode, 0);
|
|
});
|
|
|
|
test('no package:test dependency', () {
|
|
p = project(mainSrc: 'int get foo => 1;\n');
|
|
p.file('pubspec.yaml', '''
|
|
name: ${p.name}
|
|
environment:
|
|
sdk: '>=2.10.0 <3.0.0'
|
|
''');
|
|
p.file('test/foo_test.dart', '''
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('', () {
|
|
expect(1,1);
|
|
});
|
|
}
|
|
''');
|
|
|
|
final result = p.runSync(['test']);
|
|
expect(result.exitCode, 65);
|
|
expect(
|
|
result.stdout,
|
|
contains('You need to add a dev_dependency on package:test'),
|
|
);
|
|
expect(result.stderr, isEmpty);
|
|
expect(result.exitCode, 65);
|
|
|
|
final resultPubAdd = p.runSync(['pub', 'add', 'test']);
|
|
|
|
expect(resultPubAdd.exitCode, 0);
|
|
final result2 = p.runSync(['test', '--no-color', '--reporter', 'expanded']);
|
|
expect(result2.stderr, isEmpty);
|
|
expect(result2.stdout, contains('All tests passed!'));
|
|
expect(result2.exitCode, 0);
|
|
});
|
|
|
|
test('has package:test dependency', () {
|
|
p = project(mainSrc: 'int get foo => 1;\n');
|
|
p.file('test/foo_test.dart', '''
|
|
$dartVersionFilePrefix2_9
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('', () {
|
|
print('hello world');
|
|
});
|
|
}
|
|
''');
|
|
|
|
final result = p.runSync(['test', '--no-color', '--reporter', 'expanded']);
|
|
expect(result.exitCode, 0);
|
|
expect(result.stdout, contains('All tests passed!'));
|
|
expect(result.stderr, isEmpty);
|
|
});
|
|
|
|
group('--enable-experiment', () {
|
|
ProcessResult runTestWithExperimentFlag(String flag) {
|
|
return p.runSync([
|
|
if (flag != null) flag,
|
|
'test',
|
|
'--no-color',
|
|
'--reporter',
|
|
'expanded',
|
|
]);
|
|
}
|
|
|
|
void expectSuccess(String flag) {
|
|
final result = runTestWithExperimentFlag(flag);
|
|
expect(result.stdout, contains('feature enabled'),
|
|
reason: 'stderr: ${result.stderr}');
|
|
expect(result.exitCode, 0,
|
|
reason: 'stdout: ${result.stdout} stderr: ${result.stderr}');
|
|
}
|
|
|
|
void expectFailure(String flag) {
|
|
final result = runTestWithExperimentFlag(flag);
|
|
expect(result.exitCode, isNot(0));
|
|
}
|
|
|
|
for (final experiment in experiments) {
|
|
test(experiment.name, () {
|
|
final currentSdk = Version.parse(Platform.version.split(' ').first);
|
|
p = project(
|
|
mainSrc: experiment.validation,
|
|
sdkConstraint: VersionConstraint.compatibleWith(currentSdk));
|
|
p.file('test/experiment_test.dart', '''
|
|
import 'package:dartdev_temp/main.dart' as imported;
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('testing feature', () {
|
|
imported.main();
|
|
});
|
|
}
|
|
''');
|
|
if (experiment.enabledIn != null) {
|
|
// The experiment has been released - enabling it should have no effect.
|
|
expectSuccess(null);
|
|
expectSuccess('--enable-experiment=${experiment.name}');
|
|
} else {
|
|
expectFailure(null);
|
|
expectFailure('--enable-experiment=no-${experiment.name}');
|
|
expectSuccess('--enable-experiment=${experiment.name}');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|