diff --git a/dev/benchmarks/complex_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/complex_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/complex_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/complex_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/benchmarks/macrobenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/macrobenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/macrobenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/macrobenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/benchmarks/microbenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/microbenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/microbenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/microbenchmarks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/platform_views_layout_hybrid_composition/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/benchmarks/test_apps/stocks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/benchmarks/test_apps/stocks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/benchmarks/test_apps/stocks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/benchmarks/test_apps/stocks/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/channels/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/channels/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/channels/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/channels/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/external_ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/external_ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/external_ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/external_ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/flavors/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/flavors/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/flavors/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/flavors/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/flutter_driver_screenshot_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/flutter_driver_screenshot_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/flutter_driver_screenshot_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/flutter_driver_screenshot_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/ios_app_with_extensions/ios/Podfile b/dev/integration_tests/ios_app_with_extensions/ios/Podfile
index a5fb528244..6b707b6e23 100644
--- a/dev/integration_tests/ios_app_with_extensions/ios/Podfile
+++ b/dev/integration_tests/ios_app_with_extensions/ios/Podfile
@@ -39,7 +39,7 @@ target 'watch Extension' do
use_frameworks!
use_modular_headers!
- pod 'EFQRCode/watchOS', '5.1.6'
+ pod 'EFQRCode', '6.0'
end
post_install do |installer|
diff --git a/dev/integration_tests/ios_app_with_extensions/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/ios_app_with_extensions/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/ios_app_with_extensions/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/ios_app_with_extensions/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/ios_platform_view_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/ios_platform_view_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/ios_platform_view_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/ios_platform_view_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/non_nullable/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/non_nullable/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/non_nullable/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/non_nullable/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/platform_interaction/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/platform_interaction/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/platform_interaction/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/platform_interaction/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/release_smoke_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/release_smoke_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/integration_tests/release_smoke_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/release_smoke_test/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/dev/integration_tests/ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/integration_tests/ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 21a3cc14c7..919434a625 100644
--- a/dev/integration_tests/ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/integration_tests/ui/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,9 +2,6 @@
-
-
+ location = "self:">
diff --git a/dev/manual_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/manual_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/dev/manual_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/dev/manual_tests/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/flutter_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/flutter_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 21a3cc14c7..919434a625 100644
--- a/examples/flutter_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/flutter_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,9 +2,6 @@
-
-
+ location = "self:">
diff --git a/examples/hello_world/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/hello_world/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/hello_world/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/hello_world/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/image_list/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/image_list/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/image_list/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/image_list/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/layers/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/layers/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/layers/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/layers/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/platform_channel/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/platform_channel/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/platform_channel/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/platform_channel/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/platform_channel_swift/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/platform_channel_swift/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/platform_channel_swift/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/platform_channel_swift/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/examples/platform_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/platform_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/examples/platform_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/examples/platform_view/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/packages/flutter_tools/lib/src/base/project_migrator.dart b/packages/flutter_tools/lib/src/base/project_migrator.dart
index 6b666dd43f..1ba453f44e 100644
--- a/packages/flutter_tools/lib/src/base/project_migrator.dart
+++ b/packages/flutter_tools/lib/src/base/project_migrator.dart
@@ -26,6 +26,13 @@ abstract class ProjectMigrator {
}
@protected
+ String migrateFileContents(String fileContents) {
+ return fileContents;
+ }
+
+ @protected
+ /// Calls [migrateLine] per line, then [migrateFileContents]
+ /// including the line migrations.
void processFileLines(File file) {
final List lines = file.readAsLinesSync();
@@ -51,9 +58,16 @@ abstract class ProjectMigrator {
newProjectContents.writeln(newProjectLine);
}
+ final String projectContentsWithMigratedLines = newProjectContents.toString();
+ final String projectContentsWithMigratedContents = migrateFileContents(projectContentsWithMigratedLines);
+ if (projectContentsWithMigratedLines != projectContentsWithMigratedContents) {
+ logger.printTrace('Migrating $basename contents');
+ migrationRequired = true;
+ }
+
if (migrationRequired) {
logger.printStatus('Upgrading $basename');
- file.writeAsStringSync(newProjectContents.toString());
+ file.writeAsStringSync(projectContentsWithMigratedContents);
}
}
}
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index 5ce33fb1d3..2c804097ce 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -25,6 +25,7 @@ import '../reporting/reporting.dart';
import 'code_signing.dart';
import 'devices.dart';
import 'migrations/project_base_configuration_migration.dart';
+import 'migrations/project_build_location_migration.dart';
import 'migrations/remove_framework_link_and_embedding_migration.dart';
import 'migrations/xcode_build_system_migration.dart';
import 'xcodeproj.dart';
@@ -106,6 +107,7 @@ Future buildXcodeProject({
RemoveFrameworkLinkAndEmbeddingMigration(app.project, globals.logger, globals.xcode, globals.flutterUsage),
XcodeBuildSystemMigration(app.project, globals.logger),
ProjectBaseConfigurationMigration(app.project, globals.logger),
+ ProjectBuildLocationMigration(app.project, globals.logger),
];
final ProjectMigration migration = ProjectMigration(migrators);
diff --git a/packages/flutter_tools/lib/src/ios/migrations/project_build_location_migration.dart b/packages/flutter_tools/lib/src/ios/migrations/project_build_location_migration.dart
new file mode 100644
index 0000000000..e0bed32027
--- /dev/null
+++ b/packages/flutter_tools/lib/src/ios/migrations/project_build_location_migration.dart
@@ -0,0 +1,49 @@
+// 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 '../../base/file_system.dart';
+import '../../base/logger.dart';
+import '../../base/project_migrator.dart';
+import '../../project.dart';
+
+// Update the xcodeproj build location. Legacy build location does not work with Swift Packages.
+class ProjectBuildLocationMigration extends ProjectMigrator {
+ ProjectBuildLocationMigration(
+ IosProject project,
+ Logger logger,
+ ) : _xcodeProjectWorkspaceData = project.xcodeProjectWorkspaceData,
+ super(logger);
+
+ final File _xcodeProjectWorkspaceData;
+
+ @override
+ bool migrate() {
+ if (!_xcodeProjectWorkspaceData.existsSync()) {
+ logger.printTrace('Xcode project workspace data not found, skipping build location migration.');
+ return true;
+ }
+
+ processFileLines(_xcodeProjectWorkspaceData);
+ return true;
+ }
+
+ @override
+ String migrateLine(String line) {
+ const String legacyBuildLocation = 'location = "group:Runner.xcodeproj"';
+ const String defaultBuildLocation = 'location = "self:"';
+
+ return line.replaceAll(legacyBuildLocation, defaultBuildLocation);
+ }
+
+ @override
+ String migrateFileContents(String fileContents) {
+ const String podLocation = '''
+
+
+''';
+
+ return fileContents.replaceAll(podLocation, '');
+ }
+}
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index 26df37dd98..e400365d3b 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -446,6 +446,11 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
@override
File get xcodeProjectInfoFile => xcodeProject.childFile('project.pbxproj');
+ File get xcodeProjectWorkspaceData =>
+ xcodeProject
+ .childDirectory('project.xcworkspace')
+ .childFile('contents.xcworkspacedata');
+
@override
Directory get xcodeWorkspace => hostAppRoot.childDirectory('$_hostAppProjectName.xcworkspace');
diff --git a/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata
index 1d526a16ed..919434a625 100644
--- a/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata
+++ b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/packages/flutter_tools/test/general.shard/ios/ios_project_migration_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_project_migration_test.dart
index f1f59aba67..4be588b2cd 100644
--- a/packages/flutter_tools/test/general.shard/ios/ios_project_migration_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/ios_project_migration_test.dart
@@ -5,10 +5,9 @@
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/logger.dart';
-import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/base/project_migrator.dart';
import 'package:flutter_tools/src/ios/migrations/project_base_configuration_migration.dart';
+import 'package:flutter_tools/src/ios/migrations/project_build_location_migration.dart';
import 'package:flutter_tools/src/ios/migrations/remove_framework_link_and_embedding_migration.dart';
import 'package:flutter_tools/src/ios/migrations/xcode_build_system_migration.dart';
import 'package:flutter_tools/src/macos/xcode.dart';
@@ -49,15 +48,7 @@ void main () {
memoryFileSystem = MemoryFileSystem.test();
mockXcode = MockXcode();
xcodeProjectInfoFile = memoryFileSystem.file('project.pbxproj');
-
- testLogger = BufferLogger(
- terminal: AnsiTerminal(
- stdio: null,
- platform: const LocalPlatform(),
- ),
- outputPreferences: OutputPreferences.test(),
- );
-
+ testLogger = BufferLogger.test();
mockIosProject = MockIosProject();
when(mockIosProject.xcodeProjectInfoFile).thenReturn(xcodeProjectInfoFile);
});
@@ -267,15 +258,7 @@ keep this 2
setUp(() {
memoryFileSystem = MemoryFileSystem.test();
xcodeWorkspaceSharedSettings = memoryFileSystem.file('WorkspaceSettings.xcsettings');
-
- testLogger = BufferLogger(
- terminal: AnsiTerminal(
- stdio: null,
- platform: const LocalPlatform(),
- ),
- outputPreferences: OutputPreferences.test(),
- );
-
+ testLogger = BufferLogger.test();
mockIosProject = MockIosProject();
when(mockIosProject.xcodeWorkspaceSharedSettings).thenReturn(xcodeWorkspaceSharedSettings);
});
@@ -338,6 +321,85 @@ keep this 2
});
});
+ group('Xcode default build location', () {
+ MemoryFileSystem memoryFileSystem;
+ BufferLogger testLogger;
+ MockIosProject mockIosProject;
+ File xcodeProjectWorkspaceData;
+
+ setUp(() {
+ memoryFileSystem = MemoryFileSystem();
+ xcodeProjectWorkspaceData = memoryFileSystem.file('contents.xcworkspacedata');
+ testLogger = BufferLogger.test();
+ mockIosProject = MockIosProject();
+ when(mockIosProject.xcodeProjectWorkspaceData).thenReturn(xcodeProjectWorkspaceData);
+ });
+
+ testWithoutContext('skipped if files are missing', () {
+ final ProjectBuildLocationMigration iosProjectMigration = ProjectBuildLocationMigration(
+ mockIosProject,
+ testLogger,
+ );
+ expect(iosProjectMigration.migrate(), isTrue);
+ expect(xcodeProjectWorkspaceData.existsSync(), isFalse);
+
+ expect(testLogger.traceText, contains('Xcode project workspace data not found, skipping build location migration.'));
+ expect(testLogger.statusText, isEmpty);
+ });
+
+ testWithoutContext('skipped if nothing to upgrade', () {
+ const String contents = '''
+
+
+
+
+ ''';
+ xcodeProjectWorkspaceData.writeAsStringSync(contents);
+
+ final ProjectBuildLocationMigration iosProjectMigration = ProjectBuildLocationMigration(
+ mockIosProject,
+ testLogger,
+ );
+ expect(iosProjectMigration.migrate(), isTrue);
+ expect(xcodeProjectWorkspaceData.existsSync(), isTrue);
+ expect(testLogger.statusText, isEmpty);
+ });
+
+ testWithoutContext('Xcode project is migrated', () {
+ const String contents = '''
+
+
+
+
+
+
+
+''';
+ xcodeProjectWorkspaceData.writeAsStringSync(contents);
+
+ final ProjectBuildLocationMigration iosProjectMigration = ProjectBuildLocationMigration(
+ mockIosProject,
+ testLogger,
+ );
+ expect(iosProjectMigration.migrate(), isTrue);
+ expect(xcodeProjectWorkspaceData.readAsStringSync(), '''
+
+
+
+
+
+''');
+ expect(testLogger.statusText, contains('Upgrading contents.xcworkspacedata'));
+ });
+ });
+
group('remove Runner project base configuration', () {
MemoryFileSystem memoryFileSystem;
BufferLogger testLogger;
@@ -345,17 +407,9 @@ keep this 2
File xcodeProjectInfoFile;
setUp(() {
- memoryFileSystem = MemoryFileSystem.test();
+ memoryFileSystem = MemoryFileSystem();
xcodeProjectInfoFile = memoryFileSystem.file('project.pbxproj');
-
- testLogger = BufferLogger(
- terminal: AnsiTerminal(
- stdio: null,
- platform: const LocalPlatform(),
- ),
- outputPreferences: OutputPreferences.test(),
- );
-
+ testLogger = BufferLogger.test();
mockIosProject = MockIosProject();
when(mockIosProject.xcodeProjectInfoFile).thenReturn(xcodeProjectInfoFile);
});