Fix SWAM hash (#20240)

This commit is contained in:
Steve Sanderson 2020-03-28 17:53:46 +00:00 committed by GitHub
parent 18a196bcef
commit c379bae8e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View File

@ -23,7 +23,7 @@
Inputs="@(ServiceWorkerAssetsManifestItem)"
Outputs="$(_ServiceWorkerAssetsManifestIntermediateOutputPath)"
BeforeTargets="_BlazorStaticWebAssetsCopyGeneratedFilesToOutputDirectory"
DependsOnTargets="_ComputeServiceWorkerAssetsManifestFileHashes; _ComputeDefaultServiceWorkerAssetsManifestVersion">
DependsOnTargets="_ComputeServiceWorkerAssetsManifestFileHashes; _ComputeDefaultServiceWorkerAssetsManifestVersion; _GenerateServiceWorkerIntermediateFiles">
<GenerateServiceWorkerAssetsManifest
Version="$(ServiceWorkerAssetsManifestVersion)"
@ -61,11 +61,19 @@
Compute a default ServiceWorkerAssetsManifestVersion value by combining all the asset hashes.
This is useful because then clients will only have to repopulate caches if the contents have changed.
-->
<Target Name="_ComputeDefaultServiceWorkerAssetsManifestVersion" Condition="'$(ServiceWorkerAssetsManifest)' != ''">
<Target Name="_ComputeDefaultServiceWorkerAssetsManifestVersion"
DependsOnTargets="_ComputeServiceWorkerAssetsManifestFileHashes"
Condition="'$(ServiceWorkerAssetsManifest)' != ''">
<PropertyGroup>
<_CombinedHashIntermediatePath>$(_BlazorIntermediateOutputPath)serviceworkerhashes.txt</_CombinedHashIntermediatePath>
</PropertyGroup>
<!-- Neither of these should ever happen, but if we do we want to know about it. -->
<Error Text="Cannot compute service worker assets manifest version, because no service worker manifest items were defined."
Condition="'@(_ServiceWorkerAssetsManifestItemWithHash)' == ''" />
<Error Text="While computing service worker assets manifest version, did not find any dll entries in service worker assets manifest."
Condition="'@(_ServiceWorkerAssetsManifestItemWithHash->WithMetadataValue('Extension', '.dll'))' == ''" />
<WriteLinesToFile
File="$(_CombinedHashIntermediatePath)"
Lines="@(_ServiceWorkerAssetsManifestItemWithHash->'%(FileHash)')"
@ -91,7 +99,7 @@
<Target Name="_ResolveServiceWorkerOutputs"
BeforeTargets="_ResolveBlazorOutputs"
DependsOnTargets="_ComputeServiceWorkerOutputs; _GenerateServiceWorkerIntermediateFiles">
DependsOnTargets="_ComputeServiceWorkerOutputs">
<ItemGroup>
<_BlazorOutputWithTargetPath Include="@(_ServiceWorkerIntermediateFile)" />
</ItemGroup>

View File

@ -191,10 +191,11 @@ namespace Templates.Test
var serviceWorkerContents = ReadFile(publishDir, "service-worker.js");
// Parse the "version": "..." value from the SWAM, and check it's in the service worker
var serviceWorkerAssetsManifestVersionMatch = new Regex(@"^\s*\""version\"":\s*\""([^\""]+)\""", RegexOptions.Multiline)
var serviceWorkerAssetsManifestVersionMatch = new Regex(@"^\s*\""version\"":\s*(\""[^\""]+\"")", RegexOptions.Multiline)
.Match(serviceWorkerAssetsManifestContents);
Assert.True(serviceWorkerAssetsManifestVersionMatch.Success);
var serviceWorkerAssetsManifestVersion = serviceWorkerAssetsManifestVersionMatch.Groups[1].Captures[0];
var serviceWorkerAssetsManifestVersionJson = serviceWorkerAssetsManifestVersionMatch.Groups[1].Captures[0].Value;
var serviceWorkerAssetsManifestVersion = JsonSerializer.Deserialize<string>(serviceWorkerAssetsManifestVersionJson);
Assert.True(serviceWorkerContents.Contains($"/* Manifest version: {serviceWorkerAssetsManifestVersion} */", StringComparison.Ordinal));
}