test: migrate remaining public-api tests to Bazel (#22639)

We now create npm packages to cover all the public api assertions in tools/public_api_guard.
We no longer depend on ts-api-guardian from npm - it is now stale since the repository was archived.
There is no longer a gulp task to enforce or accept the public API, this is in CircleCI as part of running all bazel test targets.

PR Close #22639
This commit is contained in:
Alex Eagle
2018-03-07 11:26:11 -08:00
committed by Kara Erickson
parent b26a90567c
commit 1e6cc42a01
33 changed files with 207 additions and 237 deletions

View File

@ -1,88 +0,0 @@
/**
* @license
* Copyright Google Inc. 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
*/
// NOTE: This list shold be in sync with aio/tools/transforms/angular-api-package/index.js
// NOTE: Some packages have moved to Bazel; these are tested in tools/public_api_guard/BUILD.bazel
const entrypoints = [
'dist/packages-dist/animations/animations.d.ts',
'dist/packages-dist/animations/browser.d.ts',
'dist/packages-dist/animations/browser/testing.d.ts',
// The API surface of the compiler is currently unstable - all of the important APIs are exposed
// via @angular/core, @angular/platform-browser or @angular/platform-browser-dynamic instead.
//'dist/packages-dist/compiler/index.d.ts',
//'dist/packages-dist/compiler/testing.d.ts',
'dist/packages-dist/forms/forms.d.ts',
'dist/packages-dist/http/http.d.ts',
'dist/packages-dist/http/testing.d.ts',
'dist/packages-dist/platform-browser/platform-browser.d.ts',
'dist/packages-dist/platform-browser/animations.d.ts',
'dist/packages-dist/platform-browser/testing.d.ts',
'dist/packages-dist/platform-browser-dynamic/platform-browser-dynamic.d.ts',
'dist/packages-dist/platform-browser-dynamic/testing.d.ts',
'dist/packages-dist/platform-webworker/platform-webworker.d.ts',
'dist/packages-dist/platform-webworker-dynamic/platform-webworker-dynamic.d.ts',
'dist/packages-dist/platform-server/platform-server.d.ts',
'dist/packages-dist/platform-server/testing.d.ts',
'dist/packages-dist/service-worker/service-worker.d.ts',
'dist/packages-dist/service-worker/config.d.ts',
'dist/packages-dist/upgrade/upgrade.d.ts',
'dist/packages-dist/upgrade/static.d.ts',
];
const publicApiDir = 'tools/public_api_guard';
const publicApiArgs = [
'--rootDir',
'dist/packages-dist',
'--stripExportPattern',
'^(__|ɵ)',
'--allowModuleIdentifiers',
'jasmine',
'--allowModuleIdentifiers',
'protractor',
'--allowModuleIdentifiers',
'angular',
'--onStabilityMissing',
'error',
].concat(entrypoints);
module.exports = {
// Enforce that the public API matches the golden files
// Note that these two commands work on built d.ts files instead of the source
enforce: (gulp) => (done) => {
const platformScriptPath = require('./platform-script-path');
const childProcess = require('child_process');
const path = require('path');
childProcess
.spawn(
path.join(__dirname, platformScriptPath(`../../node_modules/.bin/ts-api-guardian`)),
['--verifyDir', path.normalize(publicApiDir)].concat(publicApiArgs), {stdio: 'inherit'})
.on('close', (errorCode) => {
if (errorCode !== 0) {
done(new Error(
'Public API differs from golden file. Please run `gulp public-api:update`.'));
} else {
done();
}
});
},
// Generate the public API golden files
update: (gulp) => (done) => {
const platformScriptPath = require('./platform-script-path');
const childProcess = require('child_process');
const path = require('path');
childProcess
.spawn(
path.join(__dirname, platformScriptPath(`../../node_modules/.bin/ts-api-guardian`)),
['--outDir', path.normalize(publicApiDir)].concat(publicApiArgs), {stdio: 'inherit'})
.on('close', done);
}
};

View File

@ -1,62 +1,26 @@
load("//tools/ts-api-guardian:index.bzl", "ts_api_guardian_test")
[
ts_api_guardian_test(
name = "%s_%s_api" % (
bundle[0],
bundle[1].replace("/", "_"),
),
actual = "packages/%s/npm_package/%s.d.ts" % (
bundle[0],
bundle[1],
),
data = glob([
"%s/**/*.d.ts" % bundle[0],
]) + [
"//packages/%s:npm_package" % bundle[0],
],
golden = "tools/public_api_guard/%s/%s.d.ts" % (
bundle[0],
bundle[1],
),
)
for bundle in [
[
"core",
"core",
],
[
"core",
"testing",
],
[
"common",
"http/testing",
],
[
"common",
"common",
],
[
"common",
"http",
],
[
"common",
"testing",
],
[
"router",
"router",
],
[
"router",
"testing",
],
[
"router",
"upgrade",
],
# TODO(alexeagle): add remaining packages here once they have ng_package's
]
]
[ts_api_guardian_test(
name = "%s_%s_api" % (
bundle[0],
bundle[1].replace("/", "_"),
),
actual = "packages/%s/npm_package/%s.d.ts" % (
bundle[0],
bundle[1],
),
data = glob([
"%s/**/*.d.ts" % bundle[0],
]) + [
"//packages/%s:npm_package" % bundle[0],
],
golden = "tools/public_api_guard/%s/%s.d.ts" % (
bundle[0],
bundle[1],
),
) for bundle in [b[:-len(".d.ts")].split("/", 1) for b in glob(
["**/*.d.ts"],
# The API surface of the compiler is currently unstable - all of the important APIs are exposed
# via @angular/core, @angular/platform-browser or @angular/platform-browser-dynamic instead.
exclude = ["compiler/*"],
)]]

View File

@ -1,7 +0,0 @@
/** @experimental */
export declare class BrowserAnimationsTestingModule {
}
/** @experimental */
export declare class NoopAnimationsTestingModule {
}