84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary", "nodejs_test")
|
|
|
|
nodejs_test_args = [
|
|
# Needed so that node doesn't walk back to the source directory.
|
|
# From there, the relative imports would point to .ts files.
|
|
"--node_options=--preserve-symlinks",
|
|
# TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver
|
|
# See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324
|
|
"--bazel_patch_module_resolver",
|
|
]
|
|
|
|
default_strip_export_pattern = "^ɵ(?!ɵdefineInjectable|ɵinject|ɵInjectableDef)"
|
|
|
|
"""Escapes a Regular expression so that it can be passed as process argument."""
|
|
|
|
def _escape_regex_for_arg(value):
|
|
return "\"%s\"" % value
|
|
|
|
"""
|
|
Builds an API report for the specified entry-point and compares it against the
|
|
specified golden
|
|
"""
|
|
|
|
def api_golden_test(
|
|
name,
|
|
golden,
|
|
entry_point,
|
|
data = [],
|
|
strip_export_pattern = default_strip_export_pattern,
|
|
**kwargs):
|
|
quoted_export_pattern = _escape_regex_for_arg(strip_export_pattern)
|
|
|
|
kwargs["tags"] = kwargs.get("tags", []) + ["api_guard"]
|
|
|
|
nodejs_test(
|
|
name = name,
|
|
data = ["//dev-infra/bazel/api-golden", "//:package.json"] + data,
|
|
entry_point = "//dev-infra/bazel/api-golden:index.ts",
|
|
templated_args = nodejs_test_args + [golden, entry_point, "false", quoted_export_pattern],
|
|
**kwargs
|
|
)
|
|
|
|
nodejs_binary(
|
|
name = name + ".accept",
|
|
testonly = True,
|
|
data = ["//dev-infra/bazel/api-golden", "//:package.json"] + data,
|
|
entry_point = "//dev-infra/bazel/api-golden:index.ts",
|
|
templated_args = nodejs_test_args + [golden, entry_point, "true", quoted_export_pattern],
|
|
**kwargs
|
|
)
|
|
|
|
"""
|
|
Builds an API report for all entrypoints within the given NPM package and compares it
|
|
against goldens within the specified directory.
|
|
"""
|
|
|
|
def api_golden_test_npm_package(
|
|
name,
|
|
golden_dir,
|
|
npm_package,
|
|
data = [],
|
|
strip_export_pattern = default_strip_export_pattern,
|
|
**kwargs):
|
|
quoted_export_pattern = _escape_regex_for_arg(strip_export_pattern)
|
|
|
|
kwargs["tags"] = kwargs.get("tags", []) + ["api_guard"]
|
|
|
|
nodejs_test(
|
|
name = name,
|
|
data = ["//dev-infra/bazel/api-golden"] + data,
|
|
entry_point = "//dev-infra/bazel/api-golden:index_npm_packages.ts",
|
|
templated_args = nodejs_test_args + [golden_dir, npm_package, "false", quoted_export_pattern],
|
|
**kwargs
|
|
)
|
|
|
|
nodejs_binary(
|
|
name = name + ".accept",
|
|
testonly = True,
|
|
data = ["//dev-infra/bazel/api-golden"] + data,
|
|
entry_point = "//dev-infra/bazel/api-golden:index_npm_packages.ts",
|
|
templated_args = nodejs_test_args + [golden_dir, npm_package, "true", quoted_export_pattern],
|
|
**kwargs
|
|
)
|