The dump files used to be written to an agent TEMP directory. Somewhere along the lines they moved to the TestResults directory within the repo itself.
FixesAArnott/Library.Template#167
The test runner is creating *two* cobertura.xml files for each test run. Besides doubling the size of the coverageResults artifact, this makes the `publish-codecoverage.yml` pipeline step do much more work which can take *minutes* instead of seconds.
When an artifact is not ready yet, but other artifacts are and must be prepared, we can now run `artifacts/_pipelines.ps1` multiple times in the pipeline.
To opt out of an earlier pass, the artifact script need only produce 0 files. After an artifact script returns some files, that artifact will be published and will not be published again.
This is similar to `variables/_pipelines.ps1` behavior, which we already run twice.
When investigating test run failures from Azure Pipelines, symbols from test binaries may be just as important as symbols from product binaries. So publish them as pipeline artifacts as well.
Also index all these symbols even in PR builds, since PR builds may fail and investigations may be required.
This makes diagnosing test runner crashes and hangs on Azure Pipelines possible.
After such a failure, a testResults artifact is collected that includes the `Sequence_*.xml` and `testhost.*.dmp` files collected at the timeout or crash.
These files can then be downloaded from the Azure Pipeline artifacts for study.