* Fix recursive include path when relativePath is not set
If relativePath is not set on a particular include, the first level of
include will currently work, but starting at the second level of
iteration, the computed include path will fail as relativePath will be
appended over and over onto the filePath. We're fixing that recursion
problem here and adding the corresponding tests to make sure it doesn't
happen again.
* Include projectRoot in include paths
The projectRoot setting (when specified) is currently ignored when
computing the include paths. We're fixing that in that commit.
* Use memoization during recursive SpecFiles creation
SpecFile objects are created by recursive through includes. On a large
project with programatically generated SpecFile, it is not rare to have
hundreds of SpecFiles, creating a large web of include dependencies.
In such a case, it is not rare either for a particular SpecFile to be
included by multiple other SpecFiles. When that happens, XcodeGen
currently creates a SpecFile object every time a SpecFile gets included,
which can lead to an exponential growth of includes.
I have seen hundreds of files being turned into hundred of thousands of
SpecFile object creations, which leads to an impractical XcodeGen run of
tens of minutes.
This change adds memoization during SpecFile recursion, in order to
reuse the previously created SpecFiles, if available, instead of
re-creating them.
* Update CHANGELOG.md
Add the following changes to the changelog:
* b97bdc4 - Use memoization during recursive SpecFiles creation
* a6b96ad - Include projectRoot in include paths
* 557b074 - Fix recursive include path when relativePath is not set
* add new option enable for include of spec
* fix to see the environment variable when parsing include
* add test for include with environment variable
* fix how to parse boolean value
* add spec about enable for include
* add Change Log
* fix the number of PR in changelog
* fix include test to make more clear
* fix test to focus enable option more
* fix english error
* fix to expand variable only one time
* add new test case by setting environment object as NO
* Fix profile action to not run frameworks
* Add PR number to changelog
* Update CHANGELOG.md
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
**Reason**
- More strict validation of added dependencies
**Contents**
- Added changelog entry
- Added check for duplicates in validation stage
- Added test
* Embed ExtensionKit Extensions
* Fix explicitFileType for extensionKit
* Update ChangeLog
* Fix if statement structure
* Add a new example extension to Tests/Fixtures/TestProject/
* Update Tests/Fixtures/TestProject/Project.xcodeproj
* Comment out example for extension kit extension in Tests/Fixtures/TestProject/
* Update Tests/Fixtures/TestProject/Project.xcodeproj
* Fix XcodeGen building after XcodeProj update to 8.8.0
**Reason**
- XcodeProj has been updated and has API breaking changes
**Content**
- Added new enum case handling in `Linkage`
- Renamed the enum case name for `XCWorkspaceDataFileRef.init`
* add new product type to docs
* update changelog
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* upgrade scheme and project versions
* parse test plans
* remove xctestplan from resources
* generate test plan references in schemes
* add test plan to fixture
* non-mutable way of creating [XCScheme.TestPlanReference]
* update fixture version
* Add documentation
* Add default test plan option
# Conflicts:
# Sources/ProjectSpec/Scheme.swift
# Tests/Fixtures/paths_test/included_paths_test.yml
# Tests/ProjectSpecTests/SpecLoadingTests.swift
* Add test plan validation
# Conflicts:
# Tests/ProjectSpecTests/ProjectSpecTests.swift
* Check for multiple default test plans
* set first plan as default default plan
* small tweaks
* fix test plan path properties
* add test plants to target scheme
* docs
* fix fixture test plan path
* update changelog
* added ability to disable test plan path validation
Co-authored-by: Ota Mares <ota@rebuy.com>
* support local Swift Package test case into test scheme
* update test
* add test
* update CHABGELOG.md
* Update CHANGELOG.md
* revert resolved package test
* Update Sources/XcodeGenKit/SchemeGenerator.swift
Co-authored-by: Kohki Miki <giginet.net@gmail.com>
* make TargetReference convert from new JSON format
* add .package for location of target reference
* receive target reference format at target of scheme
* update test
* update XcodeProj
* add test and fix small bugs
* update docs
* support multiple style of coverageTargets
* add edge case of parsing test targets
* fix docs
* Update Docs/ProjectSpec.md
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* create TestableTargetReference for not making API complex
* fix code format
* fix parameter name to Testable Target Reference
* support directly writing key of Testable Target Reference
* fix compile error in build
Co-authored-by: Kohki Miki <giginet.net@gmail.com>
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Added support for dependency destination specification. (Resolves#1038)
* More generic way covering more different dependency types. (#1038)
* Added unit-test for each possible dependency combination. First test current embeding then the new one with custom copy spec. (#1038)
* Review fixes. (#1038)
* Minimized unit-test boiler-plate (#1038)
* Update CHANGELOG.md
Co-authored-by: Jakub Bednář <jakub.bednar@avast.com>
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Support for specifying UI testing snapshot behavior in scheme test action
* Add tests for new screenshot scheme options
* Update changelog
* Add new fields to Scheme.Test json encoding
* Only save values to JSON if they aren't the defaults
* Using new defaults constants
* Add initial support for conditional platform dependencies
* Add tests for conditional platforms
* Update docs and changelog
* Respond to PR feedback
* Change name of field from 'conditionalPlatforms' to 'platforms'
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Squashed commit of the following:
commit 0bcdce0d1f0f1d13fb5a284404e4eaea4e805a89
Author: Vlad Gorlov <volodymyr.gorlov@gmail.com>
Date: Fri Jun 18 00:58:50 2021 +0200
[#1092] Dependency version update.
commit 0040c46fd4ce9f42102faeb744104027b6c2c757
Author: Bruce Evans <bruce.evans.dev@gmail.com>
Date: Wed Jun 16 09:12:01 2021 +0900
Add Support for DocC in Xcode 13 (#1091)
* Add support for DocC
DocC "files" are actually folders `.docc` appended to the name, but Xcode 13 treats them differently. Therefore, we need to exclude them from the normal BuildPhase.
Resolves#1089
* Add tests for DocC
Expanded an existing test to include .docc support.
Also added a .docc catalog to the Test Project.
* Update changelog.md
* Update changelog.md to get the correct PR Link
commit 5bb7ef4e1c632f80f63c49ee280d64b8dab1603f
Author: Vlad Gorlov <volodymyr.gorlov@gmail.com>
Date: Wed Jun 16 01:03:42 2021 +0200
Added support for missed product types.
commit 3f8bfdf749d0d15da8490550b95a31cf961d8649
Author: Vlad Gorlov <volodymyr.gorlov@gmail.com>
Date: Wed Jun 16 00:01:47 2021 +0200
Added support for missed product types.
commit 235ebe4fe906716a6a37421346318fc6515836ce
Author: Vlad Gorlov <volodymyr.gorlov@gmail.com>
Date: Tue Jun 15 23:53:52 2021 +0200
Added support for missed product types.
* [#1094] Fixes failing tests.
* [#1094] Added test project targets.
* [#1094] Making iig-file type of source code.
* [#1094] Attempt to fix CI failure.
* Add support for DocC
DocC "files" are actually folders `.docc` appended to the name, but Xcode 13 treats them differently. Therefore, we need to exclude them from the normal BuildPhase.
Resolves#1089
* Add tests for DocC
Expanded an existing test to include .docc support.
Also added a .docc catalog to the Test Project.
* Update changelog.md
* Update changelog.md to get the correct PR Link
* Revert "Change FRAMEWORK_SEARCH_PATH for xcframeworks (#1015)"
This reverts commit 7b8f5a117f.
* Don't actually revert the changelog entry
* ProjectSpec.md: document how to link an xcframework
* Update CHANGELOG.md
* added () to config variant trimming character set
* added test cases
* added test cases and changelog entry
* Update CHANGELOG.md
removed
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* fixed incorrect test case
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Failing test for #975
* fixes#975
* chore: refactor to properly select a config from a collection with specific variant and config type
chore: updated changelog
* fix: lowercase compare on config variant names
* fix CI
* fix missing scheme for CI
* fix schemes for CI
* Update CHANGELOG.md
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Update Sources/ProjectSpec/Config.swift
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* - fix compilation issue
- duplicated test for config variant name (uppercase/lowercase)
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* added support for selectedTests in test shemes
* added PR description to changelog
* CHANGELOG fix
* use presence of selectedTests for useTestSelectionWhitelist
Co-authored-by: Artem Semavin <Artem Semavin>
Co-authored-by: yonaskolb <yonaskolb@gmail.com>
* Allowing the property LastUpgradeCheck and LastUpgradeVersion to be overrided
* Updating changelod and project spec
* Updating changelog
Co-authored-by: André Lucas Ota <andrel.ota@PPM-SPO-6835.local>
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
* Update TestProject Fixture to include GoogleService-Info.plist resource bsaed on 2.18.0 generator
* Update TestProject fixture to include an Info.plist file named 'App-Info.plist' to simulate scenario in #945
* Resolve INFOPLIST_FILE values upfront ahead of resolving all source files for a target
* fixup! Resolve INFOPLIST_FILE values upfront ahead of resolving all source files for a target
* fixup! Resolve INFOPLIST_FILE values upfront ahead of resolving all source files for a target
* Refactor SourceGenerator to remove some redundant arguments on internal methods when generating source files in a target
* Update SourceGenerator to accept '[Path: BuildPhaseSpec]' of preferred build phases in order to prioritise over 'default' value. Remove explicit Info.plist check from SourceGenerator. Update PBXProjGenerator to inject hash of build phases for resolved INFOPLIST_FILE values. Update SourceGeneratorTests to comply with change where only the FIRST Info.plist is excluded from copy bundle resources build phase, additionally resolve absolute path
* Ensure project.basePath is always absolute when resolving Info.plist path relative to project
* Add test coverage in SourceGeneratorTests.swift
* Update CHANGELOG.md
* Reword CHANGELOG.md
* allow to specify macroExpansion on schemes
* fix json parsing on macroExpansion
* set macroExpansion only launch scheme
* add test for macroExpansion
* add macroExpansion description
* add macroExpansion to Change Log
* Update CHANGELOG.md
* add App_Extension scheme for macroExpansion
* change example of macroExpansion in Fixtures project
* fix to keep back to keep back compatibility as possible
* Apply suggestions from code review
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>