mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
continue->next in Ruby script (#104296)
This commit is contained in:
parent
8dc5121894
commit
c5d046c00c
@ -60,7 +60,7 @@ def flutter_additional_ios_build_settings(target)
|
|||||||
# Profile can't be derived from the CocoaPods build configuration. Use release framework (for linking only).
|
# Profile can't be derived from the CocoaPods build configuration. Use release framework (for linking only).
|
||||||
configuration_engine_dir = build_configuration.type == :debug ? debug_framework_dir : release_framework_dir
|
configuration_engine_dir = build_configuration.type == :debug ? debug_framework_dir : release_framework_dir
|
||||||
Dir.new(configuration_engine_dir).each_child do |xcframework_file|
|
Dir.new(configuration_engine_dir).each_child do |xcframework_file|
|
||||||
continue if xcframework_file.start_with?(".") # Hidden file, possibly on external disk.
|
next if xcframework_file.start_with?(".") # Hidden file, possibly on external disk.
|
||||||
if xcframework_file.end_with?("-simulator") # ios-arm64_x86_64-simulator
|
if xcframework_file.end_with?("-simulator") # ios-arm64_x86_64-simulator
|
||||||
build_configuration.build_settings['FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]'] = "\"#{configuration_engine_dir}/#{xcframework_file}\" $(inherited)"
|
build_configuration.build_settings['FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]'] = "\"#{configuration_engine_dir}/#{xcframework_file}\" $(inherited)"
|
||||||
elsif xcframework_file.start_with?("ios-") # ios-arm64
|
elsif xcframework_file.start_with?("ios-") # ios-arm64
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:file_testing/file_testing.dart';
|
import 'package:file_testing/file_testing.dart';
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/io.dart';
|
import 'package:flutter_tools/src/base/io.dart';
|
||||||
@ -15,11 +13,12 @@ import '../src/darwin_common.dart';
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('iOS app validation', () {
|
group('iOS app validation', () {
|
||||||
String flutterRoot;
|
late String flutterRoot;
|
||||||
Directory pluginRoot;
|
late Directory pluginRoot;
|
||||||
String projectRoot;
|
late String projectRoot;
|
||||||
String flutterBin;
|
late String flutterBin;
|
||||||
Directory tempDir;
|
late Directory tempDir;
|
||||||
|
late File hiddenFile;
|
||||||
|
|
||||||
setUpAll(() {
|
setUpAll(() {
|
||||||
flutterRoot = getFlutterRoot();
|
flutterRoot = getFlutterRoot();
|
||||||
@ -30,6 +29,29 @@ void main() {
|
|||||||
'flutter',
|
'flutter',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final Directory xcframeworkArtifact = fileSystem.directory(
|
||||||
|
fileSystem.path.join(
|
||||||
|
flutterRoot,
|
||||||
|
'bin',
|
||||||
|
'cache',
|
||||||
|
'artifacts',
|
||||||
|
'engine',
|
||||||
|
'ios',
|
||||||
|
'Flutter.xcframework',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Pre-cache iOS engine Flutter.xcframework artifacts.
|
||||||
|
processManager.runSync(<String>[
|
||||||
|
flutterBin,
|
||||||
|
...getLocalEngineArguments(),
|
||||||
|
'precache',
|
||||||
|
'--ios',
|
||||||
|
], workingDirectory: tempDir.path);
|
||||||
|
|
||||||
|
// Pretend the SDK was on an external drive with stray "._" files in the xcframework
|
||||||
|
hiddenFile = xcframeworkArtifact.childFile('._Info.plist')..createSync();
|
||||||
|
|
||||||
// Test a plugin example app to allow plugins validation.
|
// Test a plugin example app to allow plugins validation.
|
||||||
processManager.runSync(<String>[
|
processManager.runSync(<String>[
|
||||||
flutterBin,
|
flutterBin,
|
||||||
@ -47,22 +69,24 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
tearDownAll(() {
|
tearDownAll(() {
|
||||||
|
tryToDelete(hiddenFile);
|
||||||
tryToDelete(tempDir);
|
tryToDelete(tempDir);
|
||||||
});
|
});
|
||||||
|
|
||||||
for (final BuildMode buildMode in <BuildMode>[BuildMode.debug, BuildMode.release]) {
|
for (final BuildMode buildMode in <BuildMode>[BuildMode.debug, BuildMode.release]) {
|
||||||
group('build in ${buildMode.name} mode', () {
|
group('build in ${buildMode.name} mode', () {
|
||||||
Directory buildPath;
|
late Directory buildPath;
|
||||||
Directory outputApp;
|
late Directory outputApp;
|
||||||
Directory frameworkDirectory;
|
late Directory frameworkDirectory;
|
||||||
Directory outputFlutterFramework;
|
late Directory outputFlutterFramework;
|
||||||
File outputFlutterFrameworkBinary;
|
late File outputFlutterFrameworkBinary;
|
||||||
Directory outputAppFramework;
|
late Directory outputAppFramework;
|
||||||
File outputAppFrameworkBinary;
|
late File outputAppFrameworkBinary;
|
||||||
File outputPluginFrameworkBinary;
|
late File outputPluginFrameworkBinary;
|
||||||
|
late ProcessResult buildResult;
|
||||||
|
|
||||||
setUpAll(() {
|
setUpAll(() {
|
||||||
processManager.runSync(<String>[
|
buildResult = processManager.runSync(<String>[
|
||||||
flutterBin,
|
flutterBin,
|
||||||
...getLocalEngineArguments(),
|
...getLocalEngineArguments(),
|
||||||
'build',
|
'build',
|
||||||
@ -94,6 +118,11 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('flutter build ios builds a valid app', () {
|
testWithoutContext('flutter build ios builds a valid app', () {
|
||||||
|
printOnFailure('Output of flutter build ios:');
|
||||||
|
printOnFailure(buildResult.stdout.toString());
|
||||||
|
printOnFailure(buildResult.stderr.toString());
|
||||||
|
expect(buildResult.exitCode, 0);
|
||||||
|
|
||||||
expect(outputPluginFrameworkBinary, exists);
|
expect(outputPluginFrameworkBinary, exists);
|
||||||
|
|
||||||
expect(outputAppFrameworkBinary, exists);
|
expect(outputAppFrameworkBinary, exists);
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:file_testing/file_testing.dart';
|
import 'package:file_testing/file_testing.dart';
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/io.dart';
|
import 'package:flutter_tools/src/base/io.dart';
|
||||||
|
@ -18,19 +18,19 @@ import 'package:test_api/test_api.dart' hide test; // ignore: deprecated_member_
|
|||||||
|
|
||||||
export 'package:test_api/test_api.dart' hide test, isInstanceOf; // ignore: deprecated_member_use
|
export 'package:test_api/test_api.dart' hide test, isInstanceOf; // ignore: deprecated_member_use
|
||||||
|
|
||||||
void tryToDelete(Directory directory) {
|
void tryToDelete(FileSystemEntity fileEntity) {
|
||||||
// This should not be necessary, but it turns out that
|
// This should not be necessary, but it turns out that
|
||||||
// on Windows it's common for deletions to fail due to
|
// on Windows it's common for deletions to fail due to
|
||||||
// bogus (we think) "access denied" errors.
|
// bogus (we think) "access denied" errors.
|
||||||
try {
|
try {
|
||||||
if (directory.existsSync()) {
|
if (fileEntity.existsSync()) {
|
||||||
directory.deleteSync(recursive: true);
|
fileEntity.deleteSync(recursive: true);
|
||||||
}
|
}
|
||||||
} on FileSystemException catch (error) {
|
} on FileSystemException catch (error) {
|
||||||
// We print this so that it's visible in the logs, to get an idea of how
|
// We print this so that it's visible in the logs, to get an idea of how
|
||||||
// common this problem is, and if any patterns are ever noticed by anyone.
|
// common this problem is, and if any patterns are ever noticed by anyone.
|
||||||
// ignore: avoid_print
|
// ignore: avoid_print
|
||||||
print('Failed to delete ${directory.path}: $error');
|
print('Failed to delete ${fileEntity.path}: $error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user