fix(@angular-devkit/build-angular): correctly handle scripts when using subresource-integrity option

Fixes #19829
This commit is contained in:
Alan Agius 2021-01-21 11:16:36 +01:00 committed by Filipe Silva
parent 3db8c6e464
commit d0cc0cbda3
2 changed files with 23 additions and 2 deletions

View File

@ -20,7 +20,7 @@ describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => {
const { result } = await harness.executeOnce();
expect(result?.success).toBe(true);
harness.expectFile('dist/index.html').content.toContain('integrity=');
harness.expectFile('dist/index.html').content.not.toContain('integrity=');
});
it(`does not add integrity attribute when 'false'`, async () => {
@ -32,7 +32,7 @@ describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => {
const { result } = await harness.executeOnce();
expect(result?.success).toBe(true);
harness.expectFile('dist/index.html').content.toContain('integrity=');
harness.expectFile('dist/index.html').content.not.toContain('integrity=');
});
it(`does add integrity attribute when 'true'`, async () => {
@ -46,5 +46,25 @@ describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => {
expect(result?.success).toBe(true);
harness.expectFile('dist/index.html').content.toMatch(/integrity="\w+-[A-Za-z0-9\/\+=]+"/);
});
it(`does not issue a warning when 'true' and 'scripts' is set.`, async () => {
await harness.writeFile('src/script.js', '');
harness.useTarget('build', {
...BASE_OPTIONS,
subresourceIntegrity: true,
scripts: ['src/script.js'],
});
const { result, logs } = await harness.executeOnce();
expect(result?.success).toBe(true);
harness.expectFile('dist/index.html').content.toMatch(/integrity="\w+-[A-Za-z0-9\/\+=]+"/);
expect(logs).not.toContain(
jasmine.objectContaining<logging.LogEntry>({
message: jasmine.stringMatching(/subresource-integrity/),
}),
);
});
});
});

View File

@ -93,6 +93,7 @@ export class ScriptsWebpackPlugin {
}
compilation.assets[filename] = source;
compilation.hooks.chunkAsset.call(chunk, filename);
}
apply(compiler: Compiler): void {