test: Add bundle symbol extractor tool (#22002)
This tool will be used for extracting symbols out of bundles so that we can assert that only whitelisted symbols are allowed. PR Close #22002
This commit is contained in:

committed by
Miško Hevery

parent
6435ecd3c6
commit
20a900b648
@ -1,6 +1,7 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("//tools:defaults.bzl", "ts_library")
|
||||
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")
|
||||
|
||||
@ -31,7 +32,9 @@ ts_library(
|
||||
name = "test_lib",
|
||||
testonly = 1,
|
||||
srcs = ["domino_typings.d.ts"] + glob(["*_spec.ts"]),
|
||||
deps = ["//packages:types"],
|
||||
deps = [
|
||||
"//packages:types",
|
||||
],
|
||||
)
|
||||
|
||||
jasmine_node_test(
|
||||
@ -44,3 +47,9 @@ jasmine_node_test(
|
||||
],
|
||||
deps = [":test_lib"],
|
||||
)
|
||||
|
||||
js_expected_symbol_test(
|
||||
name = "symbol_test",
|
||||
src = ":bundle.min_debug.js",
|
||||
golden = ":bundle.golden_symbols.json",
|
||||
)
|
||||
|
@ -0,0 +1,83 @@
|
||||
[
|
||||
{
|
||||
"name": "EMPTY$1"
|
||||
},
|
||||
{
|
||||
"name": "NO_CHANGE"
|
||||
},
|
||||
{
|
||||
"name": "Symbol$1"
|
||||
},
|
||||
{
|
||||
"name": "__global$1"
|
||||
},
|
||||
{
|
||||
"name": "__self$1"
|
||||
},
|
||||
{
|
||||
"name": "__window$1"
|
||||
},
|
||||
{
|
||||
"name": "_renderCompCount"
|
||||
},
|
||||
{
|
||||
"name": "_root"
|
||||
},
|
||||
{
|
||||
"name": "canInsertNativeNode"
|
||||
},
|
||||
{
|
||||
"name": "createLNode"
|
||||
},
|
||||
{
|
||||
"name": "createLView"
|
||||
},
|
||||
{
|
||||
"name": "domRendererFactory3"
|
||||
},
|
||||
{
|
||||
"name": "enterView"
|
||||
},
|
||||
{
|
||||
"name": "executeHooks"
|
||||
},
|
||||
{
|
||||
"name": "findFirstRNode"
|
||||
},
|
||||
{
|
||||
"name": "getDirectiveInstance"
|
||||
},
|
||||
{
|
||||
"name": "getNextLNodeWithProjection"
|
||||
},
|
||||
{
|
||||
"name": "getNextOrParentSiblingNode"
|
||||
},
|
||||
{
|
||||
"name": "invertObject"
|
||||
},
|
||||
{
|
||||
"name": "isProceduralRenderer"
|
||||
},
|
||||
{
|
||||
"name": "leaveView"
|
||||
},
|
||||
{
|
||||
"name": "locateHostElement"
|
||||
},
|
||||
{
|
||||
"name": "noop$2"
|
||||
},
|
||||
{
|
||||
"name": "refreshDynamicChildren"
|
||||
},
|
||||
{
|
||||
"name": "renderComponentOrTemplate"
|
||||
},
|
||||
{
|
||||
"name": "renderEmbeddedTemplate"
|
||||
},
|
||||
{
|
||||
"name": "stringify$1"
|
||||
}
|
||||
]
|
@ -18,10 +18,8 @@ import * as domino from 'domino';
|
||||
|
||||
describe('treeshaking with uglify', () => {
|
||||
let content: string;
|
||||
beforeAll(() => {
|
||||
content = fs.readFileSync(
|
||||
path.join(process.env['TEST_SRCDIR'], PACKAGE, 'bundle.min_debug.js'), UTF8);
|
||||
});
|
||||
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'); });
|
||||
|
Reference in New Issue
Block a user