test(core): add a symbols test for renderer2 code (#23436)
PR Close #23436
This commit is contained in:
parent
fd48e53986
commit
acf6781ccc
|
@ -0,0 +1,69 @@
|
||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
load("//tools:defaults.bzl", "ts_library", "ng_module")
|
||||||
|
load("//tools/symbol-extractor:index.bzl", "js_expected_symbol_test")
|
||||||
|
load("//packages/bazel/src:ng_rollup_bundle.bzl", "ng_rollup_bundle")
|
||||||
|
load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test")
|
||||||
|
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
|
||||||
|
|
||||||
|
ng_module(
|
||||||
|
name = "hello_world",
|
||||||
|
srcs = ["index.ts"],
|
||||||
|
deps = [
|
||||||
|
"//packages/core",
|
||||||
|
"//packages/platform-browser-dynamic",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
ng_rollup_bundle(
|
||||||
|
name = "bundle",
|
||||||
|
# TODO(alexeagle): This is inconsistent.
|
||||||
|
# We try to teach users to always have their workspace at the start of a
|
||||||
|
# path, to disambiguate from other workspaces.
|
||||||
|
# Here, the rule implementation is looking in an execroot where the layout
|
||||||
|
# has an "external" directory for external dependencies.
|
||||||
|
# This should probably start with "angular/" and let the rule deal with it.
|
||||||
|
entry_point = "packages/core/test/bundling/hello_world_r2/index.js",
|
||||||
|
deps = [
|
||||||
|
":hello_world",
|
||||||
|
"//packages/core",
|
||||||
|
"//packages/platform-browser-dynamic",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
ts_library(
|
||||||
|
name = "test_lib",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = glob(["*_spec.ts"]),
|
||||||
|
deps = [
|
||||||
|
"//packages:types",
|
||||||
|
"//packages/core/testing",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
jasmine_node_test(
|
||||||
|
name = "test",
|
||||||
|
data = [
|
||||||
|
":bundle",
|
||||||
|
":bundle.js",
|
||||||
|
":bundle.min.js.brotli",
|
||||||
|
":bundle.min_debug.js",
|
||||||
|
],
|
||||||
|
deps = [":test_lib"],
|
||||||
|
)
|
||||||
|
|
||||||
|
js_expected_symbol_test(
|
||||||
|
name = "symbol_test",
|
||||||
|
src = ":bundle.min_debug.js",
|
||||||
|
golden = ":bundle.golden_symbols.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
ts_devserver(
|
||||||
|
name = "devserver",
|
||||||
|
static_files = [
|
||||||
|
":bundle.min_debug.js",
|
||||||
|
":bundle.min.js",
|
||||||
|
"index.html",
|
||||||
|
],
|
||||||
|
deps = [],
|
||||||
|
)
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,31 @@
|
||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Angular Hello World Example</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- The Angular application will be bootstrapped into this element. -->
|
||||||
|
<hello-world></hello-world>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Script tag which bootstraps the application. Use `?debug` in URL to select
|
||||||
|
the debug version of the script.
|
||||||
|
|
||||||
|
There are two scripts sources: `bundle.min.js` and `bundle.min_debug.js` You can
|
||||||
|
switch between which bundle the browser loads to experiment with the application.
|
||||||
|
|
||||||
|
- `bundle.min.js`: Is what the site would serve to their users. It has gone
|
||||||
|
through rollup, build-optimizer, and uglify with tree shaking.
|
||||||
|
- `bundle.min_debug.js`: Is what the developer would like to see when debugging
|
||||||
|
the application. It has also done through full pipeline of rollup, build-optimizer,
|
||||||
|
and uglify, however special flags were passed to uglify to prevent inlining and
|
||||||
|
property renaming.
|
||||||
|
-->
|
||||||
|
<script>
|
||||||
|
document.write('<script src="' +
|
||||||
|
(document.location.search.endsWith('debug') ? '/bundle.min_debug.js' : '/bundle.min.js') +
|
||||||
|
'"></' + 'script>');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,19 @@
|
||||||
|
/**
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
import {Component, NgModule} from '@angular/core';
|
||||||
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
|
|
||||||
|
@Component({selector: 'hello-world', template: 'Hello World!'})
|
||||||
|
export class HelloWorldComponent {
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({declarations: [HelloWorldComponent]})
|
||||||
|
export class HelloWorldModule {
|
||||||
|
}
|
||||||
|
|
||||||
|
platformBrowserDynamic().bootstrapModule(HelloWorldModule);
|
|
@ -0,0 +1,31 @@
|
||||||
|
/**
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {withBody} from '@angular/core/testing';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
const UTF8 = {
|
||||||
|
encoding: 'utf-8'
|
||||||
|
};
|
||||||
|
const PACKAGE = 'angular/packages/core/test/bundling/hello_world_r2';
|
||||||
|
|
||||||
|
describe('treeshaking with uglify', () => {
|
||||||
|
|
||||||
|
let content: string;
|
||||||
|
const contentPath = require.resolve(path.join(PACKAGE, 'bundle.min_debug.js'));
|
||||||
|
beforeAll(() => { content = fs.readFileSync(contentPath, UTF8); });
|
||||||
|
|
||||||
|
it('should drop unused TypeScript helpers',
|
||||||
|
() => { expect(content).not.toContain('__asyncGenerator'); });
|
||||||
|
|
||||||
|
it('should not contain rxjs from commonjs distro', () => {
|
||||||
|
expect(content).not.toContain('commonjsGlobal');
|
||||||
|
expect(content).not.toContain('createCommonjsModule');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue