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).
|
||||
configuration_engine_dir = build_configuration.type == :debug ? debug_framework_dir : release_framework_dir
|
||||
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
|
||||
build_configuration.build_settings['FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]'] = "\"#{configuration_engine_dir}/#{xcframework_file}\" $(inherited)"
|
||||
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
|
||||
// found in the LICENSE file.
|
||||
|
||||
// @dart = 2.8
|
||||
|
||||
import 'package:file_testing/file_testing.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/io.dart';
|
||||
@ -15,11 +13,12 @@ import '../src/darwin_common.dart';
|
||||
|
||||
void main() {
|
||||
group('iOS app validation', () {
|
||||
String flutterRoot;
|
||||
Directory pluginRoot;
|
||||
String projectRoot;
|
||||
String flutterBin;
|
||||
Directory tempDir;
|
||||
late String flutterRoot;
|
||||
late Directory pluginRoot;
|
||||
late String projectRoot;
|
||||
late String flutterBin;
|
||||
late Directory tempDir;
|
||||
late File hiddenFile;
|
||||
|
||||
setUpAll(() {
|
||||
flutterRoot = getFlutterRoot();
|
||||
@ -30,6 +29,29 @@ void main() {
|
||||
'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.
|
||||
processManager.runSync(<String>[
|
||||
flutterBin,
|
||||
@ -47,22 +69,24 @@ void main() {
|
||||
});
|
||||
|
||||
tearDownAll(() {
|
||||
tryToDelete(hiddenFile);
|
||||
tryToDelete(tempDir);
|
||||
});
|
||||
|
||||
for (final BuildMode buildMode in <BuildMode>[BuildMode.debug, BuildMode.release]) {
|
||||
group('build in ${buildMode.name} mode', () {
|
||||
Directory buildPath;
|
||||
Directory outputApp;
|
||||
Directory frameworkDirectory;
|
||||
Directory outputFlutterFramework;
|
||||
File outputFlutterFrameworkBinary;
|
||||
Directory outputAppFramework;
|
||||
File outputAppFrameworkBinary;
|
||||
File outputPluginFrameworkBinary;
|
||||
late Directory buildPath;
|
||||
late Directory outputApp;
|
||||
late Directory frameworkDirectory;
|
||||
late Directory outputFlutterFramework;
|
||||
late File outputFlutterFrameworkBinary;
|
||||
late Directory outputAppFramework;
|
||||
late File outputAppFrameworkBinary;
|
||||
late File outputPluginFrameworkBinary;
|
||||
late ProcessResult buildResult;
|
||||
|
||||
setUpAll(() {
|
||||
processManager.runSync(<String>[
|
||||
buildResult = processManager.runSync(<String>[
|
||||
flutterBin,
|
||||
...getLocalEngineArguments(),
|
||||
'build',
|
||||
@ -94,6 +118,11 @@ void main() {
|
||||
});
|
||||
|
||||
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(outputAppFrameworkBinary, exists);
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// @dart = 2.8
|
||||
|
||||
import 'package:file_testing/file_testing.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.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
|
||||
|
||||
void tryToDelete(Directory directory) {
|
||||
void tryToDelete(FileSystemEntity fileEntity) {
|
||||
// This should not be necessary, but it turns out that
|
||||
// on Windows it's common for deletions to fail due to
|
||||
// bogus (we think) "access denied" errors.
|
||||
try {
|
||||
if (directory.existsSync()) {
|
||||
directory.deleteSync(recursive: true);
|
||||
if (fileEntity.existsSync()) {
|
||||
fileEntity.deleteSync(recursive: true);
|
||||
}
|
||||
} on FileSystemException catch (error) {
|
||||
// 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.
|
||||
// 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