in src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift [1187:1304]
func checkGenerateTargetsForLinkedRuleEntriesWithSources(
_ testRuleType: String,
testProductType: PBXTarget.ProductType,
testHostAttributeName: String
) {
let rule1BuildPath = "test/app"
let rule1TargetName = "TestHost"
let rule1BuildTarget = "\(rule1BuildPath):\(rule1TargetName)"
let testRuleBuildPath = "test/testbundle"
let testRuleTargetName = "Tests"
let testRuleBuildTarget = "\(testRuleBuildPath):\(testRuleTargetName)"
let testRuleAttributes = [testHostAttributeName: rule1BuildTarget]
let testSources = ["sourceFile1.m", "sourceFile2.mm"]
let testRule = makeTestRuleEntry(
testRuleBuildTarget,
type: testRuleType,
attributes: testRuleAttributes as [String: AnyObject],
sourceFiles: testSources,
productType: testProductType,
platformType: "ios",
osDeploymentTarget: "8.0")
let rules = Set([
makeTestRuleEntry(rule1BuildTarget, type: "ios_application", productType: .Application),
testRule,
])
do {
_ = try targetGenerator.generateBuildTargetsForRuleEntries(
rules, ruleEntryMap: RuleEntryMap(), pathFilters: pathFilters)
} catch let e as NSError {
XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
}
XCTAssert(!messageLogger.warningMessageKeys.contains("MissingTestHost"))
let targets = project.targetByName
XCTAssertEqual(targets.count, 2)
do {
let expectedBuildSettings = [
"ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME": "Stub Launch Image",
"BAZEL_TARGET": "test/app:TestHost",
"DEBUG_INFORMATION_FORMAT": "dwarf",
"INFOPLIST_FILE": stubPlistPaths.defaultStub,
"PRODUCT_NAME": rule1TargetName,
"SDKROOT": "iphoneos",
"TULSI_BUILD_PATH": rule1BuildPath,
]
let expectedTarget = TargetDefinition(
name: rule1TargetName,
buildConfigurations: [
BuildConfigurationDefinition(
name: "Debug",
expectedBuildSettings: debugBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "Release",
expectedBuildSettings: releaseBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "__TulsiTestRunner_Debug",
expectedBuildSettings: debugTestRunnerBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "__TulsiTestRunner_Release",
expectedBuildSettings: releaseTestRunnerBuildSettingsFromSettings(expectedBuildSettings)
),
],
expectedBuildPhases: [
BazelShellScriptBuildPhaseDefinition(
bazelPath: bazelPath,
buildTarget: rule1BuildTarget),
]
)
assertTarget(expectedTarget, inTargets: targets)
}
do {
let expectedBuildSettings = [
"ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME": "Stub Launch Image",
"BAZEL_TARGET": "test/testbundle:Tests",
"BUNDLE_LOADER": "$(TEST_HOST)",
"DEBUG_INFORMATION_FORMAT": "dwarf",
"INFOPLIST_FILE": stubPlistPaths.defaultStub,
"IPHONEOS_DEPLOYMENT_TARGET": "8.0",
"PRODUCT_NAME": testRuleTargetName,
"SDKROOT": "iphoneos",
"TEST_HOST": "$(BUILT_PRODUCTS_DIR)/\(rule1TargetName).app/\(rule1TargetName)",
"TULSI_BUILD_PATH": testRuleBuildPath,
"TULSI_TEST_RUNNER_ONLY": "YES",
]
let expectedTarget = TargetDefinition(
name: testRuleTargetName,
buildConfigurations: [
BuildConfigurationDefinition(
name: "Debug",
expectedBuildSettings: debugBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "Release",
expectedBuildSettings: releaseBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "__TulsiTestRunner_Debug",
expectedBuildSettings: debugTestRunnerBuildSettingsFromSettings(expectedBuildSettings)
),
BuildConfigurationDefinition(
name: "__TulsiTestRunner_Release",
expectedBuildSettings: releaseTestRunnerBuildSettingsFromSettings(expectedBuildSettings)
),
],
expectedBuildPhases: [
SourcesBuildPhaseDefinition(files: testSources, mainGroup: project.mainGroup),
BazelShellScriptBuildPhaseDefinition(
bazelPath: bazelPath,
buildTarget: testRuleBuildTarget),
ObjcDummyShellScriptBuildPhaseDefinition(),
]
)
assertTarget(expectedTarget, inTargets: targets)
}
}