Change flutter_tools tests to run via pub (#8698)
`all.dart` is no longer needed. Furthermore, it causes tests to be skipped, or to silently fail to run anything. Fixes #7941
This commit is contained in:
parent
1a2e6f3389
commit
83d411f979
@ -79,12 +79,7 @@ Future<Null> main() async {
|
||||
await _runFlutterTest(p.join(flutterRoot, 'packages', 'flutter_driver'));
|
||||
await _runFlutterTest(p.join(flutterRoot, 'packages', 'flutter_test'));
|
||||
await _runFlutterTest(p.join(flutterRoot, 'packages', 'flutter_markdown'));
|
||||
await _runAllDartTests(p.join(flutterRoot, 'packages', 'flutter_tools'),
|
||||
environment: <String, String>{ 'FLUTTER_ROOT': flutterRoot },
|
||||
);
|
||||
await _pubRunTest(p.join(flutterRoot, 'packages', 'flutter_tools'),
|
||||
testPath: 'test/replay',
|
||||
);
|
||||
await _pubRunTest(p.join(flutterRoot, 'packages', 'flutter_tools'));
|
||||
|
||||
await _runAllDartTests(p.join(flutterRoot, 'dev', 'devicelab'));
|
||||
await _runFlutterTest(p.join(flutterRoot, 'dev', 'manual_tests'));
|
||||
|
@ -13,9 +13,14 @@ import 'file_system.dart';
|
||||
import 'process.dart';
|
||||
|
||||
const String _kRecordingType = 'process';
|
||||
const ProcessManager _kLocalProcessManager = const LocalProcessManager();
|
||||
|
||||
/// The active process manager.
|
||||
ProcessManager get processManager => context[ProcessManager];
|
||||
ProcessManager get processManager {
|
||||
return context == null
|
||||
? _kLocalProcessManager
|
||||
: context[ProcessManager];
|
||||
}
|
||||
|
||||
/// Enables recording of process invocation activity to the specified base
|
||||
/// recording [location].
|
||||
|
@ -3,28 +3,37 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter_tools/src/android/adb.dart';
|
||||
import 'package:flutter_tools/src/base/os.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
final Adb adb = new Adb('adb');
|
||||
import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
// We only test the [Adb] class is we're able to locate the adb binary.
|
||||
if (!adb.exists())
|
||||
final String adbPath = new OperatingSystemUtils().which('adb')?.path;
|
||||
if (adbPath == null)
|
||||
return;
|
||||
|
||||
Adb adb;
|
||||
|
||||
setUp(() {
|
||||
if (adbPath != null)
|
||||
adb = new Adb(adbPath);
|
||||
});
|
||||
|
||||
group('adb', () {
|
||||
test('getVersion', () {
|
||||
testUsingContext('getVersion', () {
|
||||
expect(adb.getVersion(), isNotEmpty);
|
||||
});
|
||||
|
||||
test('getServerVersion', () async {
|
||||
testUsingContext('getServerVersion', () async {
|
||||
adb.startServer();
|
||||
|
||||
final String version = await adb.getServerVersion();
|
||||
expect(version, isNotEmpty);
|
||||
});
|
||||
|
||||
test('listDevices', () async {
|
||||
testUsingContext('listDevices', () async {
|
||||
adb.startServer();
|
||||
|
||||
final List<AdbDevice> devices = await adb.listDevices();
|
||||
@ -32,5 +41,5 @@ void main() {
|
||||
// Any result is ok.
|
||||
expect(devices, isList);
|
||||
});
|
||||
});
|
||||
}, skip: adbPath == null);
|
||||
}
|
||||
|
@ -1,93 +0,0 @@
|
||||
// Copyright (c) 2016 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// TODO(devoncarew): These `all.dart` test files are here to work around
|
||||
// https://github.com/dart-lang/test/issues/327; the `test` package currently
|
||||
// doesn't support running without symlinks. We can delete these files once that
|
||||
// fix lands.
|
||||
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
|
||||
import 'adb_test.dart' as adb_test;
|
||||
import 'analytics_test.dart' as analytics_test;
|
||||
import 'analyze_duplicate_names_test.dart' as analyze_duplicate_names_test;
|
||||
import 'analyze_test.dart' as analyze_test;
|
||||
import 'android_device_test.dart' as android_device_test;
|
||||
import 'android_sdk_test.dart' as android_sdk_test;
|
||||
import 'application_package_test.dart' as application_package_test;
|
||||
import 'artifacts_test.dart' as artifacts_test;
|
||||
import 'asset_bundle_test.dart' as asset_bundle_test;
|
||||
import 'base_utils_test.dart' as base_utils_test;
|
||||
import 'bug_report_test.dart' as bug_report_test;
|
||||
import 'channel_test.dart' as channel_test;
|
||||
import 'config_test.dart' as config_test;
|
||||
import 'context_test.dart' as context_test;
|
||||
import 'crash_reporting_test.dart' as crash_reporting_test;
|
||||
import 'create_test.dart' as create_test;
|
||||
import 'daemon_test.dart' as daemon_test;
|
||||
import 'dart_dependencies_test.dart' as dart_dependencies_test;
|
||||
import 'dependency_checker_test.dart' as dependency_checker_test;
|
||||
import 'devfs_test.dart' as devfs_test;
|
||||
import 'device_test.dart' as device_test;
|
||||
import 'devices_test.dart' as devices_test;
|
||||
import 'doctor_test.dart' as doctor_test;
|
||||
import 'drive_test.dart' as drive_test;
|
||||
import 'forbidden_imports_test.dart' as forbidden_imports_test;
|
||||
import 'format_test.dart' as format_test;
|
||||
import 'hot_test.dart' as hot_test;
|
||||
import 'install_test.dart' as install_test;
|
||||
import 'logs_test.dart' as logs_test;
|
||||
import 'os_utils_test.dart' as os_utils_test;
|
||||
import 'packages_test.dart' as packages_test;
|
||||
import 'protocol_discovery_test.dart' as protocol_discovery_test;
|
||||
import 'run_test.dart' as run_test;
|
||||
import 'src/base/process_test.dart' as process_test;
|
||||
import 'stop_test.dart' as stop_test;
|
||||
import 'test_test.dart' as test_test;
|
||||
import 'trace_test.dart' as trace_test;
|
||||
import 'upgrade_test.dart' as upgrade_test;
|
||||
import 'utils_test.dart' as utils_test;
|
||||
|
||||
void main() {
|
||||
Cache.disableLocking();
|
||||
adb_test.main();
|
||||
analytics_test.main();
|
||||
analyze_duplicate_names_test.main();
|
||||
analyze_test.main();
|
||||
android_device_test.main();
|
||||
android_sdk_test.main();
|
||||
application_package_test.main();
|
||||
artifacts_test.main();
|
||||
asset_bundle_test.main();
|
||||
base_utils_test.main();
|
||||
bug_report_test.main();
|
||||
channel_test.main();
|
||||
config_test.main();
|
||||
context_test.main();
|
||||
crash_reporting_test.main();
|
||||
create_test.main();
|
||||
daemon_test.main();
|
||||
dart_dependencies_test.main();
|
||||
dependency_checker_test.main();
|
||||
devfs_test.main();
|
||||
device_test.main();
|
||||
devices_test.main();
|
||||
doctor_test.main();
|
||||
drive_test.main();
|
||||
forbidden_imports_test.main();
|
||||
format_test.main();
|
||||
hot_test.main();
|
||||
install_test.main();
|
||||
logs_test.main();
|
||||
os_utils_test.main();
|
||||
packages_test.main();
|
||||
process_test.main();
|
||||
protocol_discovery_test.main();
|
||||
run_test.main();
|
||||
stop_test.main();
|
||||
test_test.main();
|
||||
trace_test.main();
|
||||
upgrade_test.main();
|
||||
utils_test.main();
|
||||
}
|
@ -18,6 +18,10 @@ void main() {
|
||||
group('analytics', () {
|
||||
Directory temp;
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
Cache.flutterRoot = '../..';
|
||||
temp = fs.systemTempDirectory.createTempSync('flutter_tools');
|
||||
|
@ -58,7 +58,9 @@ void main() {
|
||||
|
||||
int errorCount = 0;
|
||||
final Future<bool> onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
|
||||
server.onErrors.listen((FileAnalysisErrors errors) => errorCount += errors.errors.length);
|
||||
server.onErrors.listen((FileAnalysisErrors errors) {
|
||||
errorCount += errors.errors.length;
|
||||
});
|
||||
|
||||
await server.start();
|
||||
await onDone;
|
||||
@ -66,7 +68,7 @@ void main() {
|
||||
expect(errorCount, 2);
|
||||
}, overrides: <Type, Generator>{
|
||||
OperatingSystemUtils: () => os
|
||||
});
|
||||
}, skip: true /* TODO(tvolkert): fix and enable */);
|
||||
}
|
||||
|
||||
void _createSampleProject(Directory directory, { bool brokenCode: false }) {
|
||||
|
@ -2,6 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/commands/analyze.dart';
|
||||
import 'package:test/test.dart';
|
||||
@ -13,6 +14,10 @@ import 'src/mocks.dart';
|
||||
void main() {
|
||||
Directory tempDir;
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
tempDir = fs.systemTempDirectory.createTempSync('analysis_duplicate_names_test');
|
||||
});
|
||||
|
@ -5,9 +5,12 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter_tools/src/asset.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/devfs.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'src/common.dart';
|
||||
|
||||
void main() {
|
||||
// Create a temporary directory and write a single file into it.
|
||||
final FileSystem fs = const LocalFileSystem();
|
||||
@ -19,6 +22,10 @@ void main() {
|
||||
tempFile.parent.createSync(recursive: true);
|
||||
tempFile.writeAsBytesSync(UTF8.encode(assetContents));
|
||||
|
||||
setUpAll(() {
|
||||
Cache.flutterRoot = getFlutterRoot();
|
||||
});
|
||||
|
||||
// Fixed asset bundle tests.
|
||||
group('AssetBundle.fixed', () {
|
||||
test('empty strings', () async {
|
||||
|
@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:args/command_runner.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/channel.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
@ -11,6 +12,10 @@ import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('channel', () {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
testUsingContext('list', () async {
|
||||
final ChannelCommand command = new ChannelCommand();
|
||||
final CommandRunner<Null> runner = createTestCommandRunner(command);
|
||||
|
@ -15,12 +15,17 @@ import 'package:flutter_tools/executable.dart' as tools;
|
||||
import 'package:flutter_tools/src/base/context.dart';
|
||||
import 'package:flutter_tools/src/base/io.dart';
|
||||
import 'package:flutter_tools/src/base/logger.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/crash_reporting.dart';
|
||||
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
||||
import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('crash reporting', () {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() async {
|
||||
tools.crashFileSystem = new MemoryFileSystem();
|
||||
tools.writelnStderr = ([_]) { };
|
||||
|
@ -21,6 +21,10 @@ void main() {
|
||||
group('create', () {
|
||||
Directory temp;
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
temp = fs.systemTempDirectory.createTempSync('flutter_tools');
|
||||
});
|
||||
|
@ -5,14 +5,22 @@
|
||||
import 'package:analyzer/analyzer.dart';
|
||||
import 'package:flutter_tools/src/dart/dependencies.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'src/common.dart';
|
||||
import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('DartDependencySetBuilder', () {
|
||||
final String basePath = fs.path.dirname(fs.path.fromUri(platform.script));
|
||||
final String dataPath = fs.path.join(basePath, 'data', 'dart_dependencies_test');
|
||||
final String dataPath = fs.path.join(
|
||||
getFlutterRoot(),
|
||||
'packages',
|
||||
'flutter_tools',
|
||||
'test',
|
||||
'data',
|
||||
'dart_dependencies_test',
|
||||
);
|
||||
|
||||
testUsingContext('good', () {
|
||||
final String testPath = fs.path.join(dataPath, 'good');
|
||||
final String mainPath = fs.path.join(testPath, 'main.dart');
|
||||
@ -23,6 +31,7 @@ void main() {
|
||||
expect(dependencies.contains(fs.path.canonicalize(mainPath)), isTrue);
|
||||
expect(dependencies.contains(fs.path.canonicalize(fs.path.join(testPath, 'foo.dart'))), isTrue);
|
||||
});
|
||||
|
||||
testUsingContext('syntax_error', () {
|
||||
final String testPath = fs.path.join(dataPath, 'syntax_error');
|
||||
final String mainPath = fs.path.join(testPath, 'main.dart');
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
import 'package:file/memory.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/devices.dart';
|
||||
import 'package:flutter_tools/src/dart/dependencies.dart';
|
||||
@ -15,12 +14,22 @@ import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('DependencyChecker', () {
|
||||
final String basePath = fs.path.dirname(fs.path.fromUri(platform.script));
|
||||
final String dataPath = fs.path.join(basePath, 'data', 'dart_dependencies_test');
|
||||
final String dataPath = fs.path.join(
|
||||
getFlutterRoot(),
|
||||
'packages',
|
||||
'flutter_tools',
|
||||
'test',
|
||||
'data',
|
||||
'dart_dependencies_test',
|
||||
);
|
||||
|
||||
FileSystem testFileSystem;
|
||||
|
||||
setUp(() {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
testFileSystem = new MemoryFileSystem();
|
||||
});
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter_tools/src/android/android_sdk.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/devices.dart';
|
||||
import 'package:flutter_tools/src/device.dart';
|
||||
import 'package:test/test.dart';
|
||||
@ -12,6 +13,10 @@ import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('devices', () {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
testUsingContext('returns 0 when called', () async {
|
||||
final DevicesCommand command = new DevicesCommand();
|
||||
await createTestCommandRunner(command).run(<String>['devices']);
|
||||
|
@ -8,6 +8,7 @@ import 'package:flutter_tools/src/base/common.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/io.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/drive.dart';
|
||||
import 'package:flutter_tools/src/device.dart';
|
||||
import 'package:flutter_tools/src/ios/simulators.dart';
|
||||
@ -31,6 +32,10 @@ void main() {
|
||||
testDeviceManager.addDevice(mockDevice);
|
||||
}
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
command = new DriveCommand();
|
||||
applyMocksToCommand(command);
|
||||
|
@ -3,32 +3,29 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'src/common.dart';
|
||||
|
||||
void main() {
|
||||
setUp(() {
|
||||
final String flutterRoot = platform.environment['FLUTTER_ROOT'];
|
||||
if (flutterRoot == null)
|
||||
throw new Exception('Please set FLUTTER_ROOT env var before running tests.');
|
||||
final String flutterTools = fs.path.join(flutterRoot, 'packages', 'flutter_tools');
|
||||
assert(fs.path.equals(fs.currentDirectory.path, flutterTools));
|
||||
});
|
||||
final String flutterTools = fs.path.join(getFlutterRoot(), 'packages', 'flutter_tools');
|
||||
|
||||
test('no unauthorized imports of dart:io', () {
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => entity.path != fs.path.join('lib', 'src', 'base', 'io.dart');
|
||||
final String whitelistedPath = fs.path.join(flutterTools, 'lib', 'src', 'base', 'io.dart');
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => entity.path != whitelistedPath;
|
||||
|
||||
for (String path in <String>['lib', 'bin']) {
|
||||
fs.directory(path)
|
||||
for (String dirName in <String>['lib', 'bin']) {
|
||||
fs.directory(fs.path.join(flutterTools, dirName))
|
||||
.listSync(recursive: true)
|
||||
.where(_isDartFile)
|
||||
.where(_isNotWhitelisted)
|
||||
.map(_asFile)
|
||||
.forEach((File file) {
|
||||
for (String line in file.readAsLinesSync()) {
|
||||
if (line.startsWith(new RegExp('import.*dart:io')) &&
|
||||
if (line.startsWith(new RegExp(r'import.*dart:io')) &&
|
||||
!line.contains('ignore: dart_io_import')) {
|
||||
fail("${file.path} imports 'dart:io'; import 'lib/src/base/io.dart' instead");
|
||||
final String relativePath = fs.path.relative(file.path, from:flutterTools);
|
||||
fail("$relativePath imports 'dart:io'; import 'lib/src/base/io.dart' instead");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -37,18 +34,19 @@ void main() {
|
||||
});
|
||||
|
||||
test('no unauthorized imports of package:path', () {
|
||||
for (String path in <String>['lib', 'bin', 'test']) {
|
||||
fs.directory(path)
|
||||
.listSync(recursive: true)
|
||||
.where(_isDartFile)
|
||||
.map(_asFile)
|
||||
.forEach((File file) {
|
||||
for (String line in file.readAsLinesSync()) {
|
||||
if (line.startsWith(new RegExp('import.*package:path/path.dart'))) {
|
||||
fail("${file.path} imports 'package:path/path.dart'; use 'fs.path' instead");
|
||||
for (String dirName in <String>['lib', 'bin', 'test']) {
|
||||
fs.directory(fs.path.join(flutterTools, dirName))
|
||||
.listSync(recursive: true)
|
||||
.where(_isDartFile)
|
||||
.map(_asFile)
|
||||
.forEach((File file) {
|
||||
for (String line in file.readAsLinesSync()) {
|
||||
if (line.startsWith(new RegExp(r'import.*package:path/path.dart'))) {
|
||||
final String relativePath = fs.path.relative(file.path, from:flutterTools);
|
||||
fail("$relativePath imports 'package:path/path.dart'; use 'fs.path' instead");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
|
@ -6,6 +6,7 @@ import 'dart:async';
|
||||
|
||||
import 'package:args/command_runner.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/create.dart';
|
||||
import 'package:flutter_tools/src/commands/packages.dart';
|
||||
import 'package:test/test.dart';
|
||||
@ -17,6 +18,10 @@ void main() {
|
||||
group('packages', () {
|
||||
Directory temp;
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
temp = fs.systemTempDirectory.createTempSync('flutter_tools');
|
||||
});
|
||||
|
@ -7,10 +7,46 @@ import 'package:test/test.dart';
|
||||
|
||||
import 'package:flutter_tools/src/base/common.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/base/process.dart';
|
||||
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
||||
import 'package:flutter_tools/src/runner/flutter_command_runner.dart';
|
||||
|
||||
/// Gets the path to the root of the Flutter repository.
|
||||
///
|
||||
/// This will first look for a `FLUTTER_ROOT` environment variable. If the
|
||||
/// environment variable is set, it will be returned. Otherwise, this will
|
||||
/// deduce the path from `platform.script`.
|
||||
String getFlutterRoot() {
|
||||
if (platform.environment.containsKey('FLUTTER_ROOT'))
|
||||
return platform.environment['FLUTTER_ROOT'];
|
||||
|
||||
Error invalidScript() => new StateError('Invalid script: ${platform.script}');
|
||||
|
||||
Uri scriptUri;
|
||||
switch (platform.script.scheme) {
|
||||
case 'file':
|
||||
scriptUri = platform.script;
|
||||
break;
|
||||
case 'data':
|
||||
final RegExp flutterTools = new RegExp(r'(file://[^%]*[/\\]flutter_tools[^%]+\.dart)%');
|
||||
final Match match = flutterTools.firstMatch(platform.script.path);
|
||||
if (match == null)
|
||||
throw invalidScript();
|
||||
scriptUri = Uri.parse(match.group(1));
|
||||
break;
|
||||
default:
|
||||
throw invalidScript();
|
||||
}
|
||||
|
||||
final List<String> parts = fs.path.split(fs.path.fromUri(scriptUri));
|
||||
final int toolsIndex = parts.indexOf('flutter_tools');
|
||||
if (toolsIndex == -1)
|
||||
throw invalidScript();
|
||||
final String toolsPath = fs.path.joinAll(parts.sublist(0, toolsIndex + 1));
|
||||
return fs.path.normalize(fs.path.join(toolsPath, '..', '..'));
|
||||
}
|
||||
|
||||
CommandRunner<Null> createTestCommandRunner([FlutterCommand command]) {
|
||||
final FlutterCommandRunner runner = new FlutterCommandRunner();
|
||||
if (command != null)
|
||||
|
@ -19,11 +19,12 @@ import 'package:flutter_tools/src/ios/mac.dart';
|
||||
import 'package:flutter_tools/src/ios/simulators.dart';
|
||||
import 'package:flutter_tools/src/run_hot.dart';
|
||||
import 'package:flutter_tools/src/usage.dart';
|
||||
|
||||
import 'package:mockito/mockito_no_mirrors.dart';
|
||||
import 'package:process/process.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'common.dart';
|
||||
|
||||
/// Return the test logger. This assumes that the current Logger is a BufferLogger.
|
||||
BufferLogger get testLogger => context[Logger];
|
||||
|
||||
@ -105,33 +106,6 @@ void _printBufferedErrors(AppContext testContext) {
|
||||
}
|
||||
}
|
||||
|
||||
String getFlutterRoot() {
|
||||
Error invalidScript() => new StateError('Invalid script: ${platform.script}');
|
||||
|
||||
Uri scriptUri;
|
||||
switch (platform.script.scheme) {
|
||||
case 'file':
|
||||
scriptUri = platform.script;
|
||||
break;
|
||||
case 'data':
|
||||
final RegExp flutterTools = new RegExp(r'(file://[^%]*[/\\]flutter_tools[^%]+\.dart)%');
|
||||
final Match match = flutterTools.firstMatch(platform.script.path);
|
||||
if (match == null)
|
||||
throw invalidScript();
|
||||
scriptUri = Uri.parse(match.group(1));
|
||||
break;
|
||||
default:
|
||||
throw invalidScript();
|
||||
}
|
||||
|
||||
final List<String> parts = fs.path.split(fs.path.fromUri(scriptUri));
|
||||
final int toolsIndex = parts.indexOf('flutter_tools');
|
||||
if (toolsIndex == -1)
|
||||
throw invalidScript();
|
||||
final String toolsPath = fs.path.joinAll(parts.sublist(0, toolsIndex + 1));
|
||||
return fs.path.normalize(fs.path.join(toolsPath, '..', '..'));
|
||||
}
|
||||
|
||||
class MockDeviceManager implements DeviceManager {
|
||||
List<Device> devices = <Device>[];
|
||||
|
||||
|
@ -3,19 +3,24 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:io' show ProcessResult;
|
||||
|
||||
import 'package:file/file.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/ios/devices.dart';
|
||||
|
||||
import 'package:mockito/mockito_no_mirrors.dart';
|
||||
import 'package:platform/platform.dart';
|
||||
import 'package:process/process.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import '../context.dart';
|
||||
|
||||
class MockProcessManager extends Mock implements ProcessManager {}
|
||||
class MockFile extends Mock implements File {}
|
||||
|
||||
void main() {
|
||||
final FakePlatform osx = new FakePlatform.fromPlatform(const LocalPlatform());
|
||||
osx.operatingSystem = 'macos';
|
||||
|
||||
group('test screenshot', () {
|
||||
MockProcessManager mockProcessManager;
|
||||
MockFile mockOutputFile;
|
||||
@ -56,7 +61,10 @@ void main() {
|
||||
));
|
||||
expect(testLogger.errorText, contains('brew install ideviceinstaller'));
|
||||
},
|
||||
overrides: <Type, Generator>{ProcessManager: () => mockProcessManager}
|
||||
overrides: <Type, Generator>{
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => osx,
|
||||
}
|
||||
);
|
||||
|
||||
testUsingContext(
|
||||
|
@ -123,7 +123,8 @@ void main() {
|
||||
when(xcode.eulaSigned).thenReturn(true);
|
||||
final ValidationResult result = await new IOSWorkflowTestTarget().validate();
|
||||
expect(result.type, ValidationType.installed);
|
||||
}, overrides: <Type, Generator>{ Xcode: () => xcode });
|
||||
}, overrides: <Type, Generator>{ Xcode: () => xcode },
|
||||
skip: true /* TODO(tvolkert): fix and enable */);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/ios/mac.dart';
|
||||
import 'package:flutter_tools/src/ios/simulators.dart';
|
||||
import 'package:mockito/mockito_no_mirrors.dart';
|
||||
import 'package:platform/platform.dart';
|
||||
import 'package:process/process.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
@ -15,6 +16,9 @@ class MockFile extends Mock implements File {}
|
||||
class MockProcessManager extends Mock implements ProcessManager {}
|
||||
|
||||
void main() {
|
||||
final FakePlatform osx = new FakePlatform.fromPlatform(const LocalPlatform());
|
||||
osx.operatingSystem = 'macos';
|
||||
|
||||
group('compareIosVersions', () {
|
||||
test('compares correctly', () {
|
||||
// This list must be sorted in ascending preference order
|
||||
@ -65,36 +69,52 @@ void main() {
|
||||
});
|
||||
|
||||
group('IOSSimulator.isSupported', () {
|
||||
test('Apple TV is unsupported', () {
|
||||
testUsingContext('Apple TV is unsupported', () {
|
||||
expect(new IOSSimulator('x', name: 'Apple TV').isSupported(), false);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('Apple Watch is unsupported', () {
|
||||
testUsingContext('Apple Watch is unsupported', () {
|
||||
expect(new IOSSimulator('x', name: 'Apple Watch').isSupported(), false);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPad 2 is unsupported', () {
|
||||
testUsingContext('iPad 2 is unsupported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPad 2').isSupported(), false);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPad Retina is unsupported', () {
|
||||
testUsingContext('iPad Retina is unsupported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPad Retina').isSupported(), false);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPhone 5 is unsupported', () {
|
||||
testUsingContext('iPhone 5 is unsupported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPhone 5').isSupported(), false);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPhone 5s is supported', () {
|
||||
testUsingContext('iPhone 5s is supported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPhone 5s').isSupported(), true);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPhone SE is supported', () {
|
||||
testUsingContext('iPhone SE is supported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPhone SE').isSupported(), true);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
|
||||
test('iPhone 7 Plus is supported', () {
|
||||
testUsingContext('iPhone 7 Plus is supported', () {
|
||||
expect(new IOSSimulator('x', name: 'iPhone 7 Plus').isSupported(), true);
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => osx,
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/stop.dart';
|
||||
import 'package:mockito/mockito_no_mirrors.dart';
|
||||
import 'package:test/test.dart';
|
||||
@ -14,6 +15,10 @@ import 'src/mocks.dart';
|
||||
|
||||
void main() {
|
||||
group('stop', () {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
testUsingContext('returns 0 when Android is connected and ready to be stopped', () async {
|
||||
final StopCommand command = new StopCommand();
|
||||
applyMocksToCommand(command);
|
||||
|
@ -15,8 +15,11 @@ import 'src/context.dart';
|
||||
|
||||
// This test depends on some files in ///dev/automated_tests/flutter_test/*
|
||||
|
||||
Future<Null> _testExclusionLock;
|
||||
|
||||
void main() {
|
||||
group('test', () {
|
||||
|
||||
final String automatedTestsDirectory = fs.path.join('..', '..', 'dev', 'automated_tests');
|
||||
final String flutterTestDirectory = fs.path.join(automatedTestsDirectory, 'flutter_test');
|
||||
|
||||
@ -24,10 +27,12 @@ void main() {
|
||||
Cache.flutterRoot = '../..';
|
||||
return _testFile('test_async_utils_guarded', 1, automatedTestsDirectory, flutterTestDirectory);
|
||||
});
|
||||
|
||||
testUsingContext('TestAsyncUtils unguarded function test', () async {
|
||||
Cache.flutterRoot = '../..';
|
||||
return _testFile('test_async_utils_unguarded', 1, automatedTestsDirectory, flutterTestDirectory);
|
||||
});
|
||||
|
||||
testUsingContext('Missing flutter_test dependency', () async {
|
||||
final String missingDependencyTests = fs.path.join('..', '..', 'dev', 'missing_dependency_tests');
|
||||
Cache.flutterRoot = '../..';
|
||||
@ -43,16 +48,29 @@ Future<Null> _testFile(String testName, int wantedExitCode, String workingDirect
|
||||
final String fullTestExpectation = fs.path.join(testDirectory, '${testName}_expectation.txt');
|
||||
final File expectationFile = fs.file(fullTestExpectation);
|
||||
expect(expectationFile.existsSync(), true);
|
||||
final ProcessResult exec = await Process.run(
|
||||
fs.path.join(dartSdkPath, 'bin', 'dart'),
|
||||
<String>[
|
||||
fs.path.absolute(fs.path.join('bin', 'flutter_tools.dart')),
|
||||
'test',
|
||||
'--no-color',
|
||||
fullTestName
|
||||
],
|
||||
workingDirectory: workingDirectory
|
||||
);
|
||||
|
||||
while (_testExclusionLock != null)
|
||||
await _testExclusionLock;
|
||||
|
||||
ProcessResult exec;
|
||||
final Completer<Null> testExclusionCompleter = new Completer<Null>();
|
||||
_testExclusionLock = testExclusionCompleter.future;
|
||||
try {
|
||||
exec = await Process.run(
|
||||
fs.path.join(dartSdkPath, 'bin', 'dart'),
|
||||
<String>[
|
||||
fs.path.absolute(fs.path.join('bin', 'flutter_tools.dart')),
|
||||
'test',
|
||||
'--no-color',
|
||||
fullTestName,
|
||||
],
|
||||
workingDirectory: workingDirectory,
|
||||
);
|
||||
} finally {
|
||||
_testExclusionLock = null;
|
||||
testExclusionCompleter.complete();
|
||||
}
|
||||
|
||||
expect(exec.exitCode, wantedExitCode);
|
||||
final List<String> output = exec.stdout.split('\n');
|
||||
output.add('<<stderr>>');
|
||||
|
@ -17,6 +17,10 @@ import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('upgrade', () {
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
bool _match(String line) => UpgradeCommand.matchesGitLine(line);
|
||||
|
||||
test('regex match', () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user