Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }