diff --git a/packages/compiler-cli/test/compliance/README.md b/packages/compiler-cli/test/compliance/README.md index acfa605089..0f63b497ed 100644 --- a/packages/compiler-cli/test/compliance/README.md +++ b/packages/compiler-cli/test/compliance/README.md @@ -185,6 +185,11 @@ bazel run //packages/compiler-cli/test/compliance/test_cases: where to replace `` with the path (relative to `test_cases`) of the directory that contains the `GOLDEN_PARTIAL.js` to update. +To update all golden partial files, the following command can be run: + +```sh +node packages/compiler-cli/test/compliance/update_all_goldens.js +``` ## Debugging test-cases diff --git a/packages/compiler-cli/test/compliance/update_all_goldens.js b/packages/compiler-cli/test/compliance/update_all_goldens.js new file mode 100644 index 0000000000..be56ef57d5 --- /dev/null +++ b/packages/compiler-cli/test/compliance/update_all_goldens.js @@ -0,0 +1,35 @@ +#!/usr/bin/env node +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +// tslint:disable:no-console +const {exec} = require('shelljs'); + +process.stdout.write('Gathering all partial golden update targets'); +const queryCommand = + `yarn -s bazel query --output label 'filter('golden.update', kind(nodejs_binary, //packages/compiler-cli/test/compliance/test_cases:*))'`; +const allUpdateTargets = + exec(queryCommand, {silent: true}).trim().split('\n').map(test => test.trim()); +process.stdout.clearLine(); +process.stdout.cursorTo(0); + +for (const [index, target] of allUpdateTargets.entries()) { + const progress = `${index + 1} / ${allUpdateTargets.length}`; + process.stdout.write(`[${progress}] Running: ${target}`); + const commandResult = exec(`yarn -s bazel run ${target}`, {silent: true}); + process.stdout.clearLine(); + process.stdout.cursorTo(0); + if (commandResult.code) { + console.error(`[${progress}] Failed run: ${target}`); + console.group(); + console.error(commandResult.stdout || commandResult.stderr); + console.groupEnd(); + } else { + console.log(`[${progress}] Successful run: ${target}`); + } +}