aspect-build / aspect-build/rules_js

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

Open
#2,190 3 comments 0 reactions 1 assignee Claimed by @jbedard View on GitHub
bug help wanted
Dominant language
Starlark
Stars
378
Forks
183
Avg merge
1d 9h
Merged PRs (30d)
32

Description

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`.

```starlark
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:
```starlark
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",
)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.