Add acceptance test suite that covers a staticly linked micro-architecture kind of app (#1594)
* [static-microfeature] Add new fixture to cover a staticly linked microfeature kind of app * [static-microfeature] Use the .staticFramework product everywhere * [static-microfeature] Make fixture more explicit that it's a static app * [static-microfeature] Add better logging * [static-microfeature] Add acceptance test suite to cover a staticly linked micro-feature achitecture app * [static-microfeature] Add new rule to check that a certain type of app (fully staticly linked) does not embed any xcframeworks * [static-microfeature] Fix fixture unit test target build * [static-microfeature] Update changelog
This commit is contained in:
parent
46269eafee
commit
2d09e63e54
|
@ -8,6 +8,10 @@ Please, check out guidelines: https://keepachangelog.com/en/1.0.0/
|
|||
|
||||
- Allow to cache and warm static frameworks too (only dynamic frameworks were cached before) [#1590](https://github.com/tuist/tuist/pull/1590) by [@RomainBoulay](https://github.com/RomainBoulay)
|
||||
|
||||
### Added
|
||||
|
||||
- Add an acceptance test suite to cover a `test cache warm` command on a micro-feature architecture kind of application that is fully statically linked [#1594](https://github.com/tuist/tuist/pull/1594) by [@RomainBoulay](https://github.com/RomainBoulay)
|
||||
|
||||
## 11.14.0 - Spezi
|
||||
|
||||
### Fixed
|
||||
|
|
|
@ -24,3 +24,14 @@ Scenario: The project is an application with templates (ios_workspace_with_micro
|
|||
Then App embeds the xcframework UIComponents
|
||||
Then I should be able to build for iOS the scheme App
|
||||
Then I should be able to test for iOS the scheme AppTests
|
||||
|
||||
Scenario: The project is an application with templates (ios_workspace_with_microfeature_architecture_static_linking)
|
||||
Given that tuist is available
|
||||
And I have a working directory
|
||||
Then I copy the fixture ios_workspace_with_microfeature_architecture_static_linking into the working directory
|
||||
And tuist warms the cache
|
||||
When tuist generates a project with cached targets at StaticApp
|
||||
Then StaticApp links the xcframework FrameworkA
|
||||
Then StaticApp does not embed any xcframeworks
|
||||
Then I should be able to build for iOS the scheme StaticApp
|
||||
Then I should be able to test for iOS the scheme StaticAppTests
|
||||
|
|
|
@ -7,7 +7,7 @@ end
|
|||
Then(/^([a-zA-Z]+) links the xcframework ([a-zA-Z]+)$/) do |target_name, xcframework|
|
||||
projects = Xcode.projects(@workspace_path)
|
||||
target = projects.flat_map { |p| p.targets }.detect { |t| t.name == target_name }
|
||||
flunk("Target #{target_name} in any of the projects of the workspace") if target.nil?
|
||||
flunk("Target #{target_name} doesn't exist in any of the projects' targets of the workspace") if target.nil?
|
||||
xcframework_deps = target.frameworks_build_phases.file_display_names.filter { |d| d.include?(".xcframework") }
|
||||
unless xcframework_deps.include?("#{xcframework}.xcframework")
|
||||
flunk("Target #{target_name} doesn't link the xcframework #{xcframework}. It links the xcframeworks: #{xcframework_deps.join(", ")}")
|
||||
|
@ -27,3 +27,17 @@ Then(/^([a-zA-Z]+) embeds the xcframework ([a-zA-Z]+)$/) do |target_name, xcfram
|
|||
flunk("Target #{target_name} doesn't embed the xcframework #{xcframework}. It embeds the xcframeworks: #{xcframework_deps.join(", ")}")
|
||||
end
|
||||
end
|
||||
|
||||
Then(/^([a-zA-Z]+) does not embed any xcframeworks$/) do |target_name|
|
||||
projects = Xcode.projects(@workspace_path)
|
||||
target = projects.flat_map { |p| p.targets }.detect { |t| t.name == target_name }
|
||||
flunk("Target #{target_name} in any of the projects of the workspace") if target.nil?
|
||||
xcframework_deps = target
|
||||
.copy_files_build_phases
|
||||
.filter { |b| b.symbol_dst_subfolder_spec == :frameworks }
|
||||
.flat_map { |b| b.file_display_names }
|
||||
.filter { |d| d.include?(".xcframework") }
|
||||
unless xcframework_deps.empty?
|
||||
flunk("Target #{target_name} should not embed any xcframeworks, although it does embed the following xcframeworks: #{xcframework_deps.join(", ")}")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,24 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "Core",
|
||||
targets: [
|
||||
Target(name: "Core",
|
||||
platform: .iOS,
|
||||
product: .staticFramework,
|
||||
bundleId: "io.tuist.Core",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
]),
|
||||
Target(name: "CoreTests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.CoreTests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "Core")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,5 @@
|
|||
import Foundation
|
||||
|
||||
public class CoreClass {
|
||||
public init() {}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import Core
|
||||
|
||||
final class CoreClassTests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,29 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "Data",
|
||||
targets: [
|
||||
Target(name: "Data",
|
||||
platform: .iOS,
|
||||
product: .staticFramework,
|
||||
bundleId: "io.tuist.Data",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
],
|
||||
dependencies: [
|
||||
/* Target dependencies can be defined here */
|
||||
// .framework(path: "Frameworks/MyFramework.framework")
|
||||
.project(target: "Core", path: "../CoreFramework")
|
||||
]),
|
||||
Target(name: "DataTests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.DataFrameworkTests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "Data")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import Core
|
||||
|
||||
public class DataClass {
|
||||
let core = CoreClass()
|
||||
|
||||
public init() {}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import Data
|
||||
|
||||
final class DataClassTests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,32 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "FrameworkA",
|
||||
targets: [
|
||||
Target(name: "FrameworkA",
|
||||
platform: .iOS,
|
||||
product: .staticFramework,
|
||||
bundleId: "io.tuist.FrameworkA",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
],
|
||||
dependencies: [
|
||||
/* Target dependencies can be defined here */
|
||||
// .framework(path: "Frameworks/MyFramework.framework")
|
||||
.project(target: "FeatureContracts", path: "../FeatureContracts"),
|
||||
.project(target: "Core", path: "../CoreFramework"),
|
||||
.project(target: "Data", path: "../DataFramework"),
|
||||
.project(target: "UIComponents", path: "../UIComponentsFramework")
|
||||
]),
|
||||
Target(name: "FrameworkATests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.FrameworkATests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "FrameworkA")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,10 @@
|
|||
import Foundation
|
||||
import FeatureContracts
|
||||
|
||||
class FrameworkA {
|
||||
func run(featureB: FeatureBContract) {
|
||||
featureB.run()
|
||||
let a = featureB.expose()
|
||||
print(a)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import FrameworkA
|
||||
|
||||
final class FrameworkATests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,30 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "FeatureContracts",
|
||||
targets: [
|
||||
Target(name: "FeatureContracts",
|
||||
platform: .iOS,
|
||||
product: .staticFramework,
|
||||
bundleId: "io.tuist.FeatureContracts",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
],
|
||||
dependencies: [
|
||||
/* Target dependencies can be defined here */
|
||||
// .framework(path: "Frameworks/MyFramework.framework")
|
||||
.project(target: "Data", path: "../DataFramework"),
|
||||
.project(target: "Core", path: "../CoreFramework")
|
||||
]),
|
||||
Target(name: "FeatureContractsTests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.FeatureContractsTests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "FeatureContracts")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,5 @@
|
|||
import Foundation
|
||||
|
||||
public protocol FeatureAContract {
|
||||
func run()
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
import Foundation
|
||||
import Core
|
||||
public protocol FeatureBContract {
|
||||
func run()
|
||||
func expose() -> CoreClass
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import FrameworkA
|
||||
|
||||
final class FrameworkAContractTests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,29 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "UIComponents",
|
||||
targets: [
|
||||
Target(name: "UIComponents",
|
||||
platform: .iOS,
|
||||
product: .staticFramework,
|
||||
bundleId: "io.tuist.UIComponents",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
],
|
||||
dependencies: [
|
||||
/* Target dependencies can be defined here */
|
||||
// .framework(path: "Frameworks/MyFramework.framework")
|
||||
.project(target: "FeatureContracts", path: "../FeatureContracts")
|
||||
]),
|
||||
Target(name: "UIComponentsTests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.UIComponentsTests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "UIComponents")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,7 @@
|
|||
import Foundation
|
||||
import UIKit
|
||||
import Data
|
||||
|
||||
class UIComponentA: UIView {
|
||||
let data = DataClass()
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import UIComponents
|
||||
|
||||
final class UIComponentATests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,29 @@
|
|||
import ProjectDescription
|
||||
|
||||
let project = Project(name: "StaticApp",
|
||||
targets: [
|
||||
Target(name: "StaticApp",
|
||||
platform: .iOS,
|
||||
product: .app,
|
||||
bundleId: "io.tuist.StaticApp",
|
||||
infoPlist: "Info.plist",
|
||||
sources: ["Sources/**"],
|
||||
resources: [
|
||||
/* Path to resouces can be defined here */
|
||||
// "Resources/**"
|
||||
],
|
||||
dependencies: [
|
||||
/* Target dependencies can be defined here */
|
||||
// .framework(path: "Frameworks/MyFramework.framework")
|
||||
.project(target: "FrameworkA", path: "../Frameworks/FeatureAFramework")
|
||||
]),
|
||||
Target(name: "StaticAppTests",
|
||||
platform: .iOS,
|
||||
product: .unitTests,
|
||||
bundleId: "io.tuist.StaticAppTests",
|
||||
infoPlist: "Tests.plist",
|
||||
sources: "Tests/**",
|
||||
dependencies: [
|
||||
.target(name: "StaticApp")
|
||||
])
|
||||
])
|
|
@ -0,0 +1,20 @@
|
|||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
|
||||
) -> Bool {
|
||||
window = UIWindow(frame: UIScreen.main.bounds)
|
||||
let viewController = UIViewController()
|
||||
viewController.view.backgroundColor = .white
|
||||
window?.rootViewController = viewController
|
||||
window?.makeKeyAndVisible()
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import StaticApp
|
||||
|
||||
final class StaticAppTests: XCTestCase {
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
import ProjectDescription
|
||||
|
||||
let workspace = Workspace(name: "Workspace",
|
||||
projects: [
|
||||
"StaticApp",
|
||||
"Frameworks/**",
|
||||
])
|
Loading…
Reference in New Issue