Skip to content

Modify coverage ranges for code run in VM  #524

Open

Description

@skerit
  • Version: v20.8.1
  • Platform: Linux 6.6.4-arch1-1

I run certain code like this:

let head = '(function(module, exports, require, __dirname, __filename, ' + argument_config.names.join(', ') + ') {"use strict";\n';

let exported_function = libvm.runInThisContext(head + source + '\n/**/})', {
	filename: path,
	lineOffset: -1,
});

And contrary to nyc, c8 is able to create coverage for this.
Unfortunately, because of the added header the coverage positions are wrong.

Would it be possible for c8 to use the lineOffset or columnOffset property somehow?

Activity

  1. cenfun commented on Mar 17, 2024

    @cenfun
    Contributor
  2. skerit commented on Mar 17, 2024

    @skerit
    Author

    wrapperLength is more like a global setting, not something that you can specify for code run using the vm module.
    If being able to dynamically set the wrapper length using comments like /* c8 wrapper-length 47 */ that would be great.
    Or just being able to "reset" the column count maybe like /* c8 end wrapper */

  3. ericmorand commented on Oct 26, 2024

    @ericmorand

    What is the point, ultimately? Covering the code provided as source?

    Also, how would your idea work with your example? You don't know the length of the wrapper at build time:

    (function(module, exports, require, __dirname, __filename, ' + argument_config.names.join(', ') + ') {"use strict";\n
    

    The length depend on the argument_config runtime value. What value would you set in the c8 wrapper-length pragma?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions