XcodeGen/Tests/Fixtures
Mathieu Olivari e7f753785e
Fix includes related issues and improve their performances (#1275)
* 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
2022-11-03 19:05:46 +11:00
..
CarthageProject Add Test Plans (#716) 2022-05-10 13:27:31 +10:00
duplicated_include Don't deduplicate files in include with different paths but a same name (#849) 2020-04-29 10:20:28 +10:00
legacy_paths_test Fix includes related issues and improve their performances (#1275) 2022-11-03 19:05:46 +11:00
paths_test Add Test Plans (#716) 2022-05-10 13:27:31 +10:00
scheme_test Add Test Plans (#716) 2022-05-10 13:27:31 +10:00
SPM Fix XcodeGen building after XcodeProj update to 8.8.0 (#1228) 2022-07-16 16:46:42 +10:00
TestProject Add enableGPUFrameCaptureMode to Scheme (#1251) 2022-09-09 18:43:39 +10:00
include_test.json Fix groups (#144) 2017-11-12 18:52:11 +01:00
include_test.yml Add enable option for include to enable optional including for addtional spec (#1242) 2022-08-12 16:21:43 +10:00
included_addtional.yml Add enable option for include to enable optional including for addtional spec (#1242) 2022-08-12 16:21:43 +10:00
included.yml Add environment variable expansion 2019-06-16 23:48:58 +02:00
legacy_paths_test.yml Fix legacy path expansion test 2019-01-27 12:33:56 +00:00
paths_test.yml fix relative paths in included target templates 2019-03-17 19:38:36 +11:00
settings_test.yml Fix groups (#144) 2017-11-12 18:52:11 +01:00
test.xcconfig Add new option for disabling validations 2018-01-05 11:41:33 -08:00
variables_test.yml Add additional spec for variable expension in combination with template attributes 2019-06-19 22:32:01 +02:00
yaml.yml update Yams to fix quoted values 2018-03-30 19:24:19 +11:00