private string TemplatizeCompressedAssets(StaticWebAsset asset, string originalValue, StaticWebAsset relatedAsset) { if (!asset.IsAlternativeAsset() && Path.GetExtension(asset.Identity) != ".gz") { return(null); } if (asset.RelatedAsset == originalValue) { return(null); } if (originalValue.Replace("[[CustomPackageVersion]]", "__CustomVersion__").Replace("[[hash]]", "__Hash__").Contains("[[")) { return(null); } var result = asset.Identity.Contains("[[") ? asset.Identity : Path.Combine(Path.GetDirectoryName(asset.Identity), "[[" + asset.RelativePath + "]]"); if (GenerateBaselines) { result = Regex.Replace(result, DotNetJSHashRegexPattern, DotNetJSHashTemplate); return(result.Replace(RuntimeVersion, "${RuntimeVersion}").Replace(DefaultPackageVersion, "${PackageVersion}")); } else { return(result.Replace("${RuntimeVersion}", RuntimeVersion).Replace("${PackageVersion}", DefaultPackageVersion)); } }
private ITaskItem CreateCandidate( string itemSpec, string sourceId, string sourceType, string relativePath, string assetKind, string assetMode) { var result = new StaticWebAsset() { Identity = Path.GetFullPath(itemSpec), SourceId = sourceId, SourceType = sourceType, ContentRoot = Directory.GetCurrentDirectory(), BasePath = "base", RelativePath = relativePath, AssetKind = assetKind, AssetMode = assetMode, AssetRole = "Primary", RelatedAsset = "", AssetTraitName = "", AssetTraitValue = "", CopyToOutputDirectory = "", CopyToPublishDirectory = "", OriginalItemSpec = itemSpec, }; result.ApplyDefaults(); result.Normalize(); return(result.ToTaskItem()); }
public void FallsBackToItemSpecWhenIdentityDoesNotExist() { // Arrange var errorMessages = new List <string>(); var buildEngine = new Mock <IBuildEngine>(); buildEngine.Setup(e => e.LogErrorEvent(It.IsAny <BuildErrorEventArgs>())) .Callback <BuildErrorEventArgs>(args => errorMessages.Add(args.Message)); File.Create(ItemSpec); var asset = new StaticWebAsset() { Identity = ItemSpec, OriginalItemSpec = OriginalItemSpec }; var task = new ComputeBlazorFilesToCompress { BuildEngine = buildEngine.Object, Assets = new[] { asset.ToTaskItem() } }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.AssetsToCompress.Should().HaveCount(1); task.AssetsToCompress[0].ItemSpec.Should().Be(ItemSpec); }
public void FailsWhenNeitherIdentityNorOriginalItemSpecExist() { // Arrange var errorMessages = new List <string>(); var buildEngine = new Mock <IBuildEngine>(); buildEngine.Setup(e => e.LogErrorEvent(It.IsAny <BuildErrorEventArgs>())) .Callback <BuildErrorEventArgs>(args => errorMessages.Add(args.Message)); var asset = new StaticWebAsset() { Identity = ItemSpec, OriginalItemSpec = OriginalItemSpec }; var task = new ComputeBlazorFilesToCompress { BuildEngine = buildEngine.Object, Assets = new[] { asset.ToTaskItem() } }; // Act var result = task.Execute(); // Assert result.Should().BeFalse(); task.AssetsToCompress.Should().BeEmpty(); }
public void ComputeDevelopmentManifest_UsesIdentityWhenContentRootStartsByIdentity() { // Arrange var messages = new List <string>(); var buildEngine = new Mock <IBuildEngine>(); buildEngine.Setup(e => e.LogMessageEvent(It.IsAny <BuildMessageEventArgs>())) .Callback <BuildMessageEventArgs>(args => messages.Add(args.Message)); var expectedManifest = CreateExpectedManifest( CreateIntermediateNode( ("index.html", CreateMatchNode(0, StaticWebAsset.Normalize(Path.Combine("some", "subfolder", "index.build.html"))))), Environment.CurrentDirectory); var task = new GenerateStaticWebAssetsDevelopmentManifest() { BuildEngine = buildEngine.Object, Source = "CurrentProjectId" }; var assets = new[] { CreateAsset(Path.Combine("some", "subfolder", "index.build.html"), "index.html"), }; var patterns = Array.Empty <StaticWebAssetsManifest.DiscoveryPattern>(); // Act var manifest = task.ComputeDevelopmentManifest(assets, patterns); // Assert manifest.ShouldBeEquivalentTo(expectedManifest); }
public void GeneratesManifestFailsWhenTwoAssetsEndUpOnTheSamePath(StaticWebAsset first, StaticWebAsset second) { var errorMessages = new List <string>(); var buildEngine = new Mock <IBuildEngine>(); buildEngine.Setup(e => e.LogErrorEvent(It.IsAny <BuildErrorEventArgs>())) .Callback <BuildErrorEventArgs>(args => errorMessages.Add(args.Message)); // GetTempFilePath automatically creates the file, which interferes with the test. File.Delete(TempFilePath); var task = new GenerateStaticWebAssetsManifest { BuildEngine = buildEngine.Object, Assets = new[] { first.ToTaskItem(), second.ToTaskItem() }, ReferencedProjectsConfigurations = Array.Empty <ITaskItem>(), DiscoveryPatterns = Array.Empty <ITaskItem>(), BasePath = "/", Source = "MyProject", ManifestType = "Build", Mode = "Default", ManifestPath = TempFilePath, }; // Act var result = task.Execute(); // Assert result.Should().Be(false); }
private string TemplatizeCompressedAssets(StaticWebAsset asset, string originalValue, StaticWebAsset relatedAsset) { if (!asset.IsAlternativeAsset()) { return(null); } if (asset.RelatedAsset == originalValue) { return(null); } return(Path.Combine(Path.GetDirectoryName(asset.Identity), "{" + asset.RelativePath + "}")); }
private static StaticWebAsset CreateAsset( string itemSpec, string sourceId, string sourceType, string relativePath, string assetKind, string assetMode, string basePath = "base", string assetRole = "Primary", string relatedAsset = "", string assetTraitName = "", string assetTraitValue = "", string copyToOutputDirectory = "Never", string copytToPublishDirectory = "PreserveNewest") { var result = new StaticWebAsset() { Identity = Path.GetFullPath(itemSpec), SourceId = sourceId, SourceType = sourceType, ContentRoot = Directory.GetCurrentDirectory(), BasePath = basePath, RelativePath = relativePath, AssetKind = assetKind, AssetMode = assetMode, AssetRole = assetRole, RelatedAsset = relatedAsset, AssetTraitName = assetTraitName, AssetTraitValue = assetTraitValue, CopyToOutputDirectory = copyToOutputDirectory, CopyToPublishDirectory = copytToPublishDirectory, OriginalItemSpec = itemSpec, }; result.ApplyDefaults(); result.Normalize(); return(result); }