
This patch migrates iOS device listing from using Xcode instruments to using the libimobiledevice tools idevice_id and ideviceinfo. ideviceinfo was previously incompatible with iOS 11 physical devices; this has now been fixed. In 37bb5f1300e67fe590c44bb9ecda653b2967e347 flutter_tools migrated from libimobiledevice-based device listing on iOS to using Xcode instruments to work around the lack of support for iOS 11. Using instruments entails several downsides, including a significantly higher performance hit, and leaking hung DTServiceHub processes in certain cases when a simulator is running, necessitating workarounds in which we watched for, and cleaned up leaked DTServiceHub processes. This patch returns reverts the move to instruments now that it's no longer necessary.
70 lines
2.1 KiB
Dart
70 lines
2.1 KiB
Dart
// Copyright 2015 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.
|
|
|
|
import 'dart:async';
|
|
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
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:mockito/mockito.dart';
|
|
import 'package:process/process.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import '../src/common.dart';
|
|
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']);
|
|
});
|
|
|
|
testUsingContext('no error when no connected devices', () async {
|
|
final DevicesCommand command = new DevicesCommand();
|
|
await createTestCommandRunner(command).run(<String>['devices']);
|
|
expect(testLogger.statusText, contains('No devices detected'));
|
|
}, overrides: <Type, Generator>{
|
|
AndroidSdk: () => null,
|
|
DeviceManager: () => new DeviceManager(),
|
|
ProcessManager: () => new MockProcessManager(),
|
|
});
|
|
});
|
|
}
|
|
|
|
class MockProcessManager extends Mock implements ProcessManager {
|
|
@override
|
|
Future<ProcessResult> run(
|
|
List<dynamic> command, {
|
|
String workingDirectory,
|
|
Map<String, String> environment,
|
|
bool includeParentEnvironment: true,
|
|
bool runInShell: false,
|
|
Encoding stdoutEncoding: SYSTEM_ENCODING,
|
|
Encoding stderrEncoding: SYSTEM_ENCODING,
|
|
}) async {
|
|
return new ProcessResult(0, 0, '', '');
|
|
}
|
|
|
|
@override
|
|
ProcessResult runSync(
|
|
List<dynamic> command, {
|
|
String workingDirectory,
|
|
Map<String, String> environment,
|
|
bool includeParentEnvironment: true,
|
|
bool runInShell: false,
|
|
Encoding stdoutEncoding: SYSTEM_ENCODING,
|
|
Encoding stderrEncoding: SYSTEM_ENCODING,
|
|
}) {
|
|
return new ProcessResult(0, 0, '', '');
|
|
}
|
|
}
|