Unverified Commit 2b8556b6 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] remove last android sdk mock (#81620)

parent a3bcaf22
...@@ -9,12 +9,11 @@ import 'package:flutter_tools/src/android/android_sdk.dart'; ...@@ -9,12 +9,11 @@ import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/base/config.dart'; import 'package:flutter_tools/src/base/config.dart';
import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/globals_null_migrated.dart' as globals;
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import '../../src/common.dart'; import '../../src/common.dart';
import '../../src/context.dart'; import '../../src/context.dart';
import '../../src/mocks.dart';
void main() { void main() {
MemoryFileSystem fileSystem; MemoryFileSystem fileSystem;
...@@ -27,7 +26,7 @@ void main() { ...@@ -27,7 +26,7 @@ void main() {
config = Config.test(); config = Config.test();
}); });
group('android_sdk AndroidSdk', () { group('AndroidSdk', () {
Directory sdkDir; Directory sdkDir;
tearDown(() { tearDown(() {
...@@ -38,7 +37,7 @@ void main() { ...@@ -38,7 +37,7 @@ void main() {
}); });
testUsingContext('parse sdk', () { testUsingContext('parse sdk', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -51,7 +50,7 @@ void main() { ...@@ -51,7 +50,7 @@ void main() {
}); });
testUsingContext('parse sdk N', () { testUsingContext('parse sdk N', () {
sdkDir = MockAndroidSdk.createSdkDirectory(withAndroidN: true); sdkDir = createSdkDirectory(withAndroidN: true, fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -64,7 +63,7 @@ void main() { ...@@ -64,7 +63,7 @@ void main() {
}); });
testUsingContext('returns sdkmanager path under cmdline tools on Linux/macOS', () { testUsingContext('returns sdkmanager path under cmdline tools on Linux/macOS', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -81,7 +80,7 @@ void main() { ...@@ -81,7 +80,7 @@ void main() {
}); });
testUsingContext('returns sdkmanager path under cmdline tools (highest version) on Linux/macOS', () { testUsingContext('returns sdkmanager path under cmdline tools (highest version) on Linux/macOS', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -101,7 +100,7 @@ void main() { ...@@ -101,7 +100,7 @@ void main() {
}); });
testUsingContext('Caches adb location after first access', () { testUsingContext('Caches adb location after first access', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -122,7 +121,7 @@ void main() { ...@@ -122,7 +121,7 @@ void main() {
}); });
testUsingContext('returns sdkmanager.bat path under cmdline tools for windows', () { testUsingContext('returns sdkmanager.bat path under cmdline tools for windows', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -140,7 +139,7 @@ void main() { ...@@ -140,7 +139,7 @@ void main() {
}); });
testUsingContext("returns sdkmanager path under tools if cmdline doesn't exist", () { testUsingContext("returns sdkmanager path under tools if cmdline doesn't exist", () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -154,7 +153,7 @@ void main() { ...@@ -154,7 +153,7 @@ void main() {
}); });
testUsingContext("returns sdkmanager path under tools if cmdline doesn't exist on windows", () { testUsingContext("returns sdkmanager path under tools if cmdline doesn't exist on windows", () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -168,7 +167,7 @@ void main() { ...@@ -168,7 +167,7 @@ void main() {
}); });
testUsingContext('returns sdkmanager version', () { testUsingContext('returns sdkmanager version', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
processManager.addCommand( processManager.addCommand(
const FakeCommand( const FakeCommand(
...@@ -190,7 +189,7 @@ void main() { ...@@ -190,7 +189,7 @@ void main() {
}); });
testUsingContext('returns validate sdk is well formed', () { testUsingContext('returns validate sdk is well formed', () {
sdkDir = createSdkDirectory( sdkDir = createBrokenSdkDirectory(
fileSystem: fileSystem, fileSystem: fileSystem,
); );
processManager.addCommand(const FakeCommand(command: <String>[ processManager.addCommand(const FakeCommand(command: <String>[
...@@ -213,7 +212,7 @@ void main() { ...@@ -213,7 +212,7 @@ void main() {
}); });
testUsingContext('does not throw on sdkmanager version check failure', () { testUsingContext('does not throw on sdkmanager version check failure', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
processManager.addCommand( processManager.addCommand(
const FakeCommand( const FakeCommand(
...@@ -238,7 +237,7 @@ void main() { ...@@ -238,7 +237,7 @@ void main() {
}); });
testUsingContext('throws on sdkmanager version check if sdkmanager not found', () { testUsingContext('throws on sdkmanager version check if sdkmanager not found', () {
sdkDir = MockAndroidSdk.createSdkDirectory(withSdkManager: false); sdkDir = createSdkDirectory(withSdkManager: false, fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
processManager.excludedExecutables.add('/.tmp_rand0/flutter_mock_android_sdk.rand0/tools/bin/sdkmanager'); processManager.excludedExecutables.add('/.tmp_rand0/flutter_mock_android_sdk.rand0/tools/bin/sdkmanager');
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -252,7 +251,7 @@ void main() { ...@@ -252,7 +251,7 @@ void main() {
}); });
testUsingContext('returns avdmanager path under cmdline tools', () { testUsingContext('returns avdmanager path under cmdline tools', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -269,7 +268,7 @@ void main() { ...@@ -269,7 +268,7 @@ void main() {
}); });
testUsingContext('returns avdmanager path under cmdline tools on windows', () { testUsingContext('returns avdmanager path under cmdline tools on windows', () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -286,7 +285,7 @@ void main() { ...@@ -286,7 +285,7 @@ void main() {
}); });
testUsingContext("returns avdmanager path under tools if cmdline doesn't exist", () { testUsingContext("returns avdmanager path under tools if cmdline doesn't exist", () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -303,7 +302,7 @@ void main() { ...@@ -303,7 +302,7 @@ void main() {
}); });
testUsingContext("returns avdmanager path under tools if cmdline doesn't exist on windows", () { testUsingContext("returns avdmanager path under tools if cmdline doesn't exist on windows", () {
sdkDir = MockAndroidSdk.createSdkDirectory(); sdkDir = createSdkDirectory(fileSystem: fileSystem);
config.setValue('android-sdk', sdkDir.path); config.setValue('android-sdk', sdkDir.path);
final AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
...@@ -322,7 +321,7 @@ void main() { ...@@ -322,7 +321,7 @@ void main() {
} }
/// A broken SDK installation. /// A broken SDK installation.
Directory createSdkDirectory({ Directory createBrokenSdkDirectory({
bool withAndroidN = false, bool withAndroidN = false,
bool withSdkManager = true, bool withSdkManager = true,
@required FileSystem fileSystem, @required FileSystem fileSystem,
...@@ -348,3 +347,53 @@ void _createSdkFile(Directory dir, String filePath, { String contents }) { ...@@ -348,3 +347,53 @@ void _createSdkFile(Directory dir, String filePath, { String contents }) {
file.writeAsStringSync(contents, flush: true); file.writeAsStringSync(contents, flush: true);
} }
} }
Directory createSdkDirectory({
bool withAndroidN = false,
bool withSdkManager = true,
bool withPlatformTools = true,
bool withBuildTools = true,
@required FileSystem fileSystem,
}) {
final Directory dir = fileSystem.systemTempDirectory.createTempSync('flutter_mock_android_sdk.');
final String exe = globals.platform.isWindows ? '.exe' : '';
final String bat = globals.platform.isWindows ? '.bat' : '';
void createDir(Directory dir, String path) {
final Directory directory = dir.fileSystem.directory(dir.fileSystem.path.join(dir.path, path));
directory.createSync(recursive: true);
}
createDir(dir, 'licenses');
if (withPlatformTools) {
_createSdkFile(dir, 'platform-tools/adb$exe');
}
if (withBuildTools) {
_createSdkFile(dir, 'build-tools/19.1.0/aapt$exe');
_createSdkFile(dir, 'build-tools/22.0.1/aapt$exe');
_createSdkFile(dir, 'build-tools/23.0.2/aapt$exe');
if (withAndroidN) {
_createSdkFile(dir, 'build-tools/24.0.0-preview/aapt$exe');
}
}
_createSdkFile(dir, 'platforms/android-22/android.jar');
_createSdkFile(dir, 'platforms/android-23/android.jar');
if (withAndroidN) {
_createSdkFile(dir, 'platforms/android-N/android.jar');
_createSdkFile(dir, 'platforms/android-N/build.prop', contents: _buildProp);
}
if (withSdkManager) {
_createSdkFile(dir, 'tools/bin/sdkmanager$bat');
}
return dir;
}
const String _buildProp = r'''
ro.build.version.incremental=1624448
ro.build.version.sdk=24
ro.build.version.codename=REL
''';
...@@ -6,76 +6,12 @@ ...@@ -6,76 +6,12 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_tools/src/android/android_sdk.dart' show AndroidSdk;
import 'package:flutter_tools/src/base/file_system.dart' hide IOSink;
import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/globals_null_migrated.dart' as globals;
import 'package:mockito/mockito.dart'; import 'package:mockito/mockito.dart';
import 'package:process/process.dart'; import 'package:process/process.dart';
import 'fakes.dart'; import 'fakes.dart';
/// An SDK installation with several SDK levels (19, 22, 23).
class MockAndroidSdk extends Mock implements AndroidSdk {
static Directory createSdkDirectory({
bool withAndroidN = false,
bool withSdkManager = true,
bool withPlatformTools = true,
bool withBuildTools = true,
}) {
final Directory dir = globals.fs.systemTempDirectory.createTempSync('flutter_mock_android_sdk.');
final String exe = globals.platform.isWindows ? '.exe' : '';
final String bat = globals.platform.isWindows ? '.bat' : '';
_createDir(dir, 'licenses');
if (withPlatformTools) {
_createSdkFile(dir, 'platform-tools/adb$exe');
}
if (withBuildTools) {
_createSdkFile(dir, 'build-tools/19.1.0/aapt$exe');
_createSdkFile(dir, 'build-tools/22.0.1/aapt$exe');
_createSdkFile(dir, 'build-tools/23.0.2/aapt$exe');
if (withAndroidN) {
_createSdkFile(dir, 'build-tools/24.0.0-preview/aapt$exe');
}
}
_createSdkFile(dir, 'platforms/android-22/android.jar');
_createSdkFile(dir, 'platforms/android-23/android.jar');
if (withAndroidN) {
_createSdkFile(dir, 'platforms/android-N/android.jar');
_createSdkFile(dir, 'platforms/android-N/build.prop', contents: _buildProp);
}
if (withSdkManager) {
_createSdkFile(dir, 'tools/bin/sdkmanager$bat');
}
return dir;
}
static void _createSdkFile(Directory dir, String filePath, { String contents }) {
final File file = dir.childFile(filePath);
file.createSync(recursive: true);
if (contents != null) {
file.writeAsStringSync(contents, flush: true);
}
}
static void _createDir(Directory dir, String path) {
final Directory directory = globals.fs.directory(globals.fs.path.join(dir.path, path));
directory.createSync(recursive: true);
}
static const String _buildProp = r'''
ro.build.version.incremental=1624448
ro.build.version.sdk=24
ro.build.version.codename=REL
''';
}
/// A strategy for creating Process objects from a list of commands. /// A strategy for creating Process objects from a list of commands.
typedef _ProcessFactory = Process Function(List<String> command); typedef _ProcessFactory = Process Function(List<String> command);
......
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