diff --git a/tools/symbol-extractor/BUILD.bazel b/tools/symbol-extractor/BUILD.bazel index 1a7d79470f..fbdd5b7c53 100644 --- a/tools/symbol-extractor/BUILD.bazel +++ b/tools/symbol-extractor/BUILD.bazel @@ -5,7 +5,6 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") ts_library( name = "lib", - testonly = 1, srcs = glob( ["**/*.ts"], exclude = [ diff --git a/tools/symbol-extractor/cli.ts b/tools/symbol-extractor/cli.ts index 915b732257..6426485044 100644 --- a/tools/symbol-extractor/cli.ts +++ b/tools/symbol-extractor/cli.ts @@ -10,14 +10,9 @@ import * as fs from 'fs'; import * as path from 'path'; import {SymbolExtractor} from './symbol_extractor'; -// These keys are arbitrary and local to this test. -const update_var = 'UPDATE_GOLDEN'; -const update_val = 1; - if (require.main === module) { - const doUpdate = process.env[update_var] == update_val; const args = process.argv.slice(2) as[string, string]; - process.exitCode = main(args, doUpdate) ? 0 : 1; + process.exitCode = main(args) ? 0 : 1; } /** @@ -27,9 +22,10 @@ if (require.main === module) { * cli javascriptFilePath.js goldenFilePath.json * ``` */ -function main(argv: [string, string], doUpdate: boolean): boolean { +function main(argv: [string, string, string] | [string, string]): boolean { const javascriptFilePath = require.resolve(argv[0]); const goldenFilePath = require.resolve(argv[1]); + const doUpdate = argv[2] == '--accept'; const javascriptContent = fs.readFileSync(javascriptFilePath).toString(); const goldenContent = fs.readFileSync(goldenFilePath).toString(); @@ -46,8 +42,7 @@ function main(argv: [string, string], doUpdate: boolean): boolean { if (!passed) { console.error(`TEST FAILED!`); console.error(` To update the golden file run: `); - console.error( - ` bazel run --define ${update_var}=${update_val} ${process.env['BAZEL_TARGET']}`); + console.error(` bazel run ${process.env['BAZEL_TARGET']}.accept`); } } return passed; diff --git a/tools/symbol-extractor/index.bzl b/tools/symbol-extractor/index.bzl index e1af4475f2..fd96fbbc4d 100644 --- a/tools/symbol-extractor/index.bzl +++ b/tools/symbol-extractor/index.bzl @@ -6,9 +6,13 @@ """This test verifies that a set of top level symbols from a javascript file match a gold file. """ -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_test") +# This does a deep import under //internal because of not wanting the wrapper macro +# because it introduces an extra target_bin target. +load("@build_bazel_rules_nodejs//internal/node:node.bzl", "nodejs_test", "nodejs_binary") def js_expected_symbol_test(name, src, golden, **kwargs): + """This test verifies that a set of top level symbols from a javascript file match a gold file. + """ all_data = [src, golden] all_data += [Label("//tools/symbol-extractor:lib")] entry_point = "angular/tools/symbol-extractor/cli.js" @@ -20,3 +24,11 @@ def js_expected_symbol_test(name, src, golden, **kwargs): templated_args = ["$(location %s)" % src, "$(location %s)" % golden], **kwargs ) + + nodejs_binary( + name = name + '.accept', + data = all_data, + entry_point = entry_point, + templated_args = ["$(location %s)" % src, "$(location %s)" % golden, '--accept'], + **kwargs + )