Skip to content

Commit

Permalink
test: add npm_package(root_paths) test (#496)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbedard authored Oct 11, 2022
1 parent f5876b8 commit 112a613
Show file tree
Hide file tree
Showing 9 changed files with 159 additions and 0 deletions.
11 changes: 11 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@ npm_link_package(
src = "//examples/npm_package/packages/pkg_b",
)

# Manually linked pkg-c with additional use cases.
npm_link_package(
name = "node_modules/@mycorp/pkg-c1",
src = "//examples/npm_package/packages/pkg_c:pkg_c1",
)

npm_link_package(
name = "node_modules/@mycorp/pkg-c2",
src = "//examples/npm_package/packages/pkg_c:pkg_c2",
)

gazelle_binary(
name = "gazelle_bin",
languages = ["@bazel_skylib//gazelle/bzl"],
Expand Down
90 changes: 90 additions & 0 deletions examples/js_binary/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -502,3 +502,93 @@ js_test(
entry_point = "npm_version_test.js",
include_npm = True,
)


####################################################
# Use case 13
# npm_package() with root_paths[], linked and consumed
# https://github.com/aspect-build/rules_js/issues/471

write_file(
name = "write13",
out = "case13.js",
content = [
"""require('fs').writeFileSync(
process.argv[2],
JSON.stringify(require(process.argv[3]))
)""",
],
)

js_binary(
name = "bin13",
data = [
"//:node_modules/@mycorp/pkg-c1",
"//:node_modules/@mycorp/pkg-c2",
],
entry_point = "case13.js",
)

write_file(
name = "expected13-1-out",
out = "expected13-1-out.json",
content = [
"""{"name":"c1"}""",
],
visibility = ["//visibility:private"],
)

js_run_binary(
name = "run13-1",
args = [
"out13-dist-1/out13-1",
"@mycorp/pkg-c1",
],
chdir = package_name(),
out_dirs = ["out13-dist-1"],
tool = ":bin13",
)

directory_path(
name = "out13-1",
directory = ":run13-1",
path = "out13-1",
)

diff_test(
name = "test13-1",
file1 = ":expected13-1-out.json",
file2 = ":out13-1",
)

write_file(
name = "expected13-2-out",
out = "expected13-2-out.json",
content = [
"""{"name":"c2"}""",
],
visibility = ["//visibility:private"],
)

js_run_binary(
name = "run13-2",
args = [
"out13-dist-2/out13-2",
"@mycorp/pkg-c2",
],
chdir = package_name(),
out_dirs = ["out13-dist-2"],
tool = ":bin13",
)

directory_path(
name = "out13-2",
directory = ":run13-2",
path = "out13-2",
)

diff_test(
name = "test13-2",
file1 = ":expected13-2-out.json",
file2 = ":out13-2",
)
37 changes: 37 additions & 0 deletions examples/npm_package/packages/pkg_c/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
load("@aspect_rules_js//npm:defs.bzl", "npm_package")

# The terminal npm_package target for this package. This target is linked
# manually in the root of the pnpm workspace with `npm_link_package`.
# This npm_package uses root_paths[] to pull some files into the root package
# to test cases such as https://github.com/aspect-build/rules_js/issues/471.
npm_package(
name = "pkg_c1",
srcs = [
"data1/package.json",
"data1/pkg-c.json",
"src/index.js",
],
package = "@mycorp/pkg-c1",
root_paths = [
package_name(),
package_name() + "/src",
package_name() + "/data1",
],
visibility = ["//visibility:public"],
)

npm_package(
name = "pkg_c2",
srcs = [
"data2/package.json",
"data2/pkg-c.json",
"src/index.js",
],
package = "@mycorp/pkg-c2",
root_paths = [
package_name(),
package_name() + "/src",
package_name() + "/data2",
],
visibility = ["//visibility:public"],
)
4 changes: 4 additions & 0 deletions examples/npm_package/packages/pkg_c/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# @mycorp/pkg-c* 1+2* packages

'@mycorp/pkg-c1' and '@mycorp/pkg-c2' are an example of packages using different
configurations of `npm_package(root_paths)` to produce different packages.
5 changes: 5 additions & 0 deletions examples/npm_package/packages/pkg_c/data1/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "@mycorp/pkg-c1",
"private": true,
"dependencies": {}
}
3 changes: 3 additions & 0 deletions examples/npm_package/packages/pkg_c/data1/pkg-c.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"name": "c1"
}
5 changes: 5 additions & 0 deletions examples/npm_package/packages/pkg_c/data2/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "@mycorp/pkg-c2",
"private": true,
"dependencies": {}
}
3 changes: 3 additions & 0 deletions examples/npm_package/packages/pkg_c/data2/pkg-c.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"name": "c2"
}
1 change: 1 addition & 0 deletions examples/npm_package/packages/pkg_c/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('./pkg-c.json')

0 comments on commit 112a613

Please sign in to comment.