mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
[flutter_tools] symlink win32 plugins as UWP plugins (#80242)
This commit is contained in:
parent
7c78a05793
commit
d24469374b
|
@ -1088,7 +1088,8 @@ Future<void> _writeWebPluginRegistrant(FlutterProject project, List<Plugin> plug
|
|||
///
|
||||
/// This uses [project.flutterPluginsDependenciesFile], so it should only be
|
||||
/// run after refreshPluginList has been run since the last plugin change.
|
||||
void createPluginSymlinks(FlutterProject project, {bool force = false}) {
|
||||
void createPluginSymlinks(FlutterProject project, {bool force = false, @visibleForTesting FeatureFlags featureFlagsOverride}) {
|
||||
final FeatureFlags localFeatureFlags = featureFlagsOverride ?? featureFlags;
|
||||
Map<String, dynamic> platformPlugins;
|
||||
final String pluginFileContent = _readFileContent(project.flutterPluginsDependenciesFile);
|
||||
if (pluginFileContent != null) {
|
||||
|
@ -1097,24 +1098,24 @@ void createPluginSymlinks(FlutterProject project, {bool force = false}) {
|
|||
}
|
||||
platformPlugins ??= <String, dynamic>{};
|
||||
|
||||
if (featureFlags.isWindowsEnabled && project.windows.existsSync()) {
|
||||
if (localFeatureFlags.isWindowsEnabled && project.windows.existsSync()) {
|
||||
_createPlatformPluginSymlinks(
|
||||
project.windows.pluginSymlinkDirectory,
|
||||
platformPlugins[project.windows.pluginConfigKey] as List<dynamic>,
|
||||
force: force,
|
||||
);
|
||||
}
|
||||
if (featureFlags.isLinuxEnabled && project.linux.existsSync()) {
|
||||
if (localFeatureFlags.isLinuxEnabled && project.linux.existsSync()) {
|
||||
_createPlatformPluginSymlinks(
|
||||
project.linux.pluginSymlinkDirectory,
|
||||
platformPlugins[project.linux.pluginConfigKey] as List<dynamic>,
|
||||
force: force,
|
||||
);
|
||||
}
|
||||
if (featureFlags.isWindowsUwpEnabled && project.windowsUwp.existsSync()) {
|
||||
if (localFeatureFlags.isWindowsUwpEnabled && project.windowsUwp.existsSync()) {
|
||||
_createPlatformPluginSymlinks(
|
||||
project.windowsUwp.pluginSymlinkDirectory,
|
||||
<dynamic>[],
|
||||
platformPlugins[project.windows.pluginConfigKey] as List<dynamic>,
|
||||
force: force,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -14,9 +14,24 @@ import 'package:flutter_tools/src/plugins.dart';
|
|||
import 'package:flutter_tools/src/project.dart';
|
||||
|
||||
import '../../src/common.dart';
|
||||
import '../../src/fakes.dart';
|
||||
|
||||
const TemplateRenderer renderer = MustacheTemplateRenderer();
|
||||
|
||||
const String kPluginDependencies = r'''
|
||||
{
|
||||
"info":"This is a generated file; do not edit or check into version control.",
|
||||
"plugins":{
|
||||
"windows":[
|
||||
{
|
||||
"name":"example","path":"C:\\\\example\\\\",
|
||||
"dependencies":[]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
''';
|
||||
|
||||
void main() {
|
||||
|
||||
testWithoutContext('injects Win32 plugins', () async {
|
||||
|
@ -64,10 +79,31 @@ void main() {
|
|||
contains('#include <test/foo.h>'),
|
||||
);
|
||||
});
|
||||
|
||||
testWithoutContext('Symlink injection treats UWP as Win32', () {
|
||||
final FileSystem fileSystem = MemoryFileSystem.test();
|
||||
setUpProject(fileSystem);
|
||||
final FlutterProject flutterProject = FlutterProject.fromDirectoryTest(fileSystem.currentDirectory);
|
||||
flutterProject.flutterPluginsDependenciesFile.writeAsStringSync(kPluginDependencies);
|
||||
|
||||
createPluginSymlinks(
|
||||
flutterProject,
|
||||
featureFlagsOverride: TestFeatureFlags(isWindowsUwpEnabled: true),
|
||||
);
|
||||
|
||||
expect(flutterProject.windowsUwp.pluginSymlinkDirectory, exists);
|
||||
|
||||
final Link link = flutterProject.windowsUwp.pluginSymlinkDirectory.listSync().single as Link;
|
||||
|
||||
expect(link.path, '/winuwp/flutter/ephemeral/.plugin_symlinks/example');
|
||||
expect(link.targetSync(), r'C:\\example\\');
|
||||
});
|
||||
}
|
||||
|
||||
void setUpProject(FileSystem fileSystem) {
|
||||
fileSystem.file('pubspec.yaml').createSync();
|
||||
fileSystem.file('winuwp/CMakeLists.txt')
|
||||
.createSync(recursive: true);
|
||||
fileSystem.file('winuwp/project_version')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('0');
|
||||
|
|
Loading…
Reference in a new issue