All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
testMate.test.advancedExecutables
-executableSuffixToInclude
for custom filtering.
- issue related to
files.watcherExclude
. It is not working inv4.8.1
.
Improved logging
- files matching
files.watcherExclude
will be ignored. issue - increased max test file count from
10,000
to100,000
. - refactored configuration change event. Not relevant to user but wort to mention.
testMate.test.advancedExecutables
-executableCloning
: (experimental) If enabled it creates a copy of the test executable before listing or running the tests. NOTE: discovery (--help
) still uses the original file.
- issue related to debugging
- using relative path at test output. users can use Cmd+click to navigate.
- issue preventing to cancel continuous runs: link
Implemented new vscode veature: invalidate result.
doctest improvements
- regression issue related to doctest
- doctest default grouping now uses tags which is based on suites related
- issue that test with same name but different suite are merged in case of doctest related
- issue related to autorun feature.
- issue related to autorun feature. It was not picking up some level of tests. related.
Improved .env file parser
- support 'multi-environment' tests feature
- support for vscode "continuous tests" feature, release note
- issue related to path resolution. Especially Catch2 related on windows but it also effects source file mapping. details
- issue related to path resolution. Especially Catch2 related on windows but it also effects source file mapping. details
- an issue which prevented to unset variables using
null
value in"testMate.cpp.debug.setEnv"
- recursive variable resolution up to 3 levels
testMate.cpp.discovery.loadOnStartup
Fixed broken version.
! BROKEN !
- new variable resolution rule:
${config:<config name>}
where<config name>
can be anything like
- improved progress bar and status bar message
- show more progress in case of reloading workspace.
- refresh button to reload the all the tests
- experimental basic support for GUnit framework.
mergeByLabel
togroupByExecutable
. If it is set to true then groups having the same name won't be distingueshed and all their childern will go under the 1 node. Solves this issue.
- improvements to the built-in default search pattern for waitForBuildProcess
- waitForBuildProcess can now take a string (custom regex search pattern to match processes), see issue328
- changing the
testMate.cpp.discovery.runtimeLimit
option used to take effect only after reloading the window; now it takes effect immediately
- fixed GoogleTest cout and cerr parsin issue#329 and issue#323.
- issue related to waitForBuildProcess
advancedExecutables.[dependsOn]
property triggers the reolad of all related executables. (related)
- Removed location added to executabe test item node. issue
- missing subtest name in output window
- enable run and debug option for doctest subtest
- issue which repeated the label as description for SubTests
- experimental advanced tag support
debug.configTemplate
can now point to a named item inlaunch.json
.
- enable run and debug option for Catch2 sections
- improved
sourceFileMap
resolution
- Test groups like executable, suite and source (
groupByExecutable
,groupBySource
,groupByTags
) will have navigation set to their first found item. This features does not intended to be bullet proof but for the majority of the cases it might provide a useful link. Feel free to provide feedback here.
- some Catch2 related issue which prevented handling
[!shoudfail]
and[!mayfail]
- some issue which messe with the test's path
- various issues
- various issues
- partial support for doctest subcase evaluation (if there is some modiffier it won't do the evaluation)
- support new doctest version: "skipped" and "test_case_success" xml attributes
- hopefully fixes the "infinite test loading" issue
- streamed load of tests
- issue which caused the test message's location not to be resolved.
- issue preventing proper load of gtest tests
- an issue that
testMate.cpp.test.advancedExecutables
framework specific settigns were only pickingcatch2
envFile
now supports.env
format too. (determines from the end of the filename)- removing missing SubCases / Sections
- running tasks feature with limitation: test list of executables won't be reloaded so in case the task results in a new test then that test won't be run.
- Improved Output formatting and colorization
advancedExecutable
->env
variable usage has been fixed
- navigation to source file related issue (again)
- Improved Output formatting and colorization
- navigation to source file related issue
- basic support of
terminal.integrated.env.*
. Limitation: changes of the config are not detected.
- Improved Output formatting and colorization
Replaced Test Explorer with native API.
- doctest: supporting
testMate.cpp.debug.breakOnFailure
.
- issue regarding to doctest's test duration parsing
testMate.cpp.test.advancedExecutables
->fsWatcher
option to circumvent limitations caused byfiles.watcherExclude
.testMate.cpp.debug.configTemplate
->testMate.cpp.debug.setEnv
(Record<string,string>
)
- doctest: supporting
may_fail
,should_fail
,timeout
andexpected_failures
modifiers.
- activation event is
onStartupFinished
from now. This mean stat the extension will be activated every timethe vscode is opened. Hopefully it wont affect the users and the reasoning behind it is that after migrationg to the vscode native testing api it would happen anyway.
- activation event for
testing.__
vscode commands and viewworkbench.view.testing
With this"testExplorer.useNativeTesting": true
has some support.
- some GoogleTest and GoogleBenchmark related error handling issue
Using GitHub actions for releases instead of TravisCI and AppVeyor
NPM update Moving to travis-ci.com Minified code
- regression issue related to
debug.configTemplate
- lot of issues regarding to
debug.configTemplate
't platfrom specific resolution.
Improved documentation NPM update
Improved documentation NPM update
- an issue related to doctest test-grouping
- an issue wich prevented the proper splitting of the test names to short-enough-subsets
- DOCTest output reporter in case of debugging has changed
xml
->console
Nothing really, just typo fixes.
- indexing option for
${workspaceFolder}
: For the last part of the variable try${workspaceFolder[-1]}
- skipped tests will not be run when "Enable autorun" is used.
${workspaceDirectory}
. Use${workspaceFolder}
instead.
- debug extension recognition
- an issue where Catch2 v3 tests with tags were parsed incorrectly
- an issue which stopped the debut button working
Improved logging.
testMate.cpp.test.advancedExecutables
->waitForBuildProcess
: (experimental) Prevents the extension of auto-reloading. With this linking failure might can be avoided. Regex:(cmake|make|ninja|cl|c++|ld|clang|gcc|g++|link|icc|armcc|armclang)
Changed BACK the way how the testMate.cpp.debug.configTemplate
is resolved.
- vscode tries to install extension at
getExtension
so it is replaced.
Logging related changes and NPM update.
Changed the way how the testMate.cpp.debug.configTemplate
is resolved. Hopefully better than it was.
- env variable passing to
ms-vscode.cpptools
Improved stability and performance.
- a bug related to variable flat resolution. Ex.:
${argsFlat}
- populate
sourceFileMap
todebug.ConfigTemplate
with variable${sourceFileMapObj}
. - improved error feedback
Small fixes. Nothing interesting.
Performance improvements related to test listing.
npm update
${argsStr}
and${argsFlat}
forexecutionWrapper
.
- vscode command resolution
${command:<...>}
: From now variables like${command:cmake.buildDirectory}
will be resolved.
- source file resolution
${if(isWin)...}
${osEnvSep}
. Use${osPathEnvSep}
instead.
- resolution of
foo ${match_lowercased}
- for
testGrouping.groupByRegex
andtestGrouping.groupByTagRegex
added${match_lowercased}
and${match_upperfirst}
as alternative of${match}
. Note: regex can contain one grouping(...)
.
groupByTagRegex
sourceFileMap
- Support for Google Benchmark:
One can set a limit which will report a test/benchmark failure in case of the
cpu_time
exceeds it:testMate.cpp.test.advancedExecutables
->gbenchmark
->failIfExceedsLimitNs
. testMate.cpp.test.advancedExecutables
->markAsSkipped
: It can be useful espacially in case of GoogleBenchmark.
testMate.cpp.discovery.retireDebounceLimit
Performance improvements.
prependTestRunningArgs
was ignored in case of debugging.
- Workaround for
,
char in doctest's test-name.
- Handling more gtest cases
- (experimental)
testMate.advancedExecutables.executionWrapper
: Probably your best option if your executables need some initinalization of enviroment.
testMate.advancedExecutables.envFile
: Probably your best option if your executables need some initinalization of enviroment.
- Catch2 tag parsing
- Potential Catch2 xml parsing issue
- Migration from old version is removed. (If one still want it, they can downgrade for temporarily.)
- Support for open-vsx https://github.com/eclipse/openvsx/wiki/Publishing-Extensions
- file link recognition for workaround
- npm update
- Logging improvemets
- Passing serializeble data for Live Share
- Recognising regular links to workaround this issue.
- This version tries to limit the coloring to fix an issue.
- Improved link detection
- Catch2 v3 preview fixes
Minor improvmenets
Logging improvements
Stability improvements
- Error message in case of attempt of debugging suites.
- Support for Catch2 v3.x
- Option for colored debug output
enableOutputColouring
- Scoping for
testMate.test.advancedExecutables
. Example:"testMate.test.advancedExecutables": [{ "pattern": "<default pattern>", "darwin": { "pattern":"<value on mac>" }, "win32": { "pattern":"<value on win>" }, "linux": { "pattern":"<value on linux>" }, .... }]
- Now tests can be added to the run-queue even if there are some tests running already. (UI experience isn't the best though.)
- Absolute patterns in Windows can now point to a different volume than the workspace folder.
discovery.strictPattern
Lot of changes under the hood to make your life easier.
- Support for custom
GTEST_FLAG_PREFIX
. It is recognised automatically by running the executable with--help
. - Support for running vscode tasks before tests. (Experimental)
- Support for
strictPattern
: Test loading will fail if one of the matched executables cannot be loaded.
- Cache file naming convention has changed. Relates:
discovery.testListCaching
Logging improvmenets
"Proofreading"
It's a big day! The extension was finally renamed to C++ TestMate
.
(Finally, I mean I've been planning this since a long time ago in a galaxy far, far away....)
Lots of small tweaks were added. (Please be patient and report issuess. ^^)
May the 4th be with you 🖖 (Yes, I know.. ^^)
- All the configs has moved and renamed. ⚠ (Merge logic is implemented to make the transition easier.)
- ❌
defaultEnv
is removed. From now evironment variables can be set only in the test.advancedExecutables.
Fine-tuning colorization
Catch2 long filename recognition improvement.
Output coloring improvements.
Hint: Are you working on an executable or a TestCase or just on 1 test?
Just right click on it and
Enable autorun
. Next time you recompile your executable it will run it automatically.
Sentry was broken
- Better path resolution in case of output parser.
- Navigation from outout window to source
- Colored output (if not overridden by other extension)
- GoogleTest parsing. Nobody told me that on windows GoogleTest has a different format
- GoogleTest debugging
- other small stuffs
- Exeprimental multirun feature. Run the same executable multiple times. See config: parallelizationLimit.
- Experimental grouping has changed. More general and flexible. (again)
- Experimental grouping has changed. More general and flexible.
- An issue when too much test caused
ENAMETOOLONG
.
Pesky bug fixes and tons of improvements
Experiment feature: testGrouping
: Groups the tests inside the executable. (Example)
- an issue (#169) when source file path resolution didn't work in case of DOCTest
additionalRunArguments
prependTestListingArgs
: Similar toadditionalRunArguments
but it prepends instead of appending.prependTestRunningArgs
npm update
README fixes and option to force add .../_deps/...
.
- Ignoring more known extensions and also ignoring
_deps
subfolder. This change might cause a problem for some user but hopefully just makes the test discovery much faster.
- Google Test framework experimental discovery.
Improved logging and some extra error handling.
Improved logging
- gutter location if the assertion comes from a different file (ex.:
#include
).
- catch2 custom failure parsing
- experimental support to override test framework recognition.
- experimental Catch2 benchmark support
- doctest exception handling
catch2TestExplorer.executables
used as an array cannot contain strings anymore. Example:[ "*.test.exe" ]
-->[ { "pattern": "*.test.exe" } ]
- Some mechanism which prevent to enumerate test for multiple times when the file hasn't changed.
- GoogleTest version detection
- Enhanced variable for
catch2TestExplorer.executables
. From now array indexing is supported like:${relDirpath[:-1]}
:a/b/c
=>a/b
${base2Filename}
=>${filename[:-2]}
${ext2Filename}
=>.${filename[-2:-1]}
${base3Filename}
=>${filename[:-3]}
${ext3Filename}
=>${filename[-3:-2]}
${parentDirname}
=>${relPath[-1:]}
Just some logging related fixes, nothing interesting.
- Catch2 parsing bug
Nothing interesting:
- npm update
- logging framework usage
- slightly more flexible Catch2 test list parsing.
Sentry fix: webpack caused it.
- experimental support for doctest version >= 2.3.6
Finally I decided to use webpack. Package is the fraction of the previous version and loading time is faster.
- Catch2 parsing errors.
- Google Test parsing improvements
- a bug related to bactick in SECTION name
- Catch2 output information format has been changed. (Hopefully a bit more readable.)
Logging improvements.
Logging improvements.
Logging improvements.
catch2TestExplorer.logSentry: "enable"
.
debugConfigTemplate
now filterslaunch.json
a bit more precisely
Nothing really changed (just slightly), but documentation was updated.
Fixing vulnerabilites in packages.
- Resolving
${os_env:<varname>}
will result in empty string if if<varname>
is not set. Use${os_env_strict:<varname>}
which will not set the target variable if there is no<varname>
environment variable.
catch2TestExplorer.workerMaxNumber
now "really" applies for the test exploration phase too
catch2TestExplorer.workerMaxNumber
now applies for the test exploration phase too
- The path is relative to the test file. If the source file is already open vscode would open it another time using the unnormalized file path.
- Updated googletest links.
catch2TestExplorer.retireDebounceTimeMilisec
to the configs.
Fixed security vulnerability.
catch2TestExplorer.executables
'spattern
resolves variables related to the process's environment variables (Ex.:${os_env:PATH}
).
catch2TestExplorer.defaultExecParsingTimeoutSec
to the configs.
catch2TestExplorer.googletest.gmockVerbose
to the configs.catch2TestExplorer.googletest.treatGmockWarningAs
to the configs.
executables
's properties can contains variables related to environment variables (ex.:${os_env:PATH};/mypath
).
npm update: security alert fix.
"Google Test improvements. Now I use my product, so I've found a lot a of small issues." Vol. 2.
- Google Mock output parsing enhancements.
- a bug related to config retrieval.
- additional file extensions recognized as valid executable:
.cmd
and.bat
(PR)
Google Test improvements. Now I use my product, so I've found a lot a of small issues. :)
- Google Test was losing it's state when the exec was touched.
- a bug which ignored the user and global config values.
- a logic which tries to create a debug template on the fly.
It searches for configurations in the workspacefolder's
.vscode/launch.json
. It will choose the first one which's"request"
property is"launch"
and hastype
property.
Just updated the README.md and updated the packages.
- a bug related to parsing a Google Test with 'TypeParam'.
- a bug which occured when the test executables crashed on windows.
- a misleading default config.
- a bug which reloads the suite in case of the test crashes.
- some vulnerabilities in packages (npm audit fix)
- section info in description
- some issue with
dependsOn
related toGaze
fs-watcher.
executables
'sdependOn
(type: string[]) property is no longer experimental. Be careful with it. It eats file descriptors and defecates test executions.- section result stat to description and tooltip.
executables
'sdescription
property for nicer labels- (experimental)
executables
'sdependOn
(type: string[]) property. Be careful with it. It eats file descriptors and defecates test executions.
- fswatcher library has been replaced:
chokidar
->gaze
. There were some problem with it on OSX. Don't care, threw it out.
- a bug related to abs-path watcher (
chokidar
).
- support for
GTEST_SKIP()
. - (experimental) glob pattern for patterns outside the workspace directory
- (experimental) watcher for executables outside the workspace directory
- a bug which caused to run all tests of a suite including the skipped ones too
- experimental feature:
catch2TestExplorer.enableTestListCaching
- scripts like
.py
,.sh
,.js
are allowed for those who are using wrappers. Related issue.
- a bug related to debugging (microsoft/vscode#70125).
- test suite loading order from now is not deterministic. One can set
testExplorer.sort
for ordering.
- doesn't send skipped events for skipped tests: This will preserve
- in case of Google Test 'DISABLED_' prefix is removed from the label. The icon indicates it anyway.
- it seems Google Test's test names first character can be a digit.
- the test list parser timeout from 5 to 30 seconds.
- section picker for debugging.
- a bug related to env variables in case of debugging.
testExplorer.sort
, so I removed my logic. If you want the old ordering set this tobyLabelWithSuitesFirst
.- tooltip: it will show more info about the suites and tests.
catch2TestExplorer.defaultRngSeed
, which didn't work at all.
- config scheme validation is much better
- a small bug related to
executables
's environment variables.
Stability improvements.
- A list of non-executable extensions has been extended to:
'c', 'cmake', 'cpp', 'cxx', 'deb', 'dir', 'gz', 'h', 'hpp', 'hxx', 'ko', 'log', 'o', 'php', 'py', 'rpm', 'sh', 'so', 'tar', 'txt'
- a bug related to navigation to source.
This version probably contains stability improvements ✌️, but in case it doesn't work on all platforms as I expect, you can downgrade it in the vscode's extension manager and please file an issue about the bug. 🙏
REMARK: A list of non-executable extensions are hard-coded: ['py', 'sh', 'cmake', 'deb', 'o', 'so', 'rpm', 'tar', 'gz', 'php', 'ko']
.
And on Windows everything is filtered what is not ends with .exe
;
- sending
SIGKILL
in case of second cancel. (Clicking onto the cancel button after the first cancel wasn't successful.)
- In case of multiple adapters or workspace folders, if there are no tests in a particular workspace folder it won't be shown in the Test Explorer.
- a bug related to Google Test framework's test list loading. (Issue)
Sorting has been change to alphabetic order.
Google Test tests are grouped.
- a bug related to suite name uniquification.
Performance and stability improvements.
Performance and stability improvements.
- a bug which caused that
files.exclude
were also applied to pattern. Not anymore. - a bug which caused to show not file names but patterns in the explorer.
- a bug which allowed suite duplications if more patterns were matching.
- a bug related to Google Test framework:
INSTANTIATE_TEST_CASE_P
.
- a bug related to
defaultCwd
anddefaultEnv
andexecutables
'scwd
.
- Handling: Catch2: INFO, WARN, FAIL, std::cout, std::cerr
catch2TestExplorer.enableSourceDecoration
will be removed. UsetestExplorer.errorDecoration
.
fs-extra
was only a devDependencie, so the extension couldn't load.
- Debugging a Google Test did run all the tests.
Google Test framework support has been added. It is in experimental phase.
- bug related to loading test list with duplicated test names
- a bug related to autorun see
Better error handling and logging.
catch2TestExplorer.defaultRunningTimeoutSec
to prevent infinite loops
Stability improvements.
- Source file path resolution
- Bug related to automatic test reloading
Updated README.md
Unnecessary codes and packages are removed from extension package.
Also old releases will be removed from Github releases page,
because of a security issue
related to vscode
package.
- Security issue related to event-stream https://code.visualstudio.com/blogs/2018/11/26/event-stream
Stability improvements.
- relative patter/path outside of workspace didn't work
- tests are added/removed if change detected under running tests
Performance and stability improvements. Improved logging.
catch2TestExplorer.defaultNoThrow
option. Skips all assertions that test that an exception is thrown, e.g. REQUIRE_THROWS. This is a Catch2 parameter: --nothrow.
- debugger recognition. (ms-vscode.cpptools's documentation is incorrect)
catch2TestExplorer.debugBreakOnFailure
option. It is true by default.- Change of test file (ex.:recompilation) triggers "autorun" feature.
(Right click on test/suite in text explorer -> Enable to enable autorun for the selected test/suite.)
This basically means that the selected test/suite will run in case of any filesystem event related to the
executables
variable. It can be really useful if one would like to run a test (or suite) automatically after recompiliation.
Performance and stability improvements.
- It reloads suite if it finds any new tests.
- A bug in package.json. It couldn't load the tests by default.
- A bug related to jumping to source.
- A bug related to xml parsing.
For development:
Now, if there is 'something' in the CHANGELOG without date (ex.: "[1.2.3]") and it is merged to the master, a deploy job will run it will:
- Appends the
CHANGELOG.md
's new version-line with the current UTC date: "[1.2.3]" --> "[1.2.3] - 2018-10-31".- Updates the version number in
package.json
according to the one inCHANGELOG.md
.- Creates a commit about it.
- Creates a tag too.
- Creates a
GitHub release
for the tag and uploads the generated.vsix
file.- Publish the new version to Visual Studio Marketplace.
Hopefully it works (partially tested only 🤞).
executables
'spath
. Now it is mapped topattern
, so works, but it will be removed in the future.
Lot of things new under the hood, but lets talk about the 'API' change.
-
Renamed
defaultExecWatchTimeout
-->defaultWatchTimeoutSec
.- Also the unit has changed from millisecond to second.
-
Renamed
debugConfigurationTemplate
-->debugConfigTemplate
. -
Renamed
path
property ofexecutables
-->pattern
. (Technicallypath
still can be used as an alias.) -
Changed behaviour of
path
property ofexecutables
. Now it can understand "VSCode patterns". (Details) - These work for only path's inside the workspace directory. Paths outside of it can be used with absolute path or with relative to working directory (ex.:../build/test.exe
), but without patterns (and without file-watch).*
to match one or more characters in a path segment?
to match on one character in a path segment**
to match any number of path segments, including none{}
to group conditions (e.g. {**/*.html,**/*.txt
} matches all HTML and text files)[]
to declare a range of characters to match (e.g.,example.[0-9]
to match on example.0, example.1, …)
-
File system is watched through the previously mentioned pattern (only inside the workspace directory), and newly created executables will be added automatically, deleted ones will be removed and changed ones will be refreshed.
-
Variable substitution has been changed. (See README for details.)
- Removed
regex
property ofexecutables
. - Removed
recursiveRegex
property ofexecutables
.
- Configuration:
catch2TestExplorer.defaultExecWatchTimeout
: Test executables are being watched. In case of one compiles too much this variable can help with it.
Bugfix release
- Parsing 'Randomness' values
- Fixed
catch2TestExplorer.defaultRngSeed
- Configuration
catch2TestExplorer.defaultRngSeed
is added. - Test's running duration is shown.
- package.json workerMaxNumber naming has been fixed.
- Lots of bugs ave been fixed. (Typically platform related ones.)
- Skipped tests are recognised.
catch2TestExplorer.workerMaxNumber
, see Changed section.- Tricky test names (with spaces in it) are handled.
- Just global worker limitation exists from now so, it was renamed
catch2TestExplorer.globalWorkerMaxNumber
=>catch2TestExplorer.workerMaxNumber
catch2TestExplorer.defaultGroupFileLevelRun
was removed. Now just group file level run exists.- Thats why
catch2TestExplorer.defaultWorkerMaxNumberPerFile
was unnecessary too, removed. - And also
catch2TestExplorer.executables
'sworkerMaxNumber
was removed. catch2TestExplorer.globalWorkerMaxNumber
, see Changed section.
catch2TestExplorer.defaultGroupFileLevelRun
. Check [README.md] for details. If you have a loads of tests in a file or your test file starts slowly because you should benefit from this.
- Project structure was refactored.
- Navigate to source now works before running the tests too. (Except on Windows. Probably that is not the problem of this extension.)
- npm update.
recursiveRegex
flag has been added.
- Fixed debugConfigurationTemplate config default value.
- Debug button works now if
debugConfigurationTemplate
is properly set.
- IMPORTANT!!! Config variable names has been changed. Check the updated documentation: README.md
- Fixes some issues related to test auto-reloading after compilation.
- Nothing really, just refactoring.
- Everything. This is the initial version for review.