Unverified Commit d3705f3e authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

Add android workflow test (#14260)

Adds unit tests for AndroidWorkflow.runLicenseManager().
parent 74478d18
// Copyright 2018 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 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/android/android_workflow.dart';
import 'package:mockito/mockito.dart';
import 'package:platform/platform.dart';
import 'package:process/process.dart';
import 'package:test/test.dart';
import '../src/common.dart';
import '../src/context.dart';
import '../src/mocks.dart' show MockAndroidSdk, MockProcessManager, MockStdio;
void main() {
AndroidSdk sdk;
MemoryFileSystem fs;
MockProcessManager processManager;
MockStdio stdio;
setUp(() {
sdk = new MockAndroidSdk();
fs = new MemoryFileSystem();
processManager = new MockProcessManager();
stdio = new MockStdio();
});
testUsingContext('runLicenseManager succeeds for version >= 26', () async {
fs.directory('/home/me').createSync(recursive: true);
MockAndroidSdk.createSdkDirectory();
when(sdk.sdkManagerPath).thenReturn('/foo/bar/sdkmanager');
when(sdk.sdkManagerVersion).thenReturn('26.0.0');
expect(await AndroidWorkflow.runLicenseManager(), isTrue);
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
Platform: () => new FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
Stdio: () => stdio,
});
testUsingContext('runLicenseManager errors for version < 26', () async {
fs.directory('/home/me').createSync(recursive: true);
MockAndroidSdk.createSdkDirectory();
when(sdk.sdkManagerPath).thenReturn('/foo/bar/sdkmanager');
when(sdk.sdkManagerVersion).thenReturn('25.0.0');
expect(AndroidWorkflow.runLicenseManager(), throwsToolExit());
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
Platform: () => new FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
Stdio: () => stdio,
});
testUsingContext('runLicenseManager errors when sdkmanager is not found', () async {
fs.directory('/home/me').createSync(recursive: true);
MockAndroidSdk.createSdkDirectory();
when(sdk.sdkManagerPath).thenReturn('/foo/bar/sdkmanager');
processManager.succeed = false;
expect(AndroidWorkflow.runLicenseManager(), throwsToolExit());
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
Platform: () => new FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
Stdio: () => stdio,
});
}
......@@ -109,8 +109,12 @@ typedef Process ProcessFactory(List<String> command);
/// A ProcessManager that starts Processes by delegating to a ProcessFactory.
class MockProcessManager implements ProcessManager {
ProcessFactory processFactory = (List<String> commands) => new MockProcess();
bool succeed = true;
List<String> commands;
@override
bool canRun(dynamic command, { String workingDirectory }) => succeed;
@override
Future<Process> start(
List<dynamic> command, {
......@@ -120,6 +124,12 @@ class MockProcessManager implements ProcessManager {
bool runInShell: false,
ProcessStartMode mode: ProcessStartMode.NORMAL,
}) {
if (!succeed) {
final String executable = command[0];
final List<String> arguments = command.length > 1 ? command.sublist(1) : <String>[];
throw new ProcessException(executable, arguments);
}
commands = command;
return new Future<Process>.value(processFactory(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