* Improve test case failure/skip states and their output (#4116)
Currently if a test fails, it's not immediately clear why that is
because we give the exit code - and not the output from ctest. That is
now fixed and the ctest output is shown which greatly improves the
usefulness of the Test Results pane and other places where this output
is shown like Code Lens.
Skipped test cases were also not actually marked as skipped, and that is
now fixed as well.
* fix linter issue
---------
Co-authored-by: Garrett Campbell <gcampbell@microsoft.com>
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
* fix: CTest Test Suite Delimiter prevents running all tests (#4092)
* Introduces type alias (DriverMapT) to factorize type declaration
* Introduces the getProjectDriver method
* Adds comments
* Adds entry in the CHANGELOG
* Fix wrong object initialization
* Takes into account code review remarks.
Do not return CMakeDriver | String but do return CMakeDriver and throw error in case of problem
* Fix lint issue
---------
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
* gcc.ts: Replace single regex pattern with array
* CHANGELOG.md: Add GCC parsing fix
* Change parser from gnuLD to gcc for linker error diagnostics unit test
* Fix GNU LD diagnostics parser not being enabled due to inconsistency in config and in build.ts by_source strings
* Improve GCC and GNU LD diagnostics parsers
* Remove obsolete french linker error unit test
* Add gcc and gnuld diagnostics unit tests
* Clean up regexes, add unit tests
* Make gcc and gnuld parsers execution order agnostic
* Share the RegexPattern interface and the MatchType interface rather than doubly defining it
* Remove C++ template compiler error detection from gnu-ld, move common data types to util.ts
* fix extra line
* update changelog
* Remove obsolete return statement
* Add comments
---------
Co-authored-by: 0xemgy <0xemgy>
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
Co-authored-by: Garrett Campbell <gcampbell@microsoft.com>
* renamed to end-to-end-tests and moved backend unit tests to unit-tests folder
* create folder for kits code, refactor imports to use @cmt and @test
* move variants into the kits folder
* refactor into better folder structure, still more to go
* Initial refactor making presets validation unit testing possible.
This seems to work well so far, I have v1-v3 presets tested, with some
more refactors regarding error reporting to come. However, the
design/infrastructure refactor seems to be allowing us to unit test
validation.
* implemented Presets version validation automated testing
* Added version testing for presets v1-9.
This adds testing for our version validation for all Presets versions
currently supported.
It creates presets on the fly and ensures that we correctly get errors,
or don't, depending on the setup and what fields are present with what
versions.
* fix workflows
* Ensure that we correctly initialize the presetsParser class
* refactor imports
* refactor imports
* more import fixes
* imports in projectStatus
* missed one
* workflow imports
* added comment about definite assignment
* add comments
* fix launch file to make sure breakpoints happen
* fix syntax error
* determine shell for .cmd, .bat, .ps1
* update changelog
* only apply fix on windows, as necessary
* undefined -> false
* use concrete if statement
* update changelog and change if statement order
* nit: remove extra space
* support additional macros for include field for presets v9
* use expandString and adhere to interface requirements
* revert unneeded change
* remove unnecessary change from tempErrorList to errorList
* add option for ExpansionOptions for vars to be preset contextual but not preset specific interface
* now that we've added the appropriate required preset fields, refer to them explicitly
* remove unused import
* remove unused imports
* fix binary dir
* fixes the issue, but more testing and possible improvement to come
* set expandedPreset.binaryDir if already set too
* properly update caches, ensure we correctly store cached presets
* remove some unnecessary comments
* fix linter errors
* update envOverride with expandedPreset env
* update the changelog
* update parent environment when never
* In short, with our recent updates, we are attempting to expand every
string in the environment. This isn't a problem in most cases, but it
exposed a bug in certain linux distros that use aliasing (environment
variables).
Therefore, we should be wiser about what we attempt to expand and only
expand the presets environment variables the user has in their files.
To do this, we need to be smarter about what we save in our cache and
update by reference.
* updated the other presets so they dont always have to reexpand configure preset. when they do, use plusIncludes which has the dev env cached if its been expanded before. also include the inherited parent envs
* Fix environment expansion so we don't expand unnecessary variables - don't save the process.env or parent environment to the environment field of the cache.
* Don't re-expand configure presets in the associated build/test/etc presets.
* Fix expansion reporting issues with reporting an invalid config preset, and changing for each loop to a traditional for loop to make sure we dont have async issues with reporting.
* fix validation bug for not being able to find a null config preset
---------
Co-authored-by: Garrett Campbell <gcampbell@microsoft.com>
* fix
* analyze user presets first because it's the base if it exists
* more updates to fix include files and telemetry, still needs work and testing
* ensure telemetry and other uses of 'all..Presets' is right
* more fixes
* ensure we don't duplicate cmakepresets in userpresets includes
* remove unnecessary return
* unionWith consistency
* add test
Fixes#3854. Support for watching multiple paths (cmakepresets.json/cmakeuserpresets.json/include files) was broken due to a Chokidar bug. Created a wrapper class to handle this scenario.
* Making configure precondition handler return a boolean helps to differentiate the successful recovery cases
* Fix pre-condition handler prototype errors in tests
* Experiment with prototypes to fix linter errors
* Add setting for building whole build dir when clean configure
* Remove anything related to deleteBuildDirOnCleanConfigure since it's in a different PR. Keep proper promise<bool> prototype for pre-configure handler return and fix appropriately compilation and lint errors in tests.
* Forgot one file to remove deleteBuildDirOnCleanConfigure from
* Remove forgotten comment
* Add changelog entry
* remove changes not needed
* removing more bad changes
* add logic to regenerate the driver after selecting cmakelists
* remove unused imports
* keep sanity check in _beforeConfigureOrBuild
* only ensure we set the variable so that on retry, it works
* switch return
* erroneous update
* fix
---------
Co-authored-by: Garrett Campbell <gcampbell@microsoft.com>
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
* Fix GitHub 1401, diagnostics relative to workspace folder
- relative diagnostics files are searched in build_dir and src_dir,
first existing file is returned
- defaults to old behavior : `path.resolve(build_dir, file)`
- `resolveDiagnostics` has been made async to not slow down IDE when
testing files
* update ChangeLog for #1401
* fix relative file resolution diagnostics test
- diagnostics paths always use POSIX separators (see `normalizePath` in
[src/util.ts](src/util.ts))
---------
Co-authored-by: Sylvain Fargier <sylvain.fargier@cern.ch>
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
This change changes the way we do preset file expansion. Expansion now occurs upfront on file open or save, and if there are no errors, the expanded presets will be cached so repeated expansion is not necessary every time getAll{type of preset}Presets() is called.
The only time expansion will happen again is on set preset, which will then also apply the VS developer environment as needed. This is avoided on the initial expansion for performance.
If there are errors in expansion, the errors are shown in the problems panel per file. The presets file will also be set to undefined, which will invalidate that file and not allow any presets in that file to be recognized/selected as valid presets. This is in line with the CMake command line experience.
Some notes:
- The ${generator} macro should not work for packagePresets, but should now expand correctly for all other presets and evaluate conditions correctly
- Tertiary preset cache was added (really its just the original presets cache but used in a new way) to account for included json files that wouldnt be in the original presets files
[kit] Found Kit (trusted): Clang 17.0.3 (MSVC CLI) for MSVC 17.10.35004.147 (Visual Studio Community 2022 Release - x86)
[kit] Found Kit (trusted): Clang 17.0.3 (GNU CLI) for MSVC 17.10.35004.147 (Visual Studio Community 2022 Release - x86)
[kit] Found Kit (trusted): Clang 17.0.3 (MSVC CLI) for MSVC 17.10.35004.147 (Visual Studio Community 2022 Release - amd64)
[kit] Found Kit (trusted): Clang 17.0.3 (GNU CLI) for MSVC 17.10.35004.147 (Visual Studio Community 2022 Release - amd64)
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Co-authored-by: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com>
* committing state, no progress, just thinking through
* fix how we apply and override devenv to ensure we don't accidentally delete preset environment modifications from user
* check if ninja exists and it's the generator, use that to determine if we should add vs devenv as well
* currently broken, but saving state for adding a setting
* this works well, but I need to add back code that prohibits repeated devenv searching with where.exe
* finalize implementation of the setting for useVsDeveloperEnvironment
* minimize branches
* fix import
* update comments
* fix comment
* remove unnecessary comment
* fallback to better architecture/toolset
* update devenv vars and tests
* fix test for mac
* fix tests
* update changelog
* fix test expand and where.exe env
* update test to explicitly test architecture unit test
---------
Co-authored-by: snehara99 <113148726+snehara99@users.noreply.github.com>
* if installDir is a relative path, I calculate it relative to the source dir
* updated location of checking and updating installDir
* combined with expansion check