Akaedintov
Akaedintov

Reputation: 795

OpenCppCoverage Cannot find path for the handle

I'm using a CI workflow with Jenkins.

A bat file is generated at the end of every compilation, which looks like this:

OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_add_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_add_test_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_cluster_around_center_tests_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_multiple_cluster_centers_test_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin --input_coverage=coverage_results_bfs_add_test_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov  --export_type=cobertura:coverage_results.xml -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_radius_test_TESTTARGET.exe

My test runs always fail due to an unambiguous bug in opencppcoverage: Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.

D:\Jenkins\workspace\bfsearch>./runtests.bat

D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_add_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_add_test_TESTTARGET.exe 
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_cluster_around_center_tests_TESTTARGET.exe 
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_multiple_cluster_centers_test_TESTTARGET.exe 
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin --input_coverage=coverage_results_bfs_add_test_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov  --export_type=cobertura:coverage_results.xml -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_radius_test_TESTTARGET.exe 
Argument of input_coverage <coverage_results_bfs_add_test_TESTTARGET.exe.cov> does not exist.
OpenCppCoverage Version: 0.9.5.2

Usage: [options] -- program_to_run optional_arguments:

Command line only:
  -v [ --verbose ]                 Verbose mode.
  -q [ --quiet ]                   Quiet mode.
  -h [ --help ]                    Show help message.
  --config_file arg                Filename of a configuration file.

Command line and configuration file:
  --modules arg (=*)               The pattern that module's paths should 
                                   match. Can have multiple occurrences.
  --excluded_modules arg           The pattern that module's paths should NOT 
                                   match. Can have multiple occurrences.
  --sources arg (=*)               The pattern that source's paths should 
                                   match. Can have multiple occurrences.
  --excluded_sources arg           The pattern that source's paths should NOT 
                                   match. Can have multiple occurrences.
  --input_coverage arg             A output path of export_type=binary. This 
                                   coverage data will be merged with the 
                                   current one. Can have multiple occurrences.
  --export_type arg (=html)        Format: <exportType>:<outputPath>.
                                   <exportType> can be: binary, cobertura, html
                                   <outputPath> (optional) output file or 
                                   directory for the export.
                                   Example: html:MyFolder\MySubFolder
                                   This flag can have multiple occurrences.
  --working_dir arg                The program working directory.
  --cover_children                 Enable code coverage for children processes.
  --no_aggregate_by_file           Do not aggregate coverage for same file 
                                   path.
  --unified_diff arg               Format: <unifiedDiffPath>?<rootFolder>
                                   <unifiedDiffPath> path of the unified diff 
                                   file. Git users can use git diff output.
                                   <rootFolder> (optional) root folder for 
                                   paths in the diff file.
                                   See documentation for limitations.
  --continue_after_cpp_exception   Try to continue after throwing a C++ 
                                   exception.

Build step 'Execute Windows batch command' marked build as failure
Skipping Cobertura coverage report as build was not UNSTABLE or better ...
Can you help me with this? The same script was working a month ago, now it doesn't. Is there something related to windows updates ? I've also looked at the source code, there's no such code at HandleInformation.cpp:85 that can cause an error like that. Is source code updated in the repository? 

I've installed the latest version, the problem persists.

Here's a quick project I've created to test the issue.

https://github.com/onatbas/OpenCppCoverageTestFail

I've included the verbose output.

I'm running Windws 7 x64. I don't have any antivirus software.

Thanks

Upvotes: 2

Views: 3871

Answers (3)

OpenCppCoverage
OpenCppCoverage

Reputation: 13

Based on https://github.com/OpenCppCoverage/OpenCppCoverage/issues/84, it should be fixed in OpenCppCoverage 0.9.8.0.

Upvotes: 1

hamaney
hamaney

Reputation: 498

Option one: You have to specify the full path for the .cov files argument for "--input_coverage". So your last line should look like this:

--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_add_test_TESTTARGET.exe.cov
--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov
--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov

Option two: at the top of your .bat file have cd to the bin file.

cd D:\Jenkins\workspace\bfsearch\bin

Upvotes: 0

eggbomb
eggbomb

Reputation: 11

For me I was able to get around this issue by using a command prompt with that was run as Admin.

Upvotes: 0

Related Questions