diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml index 4652b9fec6..d367baad8a 100644 --- a/.bcr/presubmit.yml +++ b/.bcr/presubmit.yml @@ -1,7 +1,11 @@ +matrix: + bazel: ["7.x", "rolling"] + tasks: verify_targets: name: Verify build targets - platform: macos + platform: macos_arm64 + bazel: ${{ bazel }} test_targets: - '@rules_apple//examples/macos/CommandLine:ExamplesBuildTest' test_flags: diff --git a/MODULE.bazel b/MODULE.bazel index 111a28cbb9..e6f781c452 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( repo_name = "build_bazel_rules_apple", ) -bazel_dep(name = "apple_support", version = "1.12.0", repo_name = "build_bazel_apple_support") +bazel_dep(name = "apple_support", version = "1.14.0", repo_name = "build_bazel_apple_support") bazel_dep(name = "bazel_skylib", version = "1.3.0") bazel_dep(name = "platforms", version = "0.0.7") bazel_dep(name = "rules_swift", version = "1.16.0", repo_name = "build_bazel_rules_swift") diff --git a/apple/BUILD b/apple/BUILD index 7bb43b8ef0..7bab0297f4 100644 --- a/apple/BUILD +++ b/apple/BUILD @@ -1,5 +1,5 @@ -load(":cc_toolchain_forwarder.bzl", "cc_toolchain_forwarder") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load(":cc_toolchain_forwarder.bzl", "cc_toolchain_forwarder") package(default_visibility = ["//visibility:public"]) @@ -27,6 +27,7 @@ licenses(["notice"]) "watchos_arm64_32", "watchos_x86_64", "watchos_device_arm64", + "watchos_device_arm64e", ] ] diff --git a/apple/internal/apple_framework_import.bzl b/apple/internal/apple_framework_import.bzl index b5eb11d1b5..0b35bffd82 100644 --- a/apple/internal/apple_framework_import.bzl +++ b/apple/internal/apple_framework_import.bzl @@ -276,7 +276,11 @@ def _apple_dynamic_framework_import_impl(ctx): deps = deps, disabled_features = disabled_features, features = features, - framework_includes = _framework_search_paths(framework.header_imports), + framework_includes = _framework_search_paths( + framework.header_imports + + framework.swift_interface_imports + + framework.swift_module_imports, + ), header_imports = framework.header_imports, kind = "dynamic", label = label, diff --git a/apple/internal/bundling_support.bzl b/apple/internal/bundling_support.bzl index 30f0dcccb8..0c96222a52 100644 --- a/apple/internal/bundling_support.bzl +++ b/apple/internal/bundling_support.bzl @@ -377,7 +377,7 @@ def _validate_bundle_id(bundle_id): # handled by the split(), so just have to check for '-'. for i in range(len(part)): ch = part[i] - if ch != "-" and not ch.isalnum(): + if ch not in ["-", "_"] and not ch.isalnum(): fail("Invalid character(s) in bundle_id: \"%s\"" % bundle_id) # Define the loadable module that lists the exported symbols in this file. diff --git a/apple/internal/experimental_mixed_language_library.bzl b/apple/internal/experimental_mixed_language_library.bzl index 3031f17eb3..ad0a2278a5 100644 --- a/apple/internal/experimental_mixed_language_library.bzl +++ b/apple/internal/experimental_mixed_language_library.bzl @@ -312,11 +312,13 @@ target only contains Objective-C files.""") swift_copts += header_map_ctx.swift_copts # Generate module map for the underlying Obj-C module + # This is the modulemap used exclusively by the swift_library + # as such we export all the headers including the private ones so they can be found in the Swift module. objc_module_map_name = name + ".internal.objc" textual_hdrs = kwargs.get("textual_hdrs", []) _module_map( name = objc_module_map_name, - hdrs = hdrs, + hdrs = hdrs + private_hdrs, module_name = module_name, textual_hdrs = textual_hdrs, testonly = testonly, diff --git a/apple/internal/partials/app_intents_metadata_bundle.bzl b/apple/internal/partials/app_intents_metadata_bundle.bzl index 02b81282af..008709210f 100644 --- a/apple/internal/partials/app_intents_metadata_bundle.bzl +++ b/apple/internal/partials/app_intents_metadata_bundle.bzl @@ -46,6 +46,9 @@ def _app_intents_metadata_bundle_partial_impl( # This binary should only contain symbols for structs implementing the AppIntents protocol. # Instead of containing all the application/extension/framework binary symbols, allowing # the action to run faster and avoid depending on the application binary linking step. + # + # TODO(b/295227222): Avoid this linker step for Xcode 15.0+ when rules_swift supports the new + # swiftconstvalues-based manner of handling App Intents metadata. link_result = linking_support.link_multi_arch_binary( actions = actions, cc_toolchains = cc_toolchains, @@ -54,9 +57,16 @@ def _app_intents_metadata_bundle_partial_impl( disabled_features = disabled_features, features = features, label = label, - # Allow `_main` to be undefined since none of the AppIntents implementing dependencies - # should include this entry point, and we only care about linking all AppIntents symbols. - user_link_flags = ["-Wl,-U,_main"], + user_link_flags = [ + # Force _NSExtensionMain, which exists on all Apple platforms, to + # be the main symbol for the binary, just so any main symbol will + # exist. Since this binary is discarded afterwards the main symbol + # doesn't actually matter. This can be removed when the TODO above + # is resolved. + "-Wl,-e,_NSExtensionMain", + # Force the binary to link Foundation to make the hack above work. + "-Wl,-framework,Foundation", + ], ) fat_stub_binary = intermediates.file( diff --git a/apple/internal/partials/debug_symbols.bzl b/apple/internal/partials/debug_symbols.bzl index a7351a5d32..c2595f39ba 100644 --- a/apple/internal/partials/debug_symbols.bzl +++ b/apple/internal/partials/debug_symbols.bzl @@ -106,7 +106,7 @@ def _collect_linkmaps( return outputs -def _copy_dsyms_into_declared_bundle( +def _generate_dsym_binaries( *, actions, debug_output_filename, @@ -303,13 +303,21 @@ def _bundle_dsym_files( found_binaries_by_arch.update(dsym_binaries) if found_binaries_by_arch: - output_files = _copy_dsyms_into_declared_bundle( + generated_dsym_binaries = _generate_dsym_binaries( actions = actions, debug_output_filename = dsym_output_filename, dsym_bundle_name = dsym_bundle_name, found_binaries_by_arch = found_binaries_by_arch, platform_prerequisites = platform_prerequisites, ) + output_files.extend(generated_dsym_binaries) + dsyms_command = (" && ".join([ + "cp \"{dsym_path}\" \"${{OUTPUT_DIR}}/Contents/Resources/DWARF/{dsym_bundle_name}\"".format( + dsym_path = dsym_binary.path, + dsym_bundle_name = dsym_output_filename, + ) + for dsym_binary in generated_dsym_binaries + ])) # If we found any binaries, create the Info.plist for the bundle as well. dsym_plist = _generate_dsym_info_plist( @@ -334,9 +342,9 @@ def _bundle_dsym_files( apple_support.run_shell( actions = actions, apple_fragment = platform_prerequisites.apple_fragment, - inputs = [dsym_plist] + found_binaries_by_arch.values(), + inputs = generated_dsym_binaries + [dsym_plist] + found_binaries_by_arch.values(), outputs = [dsym_bundle_dir], - command = ("mkdir -p \"${OUTPUT_DIR}/Contents/Resources/DWARF\" && " + plist_command), + command = ("mkdir -p \"${OUTPUT_DIR}/Contents/Resources/DWARF\" && " + dsyms_command + " && " + plist_command), env = { "OUTPUT_DIR": dsym_bundle_dir.path, }, diff --git a/apple/internal/rule_factory.bzl b/apple/internal/rule_factory.bzl index 0749508bdf..0f404667fd 100644 --- a/apple/internal/rule_factory.bzl +++ b/apple/internal/rule_factory.bzl @@ -135,7 +135,7 @@ def _create_apple_rule( cfg = cfg, doc = doc, executable = is_executable, - fragments = ["apple", "cpp", "objc"], + fragments = ["apple", "cpp", "objc", "j2objc"], toolchains = toolchains, **extra_args ) diff --git a/apple/repositories.bzl b/apple/repositories.bzl index ee6b8d35c9..648ff39e3c 100644 --- a/apple/repositories.bzl +++ b/apple/repositories.bzl @@ -114,8 +114,8 @@ def apple_rules_dependencies(ignore_version_differences = False, include_bzlmod_ _maybe( http_archive, name = "build_bazel_apple_support", - sha256 = "100d12617a84ebc7ee7a10ecf3b3e2fdadaebc167ad93a21f820a6cb60158ead", - url = "https://github.com/bazelbuild/apple_support/releases/download/1.12.0/apple_support.1.12.0.tar.gz", + sha256 = "a8ba6fd09d0ffeba9b5f398f3a46262470fe0addddb4ef5afa7eab18d001a7b0", + url = "https://github.com/bazelbuild/apple_support/releases/download/1.14.0/apple_support.1.14.0.tar.gz", ignore_version_differences = ignore_version_differences, ) diff --git a/doc/frameworks.md b/doc/frameworks.md index 1151877ad0..2c3bcb9fae 100644 --- a/doc/frameworks.md +++ b/doc/frameworks.md @@ -245,53 +245,3 @@ apple_dynamic_framework_import( ``` ![Framework imports](frameworks4.png) - -## Migration - -`apple_dynamic_framework_import` and `apple_static_framework_import` are -Starlark replacement rules for the native `objc_framework` rule, which is -deprecated and slated to be removed in Q1-19. The following is an example of how -migration will happen for `objc_framework` targets for Dynamic Frameworks: - -```build -objc_framework( - name = "MyPrebuiltDynamicFramework", - framework_imports = glob(["MyPrebuiltDynamicFramework.framework/**"]), - is_dynamic = 1, - sdk_dylibs = [...], - sdk_frameworks = [...], - weak_sdk_frameworks = [...], -) - -apple_dynamic_framework_import( - name = "MyPrebuildDynamicFramework", - framework_imports = glob(["MyPrebuiltDynamicFramework.framework/**"]), -) -``` - -Notice that the `sdk_frameworks`, `weak_sdk_frameworks` and `sdk_dylibs` were -removed. This is because Dynamic Frameworks are already linked, and this -information should already be encoded in the binary. If your build starts -failing after this change, it means that the import was masking another library -that required an extra SDK framework/dylib. That library should be fixed -instead. - -For Static Frameworks, migration would look like this: - -```build -objc_framework( - name = "MyPrebuiltStaticFramework", - framework_imports = glob(["MyPrebuiltStaticFramework.framework/**"]), - sdk_dylibs = [...], - sdk_frameworks = [...] - weak_sdk_frameworks = [...], -) - -apple_static_framework_import( - name = "MyPrebuildStaticFramework", - framework_imports = glob(["MyPrebuiltStaticFramework.framework/**"]), - sdk_dylibs = [...], - sdk_frameworks = [...] - weak_sdk_frameworks = [...], -) -``` diff --git a/examples/ios/HelloWorldSwift/BUILD b/examples/ios/HelloWorldSwift/BUILD index 9c486b15d0..92f6a88071 100644 --- a/examples/ios/HelloWorldSwift/BUILD +++ b/examples/ios/HelloWorldSwift/BUILD @@ -8,11 +8,10 @@ licenses(["notice"]) swift_library( name = "Sources", srcs = [ - "Sources/AppDelegate.swift", + "Sources/BazelApp.swift", ], data = [ "Resources/HelloWorldSwift.docc", - "Resources/Main.storyboard", ], module_name = "Sources", tags = ["manual"], @@ -49,7 +48,7 @@ ios_unit_test( genrule( name = "CreateTestCoverageManifest", - srcs = ["Sources/AppDelegate.swift"], + srcs = ["Sources/BazelApp.swift"], outs = [ "CoverageManifest.instrumented_files", ], diff --git a/examples/ios/HelloWorldSwift/Info.plist b/examples/ios/HelloWorldSwift/Info.plist index 4194cb6319..4d7195e512 100644 --- a/examples/ios/HelloWorldSwift/Info.plist +++ b/examples/ios/HelloWorldSwift/Info.plist @@ -2,35 +2,33 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + diff --git a/examples/ios/HelloWorldSwift/Resources/Main.storyboard b/examples/ios/HelloWorldSwift/Resources/Main.storyboard deleted file mode 100644 index 1bf5befe82..0000000000 --- a/examples/ios/HelloWorldSwift/Resources/Main.storyboard +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/ios/HelloWorldSwift/Sources/AppDelegate.swift b/examples/ios/HelloWorldSwift/Sources/BazelApp.swift similarity index 55% rename from examples/ios/HelloWorldSwift/Sources/AppDelegate.swift rename to examples/ios/HelloWorldSwift/Sources/BazelApp.swift index 6dc25a5a8b..a9d70174fd 100644 --- a/examples/ios/HelloWorldSwift/Sources/AppDelegate.swift +++ b/examples/ios/HelloWorldSwift/Sources/BazelApp.swift @@ -12,29 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -import UIKit +import SwiftUI -// Shim to compile with older Xcodes. -#if !swift(>=4.2) -extension UIApplication { - typealias LaunchOptionsKey = UIApplicationLaunchOptionsKey -} -#endif - -/// The ``AppDelegate`` for the application. -/// This class is the entry point for the application and is responsible for the lifecycle of it. -@UIApplicationMain -public class AppDelegate: NSObject, UIApplicationDelegate { - - /// The window of the application. - public var window: UIWindow? - - /// The start of the application. - public func application( - _ application: UIApplication, - didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey : Any]? - ) -> Bool { - return true +@main +struct BazelApp: App { + var body: some Scene { + WindowGroup { + Text("Hello World") + .accessibility(identifier: "HELLO_WORLD") + } } /// A foo API to test DooC documentation generation. diff --git a/examples/ios/HelloWorldSwift/Tests/Tests.swift b/examples/ios/HelloWorldSwift/Tests/Tests.swift index 921828f8ad..9d5fa358f6 100644 --- a/examples/ios/HelloWorldSwift/Tests/Tests.swift +++ b/examples/ios/HelloWorldSwift/Tests/Tests.swift @@ -3,6 +3,6 @@ import XCTest final class HelloWorldSwiftTests: XCTestCase { func testInit() { - XCTAssertNotNil(AppDelegate()) + XCTAssertNotNil(BazelApp()) } } diff --git a/examples/ios/HelloWorldSwift/Tests/UITests.swift b/examples/ios/HelloWorldSwift/Tests/UITests.swift index 0a7518164f..3a0192e07e 100644 --- a/examples/ios/HelloWorldSwift/Tests/UITests.swift +++ b/examples/ios/HelloWorldSwift/Tests/UITests.swift @@ -17,6 +17,6 @@ class HelloWorldSwiftUITests: XCTestCase { } func testIsActive() { - XCTAssertTrue(application.staticTexts["Hello World"].exists) + XCTAssertTrue(application.staticTexts["HELLO_WORLD"].exists) } } diff --git a/examples/multi_platform/MixedLib/BUILD b/examples/multi_platform/MixedLib/BUILD index fc5e9077ee..58a9f95a99 100644 --- a/examples/multi_platform/MixedLib/BUILD +++ b/examples/multi_platform/MixedLib/BUILD @@ -10,6 +10,7 @@ experimental_mixed_language_library( srcs = [ "MixedAnswer.m", "MixedAnswer.swift", + "MixedAnswerPrivate.h", # private header support ], hdrs = ["MixedAnswer.h"], enable_modules = True, diff --git a/examples/multi_platform/MixedLib/MixedAnswer.swift b/examples/multi_platform/MixedLib/MixedAnswer.swift index 5e670c5a1d..6edee7e2c2 100644 --- a/examples/multi_platform/MixedLib/MixedAnswer.swift +++ b/examples/multi_platform/MixedLib/MixedAnswer.swift @@ -8,6 +8,11 @@ public class MixedAnswerSwift: NSObject { "\(MixedAnswerObjc.mixedAnswerObjc() ?? "invalid")_swiftMixedAnswer" } + public + static func swiftMixedAnswerPrivate() -> String { + "\(MixedAnswerPrivateObjc.mixedAnswerPrivateObjc() ?? "invalid")_swiftPrivateMixedAnswer" + } + @objc public static func swiftToObjcMixedAnswer() -> String { diff --git a/examples/multi_platform/MixedLib/MixedAnswerPrivate.h b/examples/multi_platform/MixedLib/MixedAnswerPrivate.h new file mode 100644 index 0000000000..e95268d59e --- /dev/null +++ b/examples/multi_platform/MixedLib/MixedAnswerPrivate.h @@ -0,0 +1,7 @@ +@import Foundation; + +@interface MixedAnswerPrivateObjc : NSObject + ++ (NSString *)mixedAnswerPrivateObjc; + +@end diff --git a/platform_mappings b/platform_mappings index 713740331a..da82b541dd 100644 --- a/platform_mappings +++ b/platform_mappings @@ -75,6 +75,14 @@ platforms: --apple_platform_type=watchos --cpu=watchos_arm64_32 + @build_bazel_apple_support//platforms:watchos_device_arm64 + --apple_platform_type=watchos + --cpu=watchos_device_arm64 + + @build_bazel_apple_support//platforms:watchos_device_arm64e + --apple_platform_type=watchos + --cpu=watchos_device_arm64e + flags: --cpu=darwin_x86_64 --apple_platform_type=macos diff --git a/test/apple_shell_testutils.sh b/test/apple_shell_testutils.sh index 2744b2d10b..1d6df0b313 100755 --- a/test/apple_shell_testutils.sh +++ b/test/apple_shell_testutils.sh @@ -30,7 +30,7 @@ export MIN_OS_TVOS_NPLUS1="13.0" export MIN_OS_MACOS="10.13" export MIN_OS_MACOS_NPLUS1="10.14" -export MIN_OS_WATCHOS="4.0" +export MIN_OS_WATCHOS="7.0" # Usage: assert_exists # @@ -384,7 +384,7 @@ function current_archs() { value="$(echo "$option" | cut -d= -f2)" else # Eliminate `sim_` prefixes from `cpu`s as it is not part of the arch. - value="$(echo "$option" | cut -d= -f2 | sed 's/sim_//g')" + value="$(echo "$option" | cut -d= -f2 | sed -e 's/sim_//g' -e 's/device_//g')" fi echo "$value" | tr "," "\n" return diff --git a/test/configurations.bzl b/test/configurations.bzl index 47d83012bb..3f9b984bb4 100644 --- a/test/configurations.bzl +++ b/test/configurations.bzl @@ -79,7 +79,6 @@ WATCHOS_SIMULATOR_OPTIONS = COMPILATION_MODE_OPTIONS + [ ] WATCHOS_CONFIGURATIONS = { - # TODO(b/251910608): Re-enable when platform_mappings are exposed to the test runner. - #"device": WATCHOS_DEVICE_OPTIONS, + "device": WATCHOS_DEVICE_OPTIONS, "simulator": WATCHOS_SIMULATOR_OPTIONS, } diff --git a/test/ios_application_test.sh b/test/ios_application_test.sh index d36220fc6b..a61d333618 100755 --- a/test/ios_application_test.sh +++ b/test/ios_application_test.sh @@ -174,7 +174,7 @@ ios_application( bundle_id = "my.bundle.id", families = ["iphone"], infoplists = ["Info.plist"], - linkopts = ["-alias", "_main", "_linkopts_test_main"], + linkopts = ["-alias", "_main", "_linkopts_test_main", "-u", "_linkopts_test_main"], minimum_os_version = "${MIN_OS_IOS}", provisioning_profile = "@build_bazel_rules_apple//test/testdata/provisioning:integration_testing_ios.mobileprovision", deps = [":lib"], diff --git a/test/starlark_tests/apple_dynamic_xcframework_import_tests.bzl b/test/starlark_tests/apple_dynamic_xcframework_import_tests.bzl index b0ef7575a6..72fa31b4c5 100644 --- a/test/starlark_tests/apple_dynamic_xcframework_import_tests.bzl +++ b/test/starlark_tests/apple_dynamic_xcframework_import_tests.bzl @@ -292,6 +292,24 @@ def apple_dynamic_xcframework_import_test_suite(name): cpus = {"watchos_cpus": ["arm64_32"]}, macho_load_commands_contain = ["cmd LC_BUILD_VERSION", "platform WATCHOS"], ) + archive_contents_test( + name = "{}_links_watchos_device_arm64_macho_load_cmd_for_device_test".format(name), + build_type = "device", + target_under_test = "//test/starlark_tests/targets_under_test/watchos:app_with_imported_xcframework", + binary_test_file = "$BUNDLE_ROOT/Frameworks/generated_dynamic_watchos_xcframework.framework/generated_dynamic_watchos_xcframework", + binary_test_architecture = "arm64", + cpus = {"watchos_cpus": ["device_arm64"]}, + macho_load_commands_contain = ["cmd LC_BUILD_VERSION", "platform WATCHOS"], + ) + archive_contents_test( + name = "{}_links_watchos_device_arm64e_macho_load_cmd_for_device_test".format(name), + build_type = "device", + target_under_test = "//test/starlark_tests/targets_under_test/watchos:app_with_imported_xcframework", + binary_test_file = "$BUNDLE_ROOT/Frameworks/generated_dynamic_watchos_xcframework.framework/generated_dynamic_watchos_xcframework", + binary_test_architecture = "arm64e", + cpus = {"watchos_cpus": ["device_arm64e"]}, + macho_load_commands_contain = ["cmd LC_BUILD_VERSION", "platform WATCHOS"], + ) # Verify tvos_application bundles XCFramework library for device and simulator architectures. archive_contents_test( diff --git a/test/starlark_tests/targets_under_test/macos/BUILD b/test/starlark_tests/targets_under_test/macos/BUILD index 5c0f6a5b5b..ed0cfdefd3 100644 --- a/test/starlark_tests/targets_under_test/macos/BUILD +++ b/test/starlark_tests/targets_under_test/macos/BUILD @@ -2416,6 +2416,8 @@ macos_command_line_application( "-alias", "_main", "_linkopts_test_main", + "-u", + "_linkopts_test_main", ], minimum_os_version = common.min_os_macos.baseline, tags = common.fixture_tags, diff --git a/test/starlark_tests/targets_under_test/watchos/BUILD b/test/starlark_tests/targets_under_test/watchos/BUILD index f07749e44b..829d3607e6 100644 --- a/test/starlark_tests/targets_under_test/watchos/BUILD +++ b/test/starlark_tests/targets_under_test/watchos/BUILD @@ -1120,8 +1120,10 @@ generate_dynamic_xcframework( }, platforms = { "watchos": [ - "armv7k", + "arm64", "arm64_32", + "arm64e", + "armv7k", ], "watchos_simulator": [ "x86_64", diff --git a/test/starlark_tests/xcarchive_tests.bzl b/test/starlark_tests/xcarchive_tests.bzl index ebd868c0a2..4c1f0f2130 100644 --- a/test/starlark_tests/xcarchive_tests.bzl +++ b/test/starlark_tests/xcarchive_tests.bzl @@ -53,6 +53,8 @@ def xcarchive_test_suite(name): target_under_test = "//test/starlark_tests/targets_under_test/ios:app_minimal.xcarchive", contains = [ "$BUNDLE_ROOT/dSYMs/app_minimal.app.dSYM", + "$BUNDLE_ROOT/dSYMs/app_minimal.app.dSYM/Contents/Resources/DWARF/app_minimal", + "$BUNDLE_ROOT/dSYMs/app_minimal.app.dSYM/Contents/Info.plist", "$BUNDLE_ROOT/Info.plist", "$BUNDLE_ROOT/Products/Applications/app_minimal.app", ], @@ -76,6 +78,8 @@ def xcarchive_test_suite(name): contains = [ "$BUNDLE_ROOT/dSYMs/app_with_ext_space_in_path.app.dSYM", "$BUNDLE_ROOT/dSYMs/ext with space.appex.dSYM", + "$BUNDLE_ROOT/dSYMs/ext with space.appex.dSYM/Contents/Resources/DWARF/ext with space", + "$BUNDLE_ROOT/dSYMs/ext with space.appex.dSYM/Contents/Info.plist", "$BUNDLE_ROOT/Info.plist", "$BUNDLE_ROOT/Products/Applications/app_with_ext_space_in_path.app", ],