diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a454708da..348f54632 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,9 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_12.2.app - name: Build and Test run: | + # Host config bazelisk test --local_test_jobs=1 -- //... -//tests/ios/... + # `deleted_packages` is needed below in order to override the value of the .bazelrc file bazelisk test --local_test_jobs=1 --apple_platform_type=ios --deleted_packages='' -- //tests/ios/... - uses: actions/upload-artifact@v2 @@ -28,7 +30,7 @@ jobs: # Build the entire tree with this feature enabled. Longer term, we'll likely # consider merging this feature into the default behavior and can re-align # the CI job - name: Build ( Virtual Frameworks ) + name: Build and Test ( Virtual Frameworks ) runs-on: macos-latest steps: - uses: actions/checkout@v2 @@ -36,7 +38,16 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_12.2.app - name: Build and Test run: | - bazelisk build //... --features apple.virtualize_frameworks + # Host config + bazelisk test --features apple.virtualize_frameworks --local_test_jobs=1 -- //... -//tests/ios/... + + # `deleted_packages` is needed below in order to override the value of the .bazelrc file + bazelisk test --features apple.virtualize_frameworks \ + --local_test_jobs=1 \ + --apple_platform_type=ios \ + --deleted_packages='' \ + -- //tests/ios/... \ + -//tests/ios/frameworks/sources-with-prebuilt-binaries/... # Needs more work for pre-built binaries - uses: actions/upload-artifact@v2 if: failure() with: diff --git a/rules/analysis_tests/BUILD.bazel b/rules/analysis_tests/BUILD.bazel new file mode 100644 index 000000000..e69de29bb diff --git a/rules/analysis_tests/identical_outputs_test.bzl b/rules/analysis_tests/identical_outputs_test.bzl new file mode 100644 index 000000000..46dd8aa50 --- /dev/null +++ b/rules/analysis_tests/identical_outputs_test.bzl @@ -0,0 +1,82 @@ +load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") + +_TestFiles = provider( + fields = { + "files": "A glob of files collected for later assertions", + }, +) + +def _identical_outputs_test_impl(ctx): + env = analysistest.begin(ctx) + all_files = [] + asserts.true(env, len(ctx.attr.deps) > 1) + + for dep in ctx.attr.deps: + if not _TestFiles in dep: + continue + + # The input root is the part of the file usually rooted in bazel-out. + # For starlark transitions output dirs are fingerprinted by the hash of the + # relevant configuration keys. + # src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java + for input in dep[_TestFiles].files.to_list(): + all_files.append(input.root.path) + + # Expect that we have received multiple swiftmodules + asserts.true(env, len(all_files) > 1) + + # Assert all swiftmodules have identical outputs ( and most importantly an + # identical output directory ) + asserts.equals(env, 1, len(depset(all_files).to_list())) + return analysistest.end(env) + +def _collect_transitive_outputs_impl(target, ctx): + # Collect trans swift_library outputs + out = [] + if ctx.rule.kind == "swift_library": + out.extend(target[DefaultInfo].files.to_list()) + + if _TestFiles in target: + out.extend(target[_TestFiles].files.to_list()) + if hasattr(ctx.rule.attr, "srcs"): + for d in ctx.rule.attr.srcs: + if _TestFiles in d: + out.extend(d[_TestFiles].files.to_list()) + if hasattr(ctx.rule.attr, "deps"): + for d in ctx.rule.attr.deps: + if _TestFiles in d: + out.extend(d[_TestFiles].files.to_list()) + return _TestFiles(files = depset(out)) + +_collect_transitive_outputs = aspect( + implementation = _collect_transitive_outputs_impl, + attr_aspects = ["deps", "srcs"], +) + +# This test asserts that transitive dependencies have identical outputs for +# different transition paths. In particular, a rules_apple ios_application and +# an a apple_framework that share a swift_library, +# //tests/ios/app:SwiftLib_swift. This test ensures that the actions in both +# builds have functionally equal transitions applied by normalizing their output +# directories into a set. +# +# For instance these tests will fail if there is any delta and requires both: +# - adding apple_common.multi_arch_split to apple_framework.deps - #188 +# - the transition yields the same result when used w/rules_apple - #196 + +# Note: +# The gist of Bazel's configuration resolver is that it will apply +# relevant transitions to keys that are used by a given action. e.g. ios_multi_cpus. +# src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java +# +# In order to get the same configuration for a rule, a given transition has +# to produce the same values for dependent keys for all possible combinations +identical_outputs_test = analysistest.make( + _identical_outputs_test_impl, + expect_failure = False, + attrs = { + "deps": attr.label_list( + aspects = [_collect_transitive_outputs], + ), + }, +) diff --git a/rules/analysis_tests/transitive_header_test.bzl b/rules/analysis_tests/transitive_header_test.bzl new file mode 100644 index 000000000..b616d5cfc --- /dev/null +++ b/rules/analysis_tests/transitive_header_test.bzl @@ -0,0 +1,31 @@ +load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") + +def _transitive_header_test_impl(ctx): + env = analysistest.begin(ctx) + asserts.true(env, len(ctx.attr.deps) > 0) + target_under_test = analysistest.target_under_test(env) + target_headers = target_under_test[CcInfo].compilation_context.headers.to_list() + for dep in ctx.attr.deps: + asserts.true(env, CcInfo in dep) + dep_headers = dep[CcInfo].compilation_context.headers.to_list() + for dep_header in dep_headers: + # Assert that all of the dep headers are in the target + if not dep_header.extension == "h": + continue + + has_header = dep_header in target_headers + if not has_header: + print("Missing header", dep_header, target_headers) + asserts.true(env, has_header) + return analysistest.end(env) + +# The headers test allows a user to assert that tests are propagated to actions +# from arbitrary deps. Given a target_under_test, supply transitive deps or +# virtually any file group. +transitive_header_test = analysistest.make( + _transitive_header_test_impl, + expect_failure = False, + attrs = { + "deps": attr.label_list(allow_empty = False), + }, +) diff --git a/rules/apple_patched.bzl b/rules/apple_patched.bzl index 5253d7c9c..64017c7ce 100644 --- a/rules/apple_patched.bzl +++ b/rules/apple_patched.bzl @@ -95,6 +95,7 @@ def _get_framework_info_providers(ctx, old_cc_info, old_objc_provider): private_hdrs = [], has_swift = False, framework_name = imported_framework_name, + extra_search_paths = imported_framework_name, ) framework_info = FrameworkInfo( vfsoverlay_infos = [vfs.vfs_info], diff --git a/rules/framework.bzl b/rules/framework.bzl index a7f4a7b38..87f142f3f 100644 --- a/rules/framework.bzl +++ b/rules/framework.bzl @@ -159,21 +159,16 @@ def _get_virtual_framework_info(ctx, framework_files, compilation_context_fields # We need to map all the deps here - for both swift headers and others fw_dep_vfsoverlays = [] for dep in transitive_deps + deps: - if not FrameworkInfo in dep: - continue - framework_info = dep[FrameworkInfo] - fw_dep_vfsoverlays.extend(framework_info.vfsoverlay_infos) - framework_headers = depset(framework_info.headers + framework_info.modulemap + framework_info.private_headers) - propagated_interface_headers.append(framework_headers) - - # Collect generated headers. consider exposing all required generated - # headers in respective providers: -Swift, modulemap, -umbrella.h - if not CcInfo in dep: - continue - for h in dep[CcInfo].compilation_context.headers.to_list(): - if h.is_source: - continue - propagated_interface_headers.append(depset([h])) + # Collect transitive headers. For now, this needs to include all of the + # transitive headers + if CcInfo in dep: + compilation_context = dep[CcInfo].compilation_context + propagated_interface_headers.append(compilation_context.headers) + if FrameworkInfo in dep: + framework_info = dep[FrameworkInfo] + fw_dep_vfsoverlays.extend(framework_info.vfsoverlay_infos) + framework_headers = depset(framework_info.headers + framework_info.modulemap + framework_info.private_headers) + propagated_interface_headers.append(framework_headers) outputs = framework_files.outputs vfs = make_vfsoverlay( diff --git a/tests/ios/app/analysis-tests.bzl b/tests/ios/app/analysis-tests.bzl index d713ee836..933e750b8 100644 --- a/tests/ios/app/analysis-tests.bzl +++ b/tests/ios/app/analysis-tests.bzl @@ -1,89 +1,7 @@ -load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") - -_TestFiles = provider( - fields = { - "files": "A glob of files collected for later assertions", - }, -) - -def _identical_outputs_test_impl(ctx): - env = analysistest.begin(ctx) - all_files = [] - asserts.true(env, len(ctx.attr.deps) > 1) - - for dep in ctx.attr.deps: - if not _TestFiles in dep: - continue - - # The input root is the part of the file usually rooted in bazel-out. - # For starlark transitions output dirs are fingerprinted by the hash of the - # relevant configuration keys. - # src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java - for input in dep[_TestFiles].files.to_list(): - all_files.append(input.root.path) - - # Expect that we have recieved multiple swiftmodules - asserts.true(env, len(all_files) > 1) - - # Assert all swiftmodules have identical outputs ( and most importantly an - # identical output directory ) - asserts.equals(env, 1, len(depset(all_files).to_list())) - return analysistest.end(env) - -def _collect_transitive_outputs_impl(target, ctx): - # Collect trans swift_library outputs - out = [] - if ctx.rule.kind == "swift_library": - out.extend(target[DefaultInfo].files.to_list()) - - if _TestFiles in target: - out.extend(target[_TestFiles].files.to_list()) - if hasattr(ctx.rule.attr, "srcs"): - for d in ctx.rule.attr.srcs: - if _TestFiles in d: - out.extend(d[_TestFiles].files.to_list()) - if hasattr(ctx.rule.attr, "deps"): - for d in ctx.rule.attr.deps: - if _TestFiles in d: - out.extend(d[_TestFiles].files.to_list()) - return _TestFiles(files = depset(out)) - -_collect_transitive_outputs = aspect( - implementation = _collect_transitive_outputs_impl, - attr_aspects = ["deps", "srcs"], -) - -_identical_outputs_test = analysistest.make( - _identical_outputs_test_impl, - expect_failure = False, - attrs = { - "deps": attr.label_list( - aspects = [_collect_transitive_outputs], - ), - }, -) +load("//rules/analysis_tests:identical_outputs_test.bzl", "identical_outputs_test") def make_tests(): - # This test asserts that transitive dependencies have identical outputs for - # different transition paths. In particular, a rules_apple ios_application and an a - # apple_framework that share a swift_library, :SwiftLib_swift. This test ensures - # that the actions in both builds have functionally equal transitions - # applied by normalizing their output directories into a set. - # - # For instance these tests will fail if there is any delta and requires both: - # - adding apple_common.multi_arch_split to apple_framework.deps - #188 - # - the transition yields the same result when used w/rules_apple - #196 - - # Note: - # The gist of Bazel's configuration resolver is that it will apply - # relevant transitions to keys that are used by a given action. e.g. ios_multi_cpus. - # src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java - # - # In order to get the same configuration for a rule, a given transition has - # to produce the same values for dependent keys for all possible combinations - # of edges - - _identical_outputs_test( + identical_outputs_test( name = "test_DependencyEquivilance", target_under_test = ":AppWithSelectableCopts", diff --git a/tests/ios/unit-test/test-imports-app/BUILD.GoogleMobileAds b/tests/ios/unit-test/test-imports-app/BUILD.GoogleMobileAds index cd00cfdae..a35947486 100644 --- a/tests/ios/unit-test/test-imports-app/BUILD.GoogleMobileAds +++ b/tests/ios/unit-test/test-imports-app/BUILD.GoogleMobileAds @@ -1,12 +1,18 @@ - load( "@build_bazel_rules_ios//rules:apple_patched.bzl", - "apple_static_framework_import" + "apple_static_framework_import", ) apple_static_framework_import( name = "GoogleMobileAds", - framework_imports = glob(["Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator/GoogleMobileAds.framework/**"], allow_empty = False), + framework_imports = glob( + ["Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator/GoogleMobileAds.framework/**"], + allow_empty = False, + ), + sdk_dylibs = [ + "libsqlite3", + "libz", + ], sdk_frameworks = [ "AudioToolbox", "AVFoundation", @@ -21,17 +27,13 @@ apple_static_framework_import( "QuartzCore", "Security", "StoreKit", - "SystemConfiguration" + "SystemConfiguration", ], + visibility = ["//visibility:public"], weak_sdk_frameworks = [ "AdSupport", "JavaScriptCore", "SafariServices", - "WebKit" + "WebKit", ], - sdk_dylibs = [ - "libsqlite3", - "libz" - ], - visibility = ["//visibility:public"], ) diff --git a/tests/ios/unit-test/test-imports-app/BUILD.bazel b/tests/ios/unit-test/test-imports-app/BUILD.bazel index 76be263d7..fb86d5306 100644 --- a/tests/ios/unit-test/test-imports-app/BUILD.bazel +++ b/tests/ios/unit-test/test-imports-app/BUILD.bazel @@ -1,6 +1,7 @@ load("//rules:app.bzl", "ios_application") load("//rules:framework.bzl", "apple_framework", "apple_framework_packaging") load("//rules:test.bzl", "ios_unit_test") +load(":analysis-tests.bzl", "make_tests") apple_framework( name = "SomeFramework", @@ -9,6 +10,7 @@ apple_framework( "ios": "12.0", }, visibility = ["//visibility:public"], + deps = ["//tests/ios/unit-test/test-imports-app/frameworks/Basic"], ) ios_application( @@ -93,3 +95,5 @@ ios_unit_test( "//conditions:default": [], }), ) + +make_tests() diff --git a/tests/ios/unit-test/test-imports-app/analysis-tests.bzl b/tests/ios/unit-test/test-imports-app/analysis-tests.bzl new file mode 100644 index 000000000..6412d4763 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/analysis-tests.bzl @@ -0,0 +1,22 @@ +load("//rules/analysis_tests:transitive_header_test.bzl", "transitive_header_test") + +def make_tests(): + transitive_header_test( + name = "test_SomeFramework_SwiftCompilationHeaders", + target_under_test = ":SomeFramework_swift", + deps = ["//tests/ios/unit-test/test-imports-app/frameworks/Basic"], + ) + + transitive_header_test( + name = "test_App_SwiftCompilationHeaders", + target_under_test = ":TestImports-App_swift", + deps = ["//tests/ios/unit-test/test-imports-app/frameworks/Basic", "@TensorFlowLiteC//:TensorFlowLiteC"], + ) + + native.test_suite( + name = "AnalysisTests", + tests = [ + ":test_App_SwiftCompilationHeaders", + ":test_SomeFramework_SwiftCompilationHeaders", + ], + ) diff --git a/tests/ios/unit-test/test-imports-app/frameworks/BUILD.bazel b/tests/ios/unit-test/test-imports-app/frameworks/BUILD.bazel new file mode 100644 index 000000000..e69de29bb diff --git a/tests/ios/unit-test/test-imports-app/frameworks/Basic/BUILD.bazel b/tests/ios/unit-test/test-imports-app/frameworks/Basic/BUILD.bazel new file mode 100644 index 000000000..7ed267ac0 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/Basic/BUILD.bazel @@ -0,0 +1,13 @@ +load("//rules:framework.bzl", "apple_framework") + +apple_framework( + name = "Basic", + # Note: it is totally possible that a user would write a glob like this.. + # srcs = glob([ + # "sources/Basic/**/*.h", + # ]), + objc_copts = ["-fmodules-disable-diagnostic-validation"], + platforms = {"ios": "12.0"}, + vendored_static_frameworks = ["ios/Basic.framework"], + visibility = ["//visibility:public"], +) diff --git a/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Basic b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Basic new file mode 100644 index 000000000..b2969d09e Binary files /dev/null and b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Basic differ diff --git a/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Headers/Basic.h b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Headers/Basic.h new file mode 100644 index 000000000..3527cf286 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Headers/Basic.h @@ -0,0 +1,9 @@ +@import Foundation; + +typedef NS_ENUM(NSInteger, BasicVal) { + BasicVal_Unknown = 0, + BasicVal_FinishActivating = 1, + BasicVal_DownloadTheApp = 2, +}; + +static const NSString *BasicString = @"BasicString"; diff --git a/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Modules/module.modulemap b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Modules/module.modulemap new file mode 100644 index 000000000..737da7b28 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios/Basic.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module Basic { + header "Basic.h" + export * +} diff --git a/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/BUILD.bazel b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/BUILD.bazel new file mode 100644 index 000000000..31aaefc43 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/BUILD.bazel @@ -0,0 +1,9 @@ +load("//rules:framework.bzl", "apple_framework") + +apple_framework( + name = "NestedHeaders", + objc_copts = ["-fmodules-disable-diagnostic-validation"], + platforms = {"ios": "12.0"}, + vendored_static_frameworks = ["ios/NestedHeaders.framework"], + visibility = ["//visibility:public"], +) diff --git a/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Basic b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Basic new file mode 100644 index 000000000..b2969d09e Binary files /dev/null and b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Basic differ diff --git a/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Headers/Nested/Basic.h b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Headers/Nested/Basic.h new file mode 100644 index 000000000..fef9b6d21 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Headers/Nested/Basic.h @@ -0,0 +1,9 @@ +@import Foundation; + +typedef NS_ENUM(NSInteger, NestedHeadersVal) { + NestedHeadersVal_Unknown = 0, + NestedHeadersVal_FinishActivating = 1, + NestedHeadersVal_DownloadTheApp = 2, +}; + +static const NSString *NestedHeadersString = @"NestedHeadersString"; diff --git a/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Modules/module.modulemap b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Modules/module.modulemap new file mode 100644 index 000000000..2bb71f050 --- /dev/null +++ b/tests/ios/unit-test/test-imports-app/frameworks/NestedHeaders/ios/NestedHeaders.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module NestedHeaders { + header "NestedHeaders.h" + export * +} diff --git a/tests/ios/xcodeproj/Test-Imports-App-Project.xcodeproj/project.pbxproj b/tests/ios/xcodeproj/Test-Imports-App-Project.xcodeproj/project.pbxproj index 53d790e4d..4aa0d4bf9 100755 --- a/tests/ios/xcodeproj/Test-Imports-App-Project.xcodeproj/project.pbxproj +++ b/tests/ios/xcodeproj/Test-Imports-App-Project.xcodeproj/project.pbxproj @@ -396,7 +396,7 @@ BAZEL_SWIFTMODULEFILES_TO_COPY = "bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftmodule bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftdoc bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftsourceinfo"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\""; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\" \"$BAZEL_WORKSPACE_ROOT/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios\""; GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = "\"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_public_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_private_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_doublequote_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_angle_bracket_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT\""; INFOPLIST_FILE = "$BAZEL_STUBS_DIR/Info-stub.plist"; @@ -421,7 +421,7 @@ BAZEL_SWIFTMODULEFILES_TO_COPY = "bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftmodule bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftdoc bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftsourceinfo"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\""; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\" \"$BAZEL_WORKSPACE_ROOT/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios\""; GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = "\"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_public_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_private_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_doublequote_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_angle_bracket_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT\""; INFOPLIST_FILE = "$BAZEL_STUBS_DIR/Info-stub.plist"; diff --git a/tests/macos/xcodeproj/Test-Target-With-Test-Host-Project.xcodeproj/project.pbxproj b/tests/macos/xcodeproj/Test-Target-With-Test-Host-Project.xcodeproj/project.pbxproj index 88e3112e8..a4f894320 100755 --- a/tests/macos/xcodeproj/Test-Target-With-Test-Host-Project.xcodeproj/project.pbxproj +++ b/tests/macos/xcodeproj/Test-Target-With-Test-Host-Project.xcodeproj/project.pbxproj @@ -455,7 +455,7 @@ BAZEL_SWIFTMODULEFILES_TO_COPY = "bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftmodule bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftdoc bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftsourceinfo"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\""; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\" \"$BAZEL_WORKSPACE_ROOT/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios\""; GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = "\"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_public_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_private_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_doublequote_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_angle_bracket_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT\""; INFOPLIST_FILE = "$BAZEL_STUBS_DIR/Info-stub.plist"; @@ -528,7 +528,7 @@ BAZEL_SWIFTMODULEFILES_TO_COPY = "bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftmodule bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftdoc bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports_App.swiftsourceinfo"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\""; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks \"$BAZEL_WORKSPACE_ROOT/external/GoogleMobileAdsSDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator\" \"$BAZEL_WORKSPACE_ROOT/external/TensorFlowLiteC/Frameworks\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/SomeFramework\" \"$BAZEL_WORKSPACE_ROOT/tests/ios/unit-test/test-imports-app/frameworks/Basic/ios\""; GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = "\"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_public_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_private_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_doublequote_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT/bazel-out/ios-x86_64-min12.0-applebin_ios-ios_x86_64-dbg-ST-5dc50b810145/bin/tests/ios/unit-test/test-imports-app/TestImports-App_swift_angle_bracket_hmap.hmap\" \"$BAZEL_WORKSPACE_ROOT\""; INFOPLIST_FILE = "$BAZEL_STUBS_DIR/Info-stub.plist";