Fix issue with Tulsi incorrectly assuming the location of Info.plist files for extension targets.
PiperOrigin-RevId: 221679645
diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
index 3f6a9ef..2ec814a 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
@@ -848,7 +848,7 @@
objc_module_maps = objc_module_maps,
module_name = module_name,
type = target_kind,
- infoplist = infoplist.basename if infoplist else None,
+ infoplist = infoplist.path if infoplist else None,
platform_type = platform_type,
product_type = product_type,
xcode_version = xcode_version,
diff --git a/src/TulsiGenerator/BazelAspectInfoExtractor.swift b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
index 31e4500..0100caf 100644
--- a/src/TulsiGenerator/BazelAspectInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
@@ -28,6 +28,8 @@
var bazelURL: URL
/// The location of the Bazel workspace to be examined.
let workspaceRootURL: URL
+ /// The execution root URL.
+ let executionRootURL: URL
/// Stores Tulsi-specific Bazel settings.
let bazelSettingsProvider: BazelSettingsProviderProtocol
@@ -44,10 +46,12 @@
init(bazelURL: URL,
workspaceRootURL: URL,
+ executionRootURL: URL,
bazelSettingsProvider: BazelSettingsProviderProtocol,
localizedMessageLogger: LocalizedMessageLogger) {
self.bazelURL = bazelURL
self.workspaceRootURL = workspaceRootURL
+ self.executionRootURL = executionRootURL
self.bazelSettingsProvider = bazelSettingsProvider
self.localizedMessageLogger = localizedMessageLogger
@@ -375,12 +379,7 @@
var extensionType: String?
if targetProductType?.isiOSAppExtension ?? false, let infoplistPath = dict["infoplist"] as? String {
- // TODO(b/73349137): This relies on the fact the Plist will be located next to the
- // .tulsiinfo file for the same target. It would be better to get an absolute path to the
- // plist from bazel.
- let plistPath = URL(fileURLWithPath: filename)
- .deletingLastPathComponent()
- .appendingPathComponent(infoplistPath).path
+ let plistPath = executionRootURL.appendingPathComponent(infoplistPath).path
guard let info = NSDictionary(contentsOfFile: plistPath) else {
throw ExtractorError.parsingFailed("Unable to load extension plist file: \(plistPath)")
}
diff --git a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
index 7f9024c..d746eef 100644
--- a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
@@ -73,8 +73,12 @@
workspaceRootURL: workspaceRootURL,
bazelUniversalFlags: universalFlags,
localizedMessageLogger: localizedMessageLogger)
+
+ let executionRootURL = URL(fileURLWithPath: workspacePathInfoFetcher.getExecutionRoot(),
+ isDirectory: false)
aspectExtractor = BazelAspectInfoExtractor(bazelURL: bazelURL,
workspaceRootURL: workspaceRootURL,
+ executionRootURL: executionRootURL,
bazelSettingsProvider: bazelSettingsProvider,
localizedMessageLogger: localizedMessageLogger)
queryExtractor = BazelQueryInfoExtractor(bazelURL: bazelURL,
diff --git a/src/TulsiGeneratorIntegrationTests/AspectTests.swift b/src/TulsiGeneratorIntegrationTests/AspectTests.swift
index 5479614..e978b16 100644
--- a/src/TulsiGeneratorIntegrationTests/AspectTests.swift
+++ b/src/TulsiGeneratorIntegrationTests/AspectTests.swift
@@ -24,8 +24,11 @@
override func setUp() {
super.setUp()
let bazelSettingsProvider = BazelSettingsProvider(universalFlags: bazelUniversalFlags)
+ let executionRootURL = URL(fileURLWithPath: workspaceInfoFetcher.getExecutionRoot(),
+ isDirectory: false)
aspectInfoExtractor = BazelAspectInfoExtractor(bazelURL: bazelURL,
workspaceRootURL: workspaceRootURL!,
+ executionRootURL: executionRootURL,
bazelSettingsProvider: bazelSettingsProvider,
localizedMessageLogger: localizedMessageLogger)
}
@@ -456,8 +459,11 @@
override func setUp() {
super.setUp()
let bazelSettingsProvider = BazelSettingsProvider(universalFlags: bazelUniversalFlags)
+ let executionRootURL = URL(fileURLWithPath: workspaceInfoFetcher.getExecutionRoot(),
+ isDirectory: false)
aspectInfoExtractor = BazelAspectInfoExtractor(bazelURL: bazelURL,
workspaceRootURL: workspaceRootURL!,
+ executionRootURL: executionRootURL,
bazelSettingsProvider: bazelSettingsProvider,
localizedMessageLogger: localizedMessageLogger)
installBUILDFile("TestSuiteRoot",