Skip to content

[Bug]: entry_point is duplicated when also included in data #2190

@allsey87

Description

@allsey87

For a complete MRE of this issue including a VS Code devcontainer see: https://github.com/allsey87/aspect_rules_js_mre

This issue arises when a custom rule generate a single Javascript file that needs to be tested. For example, assume in the following BUILD file that custom_rule with name output returns a DefaultInfo provider with a single file output.js.

load("@aspect_rules_js//js:defs.bzl", "js_test")
load("//:custom_rule.bzl", "custom_rule")

custom_rule(
    name = "output",
)

js_test(
    name = "validate",
    entry_point = "output.js",
    data = [":output"],
    timeout = "short",
)

If data is omitted, we get an error:

Copying file output.js failed: missing input file '//:output.js'

If data is provided, we get the error:

file 'output.js' is generated by these conflicting actions:
Label: //:output, //:validate

For now, the only workaround (that I know of) is to create a custom wrapper that launches output.js:

load("@aspect_rules_js//js:defs.bzl", "js_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("//:custom_rule.bzl", "custom_rule")

custom_rule(
    name = "output",
)

write_file(
    name = "wrapper",
    out = "wrapper.js",
    content = [
        "require('./output.js')"
    ]
)

js_test(
    name = "validate",
    entry_point = "wrapper.js",
    data = [":output"],
    timeout = "short",
)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinghelp wantedAspect isn't prioritizing this, but the community could

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions