public void MultipleFontFaceUrlTest() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\MinifyCssActivityTest"); var minifyCssActivity = new MinifyCssActivity(new WebGreaseContext(new WebGreaseConfiguration { SourceDirectory = Path.Combine(sourceDirectory, @"Input\Case10") })); minifyCssActivity.ImageDirectories = new List <string> { Path.Combine(sourceDirectory, @"Input\Case10\fonts") }; minifyCssActivity.ImageExtensions = new List <string> { "*.eot", "*.svg", "*.ttf", "*.woff" }; minifyCssActivity.SourceFile = Path.Combine(sourceDirectory, @"Input\Case10\FontFaceHashing.css"); minifyCssActivity.DestinationFile = Path.Combine(sourceDirectory, @"Output\Case10\FontFaceHashing.css"); minifyCssActivity.NonMergeSelectors = new HashSet <string> { "@font-face" }; minifyCssActivity.ShouldValidateForLowerCase = true; minifyCssActivity.ShouldAssembleBackgroundImages = false; minifyCssActivity.ShouldOptimize = false; minifyCssActivity.ShouldMinify = true; var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); //fileHasherActivity.SourceDirectories.Add(Path.Combine(sourceDirectory, "fonts")); var destinationDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"Output\Case10\fonts"); fileHasherActivity.DestinationDirectory = destinationDirectory; fileHasherActivity.CreateExtraDirectoryLevelFromHashes = true; fileHasherActivity.ShouldPreserveSourceDirectoryStructure = false; fileHasherActivity.ConfigType = string.Empty; fileHasherActivity.BasePrefixToRemoveFromOutputPathInLog = destinationDirectory; fileHasherActivity.LogFileName = Path.Combine(sourceDirectory, @"Output\Case10\css_log.xml"); minifyCssActivity.Execute(imageHasher: fileHasherActivity); // Assertions var outputFilePath = minifyCssActivity.DestinationFile; Assert.IsTrue(File.Exists(outputFilePath)); var text = File.ReadAllText(outputFilePath); var expectedText = File.ReadAllText(Path.Combine(sourceDirectory, @"Input\Case10\FontFaceHashing-hashed.css")); Assert.IsTrue(text.Equals(expectedText, StringComparison.OrdinalIgnoreCase)); }
public void FileHasherActivityNoPreserveSourceDirectoryTest() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Input"); var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); fileHasherActivity.SourceDirectories.Add(sourceDirectory); var destinationDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Output\FileHasherActivityNoPreserveSourceDirectory"); fileHasherActivity.DestinationDirectory = destinationDirectory; fileHasherActivity.CreateExtraDirectoryLevelFromHashes = true; fileHasherActivity.ShouldPreserveSourceDirectoryStructure = false; fileHasherActivity.BasePrefixToRemoveFromOutputPathInLog = destinationDirectory; fileHasherActivity.LogFileName = Path.Combine(destinationDirectory, "FileHasherActivityPreserveSourceDirectory.log.xml"); fileHasherActivity.Execute(); Assert.IsTrue(Directory.Exists(destinationDirectory)); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "08"))); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "ba"))); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "db"))); Assert.IsTrue(File.Exists(fileHasherActivity.LogFileName)); }
public void FileHasherActivityWithExistingLogTest() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\ExistingLog\Input"); var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); fileHasherActivity.SourceDirectories.Add(sourceDirectory); var destinationDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\ExistingLog\Output"); fileHasherActivity.DestinationDirectory = destinationDirectory; fileHasherActivity.CreateExtraDirectoryLevelFromHashes = true; fileHasherActivity.ShouldPreserveSourceDirectoryStructure = false; fileHasherActivity.ConfigType = string.Empty; fileHasherActivity.BasePrefixToRemoveFromOutputPathInLog = destinationDirectory; fileHasherActivity.LogFileName = Path.Combine(sourceDirectory, @"..\statics\css_log.xml"); fileHasherActivity.Execute(); Assert.IsTrue(File.Exists(fileHasherActivity.LogFileName)); var xdoc = XDocument.Load(fileHasherActivity.LogFileName); Assert.AreEqual(2, xdoc.Descendants("File").Count()); }
public void FileHasherActivityFilterTest() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Input"); var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); fileHasherActivity.SourceDirectories.Add(sourceDirectory); var destinationDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Output\FileHasherActivityFilterTest"); fileHasherActivity.DestinationDirectory = destinationDirectory; fileHasherActivity.CreateExtraDirectoryLevelFromHashes = false; fileHasherActivity.ShouldPreserveSourceDirectoryStructure = true; fileHasherActivity.BasePrefixToRemoveFromOutputPathInLog = destinationDirectory; fileHasherActivity.LogFileName = Path.Combine(destinationDirectory, "FileHasherActivityFilterTest.log.xml"); fileHasherActivity.FileTypeFilter = "*.png"; fileHasherActivity.Execute(); Assert.IsTrue(Directory.Exists(destinationDirectory)); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "C1"))); Assert.IsFalse(File.Exists(Path.Combine(destinationDirectory, "C1", "ba4027675b202b7bf6f15085cb3344e3.gif"))); Assert.IsTrue(File.Exists(Path.Combine(destinationDirectory, "C1", "163af4596ea7d10cadda5233fe6f1282.png"))); Assert.IsTrue(File.Exists(fileHasherActivity.LogFileName)); }
public void TokenUrlsShouldNotBeHashed() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\MinifyCssActivityTest"); var minifyCssActivity = new MinifyCssActivity(new WebGreaseContext(new WebGreaseConfiguration { SourceDirectory = Path.Combine(sourceDirectory, @"Input\Case10") })); minifyCssActivity.SourceFile = Path.Combine(sourceDirectory, @"Input\Case11\TokenImageIgnore.css"); minifyCssActivity.DestinationFile = Path.Combine(sourceDirectory, @"Output\Case11\TokenImageIgnore.css"); var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); minifyCssActivity.Execute(imageHasher: fileHasherActivity); // Assertions var outputFilePath = minifyCssActivity.DestinationFile; Assert.IsTrue(File.Exists(outputFilePath)); var text = File.ReadAllText(outputFilePath); Assert.IsTrue(text.Contains("%IMAGE:abcdefg%")); }
public void FileHasherActivityPreserveSourceDirectoryTest() { var sourceDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Input"); var fileHasherActivity = new FileHasherActivity(new WebGreaseContext(new WebGreaseConfiguration())); fileHasherActivity.SourceDirectories.Add(sourceDirectory); var destinationDirectory = Path.Combine(TestDeploymentPaths.TestDirectory, @"WebGrease.Tests\FileHasherActivityTest\Output\FileHasherActivityPreserveSourceDirectory"); fileHasherActivity.DestinationDirectory = destinationDirectory; fileHasherActivity.CreateExtraDirectoryLevelFromHashes = false; fileHasherActivity.ShouldPreserveSourceDirectoryStructure = true; fileHasherActivity.BasePrefixToRemoveFromOutputPathInLog = destinationDirectory; fileHasherActivity.LogFileName = Path.Combine(destinationDirectory, "FileHasherActivityPreserveSourceDirectory.log.xml"); fileHasherActivity.Execute(); Assert.IsTrue(Directory.Exists(destinationDirectory)); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "C1"))); Assert.IsTrue(File.Exists(Path.Combine(destinationDirectory, "C1", "ba4027675b202b7bf6f15085cb3344e3.gif"))); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "C1", "C3"))); Assert.IsTrue(File.Exists(Path.Combine(destinationDirectory, "C1", "C3", "dbd30b957cfadf9e684dc8ef0ce3f2a8.gif"))); Assert.IsTrue(Directory.Exists(Path.Combine(destinationDirectory, "C2"))); Assert.IsTrue(File.Exists(Path.Combine(destinationDirectory, "C2", "083b261ab91fa0d8c12e22d898238840.gif"))); Assert.IsTrue(File.Exists(fileHasherActivity.LogFileName)); }
private static void ExecuteHashFiles(IWebGreaseContext context) { var hasher = new FileHasherActivity(context) { CreateExtraDirectoryLevelFromHashes = true, ShouldPreserveSourceDirectoryStructure = false }; // images if (context.Configuration.ImageDirectories.Any()) { hasher.LogFileName = Path.Combine(context.Configuration.LogsDirectory, Strings.ImagesLogFile); hasher.DestinationDirectory = GetOutputFolder(null, context.Configuration.DestinationDirectory); foreach (var imageDirectory in context.Configuration.ImageDirectories.Distinct()) { hasher.SourceDirectories.Add(imageDirectory); } if (context.Configuration.ImageExtensions != null && context.Configuration.ImageExtensions.Any()) { hasher.FileTypeFilter = string.Join(new string(Strings.FileFilterSeparator), context.Configuration.ImageExtensions.ToArray()); } hasher.Execute(); hasher.SourceDirectories.Clear(); } // css if (context.Configuration.CssFileSets.Any(file => file.InputSpecs.Any() && !file.Output.IsNullOrWhitespace())) { hasher.LogFileName = Path.Combine(context.Configuration.LogsDirectory, Strings.CssLogFile); foreach (var fileSet in context.Configuration.CssFileSets.Where(file => file.InputSpecs.Any() && !file.Output.IsNullOrWhitespace())) { var cssConfig = fileSet.Autonaming.GetNamedConfig(context.Configuration.ConfigType); if (cssConfig.ShouldAutoName) { var outputPath = GetOutputFolder(fileSet.Output, context.Configuration.DestinationDirectory); hasher.DestinationDirectory = string.IsNullOrWhiteSpace(Path.GetExtension(outputPath)) ? outputPath : Path.GetDirectoryName(outputPath); foreach (var inputFolder in fileSet.InputSpecs .SelectMany(inputSpec => GetFiles(inputSpec.Path, inputSpec.SearchPattern, inputSpec.SearchOption)) .Select(Path.GetDirectoryName).Distinct()) { // add the distinct folders hasher.SourceDirectories.Add(inputFolder); } hasher.FileTypeFilter = Strings.CssFilter; try { hasher.Execute(); } catch (Exception ex) { HandleError(ex); } hasher.SourceDirectories.Clear(); } } } // js if (context.Configuration.JSFileSets.Any(file => file.InputSpecs.Any() && !file.Output.IsNullOrWhitespace())) { hasher.LogFileName = Path.Combine(context.Configuration.LogsDirectory, Strings.JsLogFile); foreach (var fileSet in context.Configuration.JSFileSets.Where(file => file.InputSpecs.Any() && !file.Output.IsNullOrWhitespace())) { var jsConfig = fileSet.AutoNaming.GetNamedConfig(context.Configuration.ConfigType); if (jsConfig.ShouldAutoName) { var outputPath = GetOutputFolder(fileSet.Output, context.Configuration.DestinationDirectory); hasher.DestinationDirectory = string.IsNullOrWhiteSpace(Path.GetExtension(outputPath)) ? outputPath : Path.GetDirectoryName(outputPath); hasher.CreateExtraDirectoryLevelFromHashes = true; foreach (var inputFolder in fileSet.InputSpecs .SelectMany(inputSpec => GetFiles(inputSpec.Path, inputSpec.SearchPattern, inputSpec.SearchOption)) .Select(Path.GetDirectoryName).Distinct()) { // add the distinct folders hasher.SourceDirectories.Add(inputFolder); } hasher.FileTypeFilter = Strings.JsFilter; try { hasher.Execute(); } catch (Exception ex) { HandleError(ex); } hasher.SourceDirectories.Clear(); } } } }