mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
a48a51b0ff
* Trial PR to use an engine that has the null safety unfork CL in it. * Fix mack specification for test.
68 lines
2.6 KiB
Dart
68 lines
2.6 KiB
Dart
// Copyright 2014 The Flutter 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/file.dart';
|
|
import 'package:flutter_tools/src/platform_plugins.dart';
|
|
import 'package:mockito/mockito.dart';
|
|
import 'package:path/path.dart' as p;
|
|
|
|
import '../src/common.dart';
|
|
import '../src/context.dart';
|
|
|
|
void main() {
|
|
group('AndroidPlugin', () {
|
|
MockFileSystem mockFileSystem;
|
|
MockPathContext pathContext;
|
|
|
|
setUp(() {
|
|
pathContext = MockPathContext();
|
|
when(pathContext.separator).thenReturn('/');
|
|
|
|
mockFileSystem = MockFileSystem();
|
|
when(mockFileSystem.path).thenReturn(pathContext);
|
|
});
|
|
|
|
testUsingContext("throws tool exit if the plugin main class can't be read", () {
|
|
when(pathContext.join('.pub_cache/plugin_a', 'android', 'src', 'main'))
|
|
.thenReturn('.pub_cache/plugin_a/android/src/main');
|
|
|
|
when(pathContext.join('.pub_cache/plugin_a/android/src/main', 'java', 'com/company', 'PluginA.java'))
|
|
.thenReturn('.pub_cache/plugin_a/android/src/main/java/com/company/PluginA.java');
|
|
|
|
when(pathContext.join('.pub_cache/plugin_a/android/src/main', 'kotlin', 'com/company', 'PluginA.kt'))
|
|
.thenReturn('.pub_cache/plugin_a/android/src/main/kotlin/com/company/PluginA.kt');
|
|
|
|
final MockFile pluginJavaMainClass = MockFile();
|
|
when(pluginJavaMainClass.existsSync()).thenReturn(true);
|
|
when(pluginJavaMainClass.readAsStringSync(encoding: anyNamed('encoding'))).thenThrow(const FileSystemException());
|
|
when(mockFileSystem.file('.pub_cache/plugin_a/android/src/main/java/com/company/PluginA.java'))
|
|
.thenReturn(pluginJavaMainClass);
|
|
|
|
final MockFile pluginKotlinMainClass = MockFile();
|
|
when(pluginKotlinMainClass.existsSync()).thenReturn(false);
|
|
when(mockFileSystem.file('.pub_cache/plugin_a/android/src/main/kotlin/com/company/PluginA.kt'))
|
|
.thenReturn(pluginKotlinMainClass);
|
|
|
|
expect(() {
|
|
AndroidPlugin(
|
|
name: 'pluginA',
|
|
package: 'com.company',
|
|
pluginClass: 'PluginA',
|
|
pluginPath: '.pub_cache/plugin_a',
|
|
).toMap();
|
|
}, throwsToolExit(
|
|
message: "Couldn't read file null even though it exists. "
|
|
'Please verify that this file has read permission and try again.'
|
|
));
|
|
}, overrides: <Type, Generator>{
|
|
FileSystem: () => mockFileSystem,
|
|
ProcessManager: () => FakeProcessManager.any(),
|
|
});
|
|
});
|
|
}
|
|
|
|
class MockFile extends Mock implements File {}
|
|
class MockFileSystem extends Mock implements FileSystem {}
|
|
class MockPathContext extends Mock implements p.Context {}
|