Use hashed file contents as unique test ID by ozyx · Pull Request #1605 · microsoft/nodejstools
Issue #1561
Bug
TFS unable to detect the same test failing in a previous build if the path of the *.js file differs.
Since a test's path is used in its FullyQualifiedName, the same test run on two different agents with different drive names (i.e: D:/ vs. C:/ drives) will not be recognized as the same test by TFS.
Fix
Hash the contents of the test file using SHA1 (so as not to slow down test discovery significantly) and use this as a ModuleName / unique ID.
Previous FullyQualifiedId: C:\some\path\to\my\test.js::Suite 1 Test 1::Mocha
New FullyQualifiedId: test[60E439FF4023183BDC8C]::Suite 1 Test 1::Mocha
NOTE: An assumption using this method is that two test files do not exist in the same project with the exact same name and contents.
Testing
- Create sample test project
- Copy project to a different path
- Open both projects
- The same test in both projects should have the same
FullyQualifiedId
This will ensure intended TFS behavior of failed test detection in current vs. previous builds.
Please let me know if there are any improvements or changes I should make. Thanks!