blob: 4c424bb1bc6284d9ce7d18858029668bab0f5ef8 [file] [log] [blame]
// 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()).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 {}