Beispiel #1
0
        string ProcessCssFile(string file, string outputFile, bool asImport = false)
        {
            string css = null;

            if (file.ToLower().EndsWith(".less") || file.ToLower().EndsWith(".less.css"))
            {
                css = ProcessLess(file);
            }
            else
            {
                css = ReadFile(file);
            }

            if (ShouldImport)
            {
                css = ProcessImport(file, outputFile, css);
            }

            ICssAssetsFileHasher fileHasher = null;

            if (ShouldAppendHashForAssets)
            {
                var fileResolver = new FileSystemResolver();
                fileHasher = new CssAssetsFileHasher(HashKeyName, fileResolver, hasher);
            }

            return(CSSPathRewriter.RewriteCssPaths(outputFile, file, css, fileHasher, asImport));
        }
Beispiel #2
0
        public void CanResolveFile()
        {
            //dealing with working directory on a non-C location
            var currentDirectory = Environment.CurrentDirectory;
            var driveLetter      = currentDirectory.Substring(0, currentDirectory.IndexOf("\\"));//ignoring UNC paths

            //resharper doesn't support the TestCase attribute
            var values = new Dictionary <string, string>
            {
                { @"C:\testfile.js", @"C:\testfile.js" },
                { @"C:\test\testfile.js", @"C:\test\testfile.js" },
                { @"D:\testfile.js", @"D:\testfile.js" },
                { @"\testfile.js", driveLetter + @"\testfile.js" },
                { @"\test\testfile.js", driveLetter + @"\test\testfile.js" },
                { @"\test\test3\testfile.js", driveLetter + @"\test\test3\testfile.js" },
                { @"testfile.js", Environment.CurrentDirectory + @"\testfile.js" },
                { @"..\testfile.js", Path.GetFullPath(Environment.CurrentDirectory + @"\..\testfile.js") },
                { @"..\..\testfile.js", Path.GetFullPath(Environment.CurrentDirectory + @"\..\..\testfile.js") }
            };

            var fileResolver = new FileSystemResolver();

            foreach (string key in values.Keys)
            {
                var resolvedFile = fileResolver.Resolve(key);
                Assert.AreEqual(values[key], resolvedFile, key);
            }
        }
Beispiel #3
0
        string ProcessCssFile(string file, string outputFile, bool asImport = false)
        {
            string css = null;

            var preprocessors = FindPreprocessors(file);

            if (preprocessors != null)
            {
                css = PreprocessFile(file, preprocessors);
            }
            else
            {
                css = ReadFile(file);
            }

            if (ShouldImport)
            {
                css = ProcessImport(file, outputFile, css);
            }

            ICssAssetsFileHasher fileHasher = null;

            if (ShouldAppendHashForAssets)
            {
                var fileResolver = new FileSystemResolver();
                fileHasher = new CssAssetsFileHasher(bundleState.HashKeyName, fileResolver, hasher);
            }

            return(CSSPathRewriter.RewriteCssPaths(outputFile, file, css, fileHasher, asImport));
        }
        public void DoesNotAppendHashIfFileDoesNotExists()
        {
            var hashQueryStringKeyName = "v";
            var fileResolver           = new FileSystemResolver();
            var hasher      = new StubHasher("hash");
            var cssFilePath = TestUtilities.PreparePath(@"C:\somepath\output.css");
            var url         = "/doesnotexist.jpg";

            var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);

            var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);

            Assert.That(rewrittenUrl, Is.EqualTo(url));
        }
        public void DoesNotAppendHashIfFileIsRemote()
        {
            var hashQueryStringKeyName = "v";
            var fileResolver           = new FileSystemResolver();
            var hasher      = new StubHasher("hash");
            var cssFilePath = @"C:\somepath\output.css";
            var url         = "http://www.test.com/image.jpg";

            var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);

            var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);

            Assert.That(rewrittenUrl, Is.EqualTo(url));
        }
        public void CanAppendFileHashToRelativeUriWithAnExistingQueryString()
        {
            var hashQueryStringKeyName = "v";
            var hashValue        = "hashValue";
            var hasher           = new StubHasher(hashValue);
            var fileResolver     = new FileSystemResolver();
            var uri              = Assembly.GetExecutingAssembly().CodeBase;
            var cssFilePath      = Path.GetDirectoryName(uri) + TestUtilities.PreparePath(@"\subdirectory\output.css");
            var url              = "../" + Path.GetFileName(uri) + "?test=value";
            var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);

            var expectedUrl = url + "&" + hashQueryStringKeyName + "=" + hashValue;

            var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);

            Assert.That(rewrittenUrl, Is.EqualTo(expectedUrl));
        }
Beispiel #7
0
        public void IsDirectory()
        {
            var path      = Guid.NewGuid().ToString();
            var directory = Directory.CreateDirectory(path);

            File.Create(Path.Combine(directory.FullName, "file")).Close();

            try
            {
                var resolver = new FileSystemResolver();
                Assert.IsTrue(resolver.IsDirectory(path));
                Assert.IsFalse(resolver.IsDirectory(Path.Combine(path, "file")));
            }
            finally
            {
                Directory.Delete(path, true);
            }
        }
Beispiel #8
0
        public void CanResolveFile_Unix()
        {
            var currentDirectory = Environment.CurrentDirectory;

            var values = new Dictionary <string, string>
            {
                { @"testfile.js", Path.Combine(currentDirectory, "testfile.js") },
                { @"/testfile.js", @"/testfile.js" },
                { @"../testfile.js", Path.Combine(currentDirectory.Substring(0, currentDirectory.LastIndexOf("/")), "testfile.js") }
            };

            var fileResolver = new FileSystemResolver();

            foreach (string key in values.Keys)
            {
                var resolvedFile = fileResolver.Resolve(key);
                Assert.AreEqual(values[key], resolvedFile, key);
            }
        }
Beispiel #9
0
        public void CanResolveDirectory()
        {
            string path      = Guid.NewGuid().ToString();
            var    directory = Directory.CreateDirectory(path);

            try
            {
                File.Create(Path.Combine(directory.FullName, "file1")).Close();
                File.Create(Path.Combine(directory.FullName, "file2")).Close();

                var result = new FileSystemResolver().ResolveFolder(path, true, Guid.NewGuid().ToString(), null, null).ToList();
                Assert.AreEqual(2, result.Count);
                Assert.Contains(path + Path.DirectorySeparatorChar + "file1", result);
                Assert.Contains(path + Path.DirectorySeparatorChar + "file2", result);
            }
            finally
            {
                Directory.Delete(path, true);
            }
        }
Beispiel #10
0
        public void CanResolveDirectory_Filters_Files_By_Extension()
        {
            var path      = Guid.NewGuid().ToString();
            var directory = Directory.CreateDirectory(path);

            try
            {
                File.Create(Path.Combine(directory.FullName, "file1.js")).Close();
                File.Create(Path.Combine(directory.FullName, "file2.css")).Close();
                File.Create(Path.Combine(directory.FullName, "file21.JS")).Close();

                var result = new FileSystemResolver().ResolveFolder(path, true, Guid.NewGuid().ToString(), new[] { ".js" }, new[] { ".css" }).ToList();
                Assert.AreEqual(2, result.Count);
                Assert.Contains(path + Path.DirectorySeparatorChar + "file1.js", result);
                Assert.Contains(path + Path.DirectorySeparatorChar + "file21.JS", result);
            }
            finally
            {
                Directory.Delete(path, true);
            }
        }
Beispiel #11
0
        string ProcessCssFile(string file, string outputFile, string fileForCssRewriter, bool asImport = false)
        {
            var preprocessors = FindPreprocessors(file);

            var css = preprocessors.NullSafeAny()
                ? PreprocessFile(file, preprocessors)
                : ReadFile(file);

            if (ShouldImport)
            {
                css = ProcessImport(file, outputFile, css);
            }

            ICSSAssetsFileHasher fileHasher = null;

            if (ShouldAppendHashForAssets)
            {
                var fileResolver = new FileSystemResolver();
                fileHasher = new CSSAssetsFileHasher(bundleState.HashKeyName, fileResolver, hasher, pathTranslator);
            }

            return(CSSPathRewriter.RewriteCssPaths(outputFile, fileForCssRewriter, css, fileHasher, asImport));
        }
Beispiel #12
0
        public void CanResolveDirectory_Excludes_Debug_Files()
        {
            var path               = Guid.NewGuid().ToString();
            var directory          = Directory.CreateDirectory(path);
            var debugFileExtension = ".test.this.out";

            try
            {
                File.Create(Path.Combine(directory.FullName, "file1.js")).Close();
                File.Create(Path.Combine(directory.FullName, "file2.css")).Close();
                File.Create(Path.Combine(directory.FullName, "asdf.JS")).Close();
                File.Create(Path.Combine(directory.FullName, "thisoneshouldbeexccluded" + debugFileExtension)).Close();

                var result = new FileSystemResolver().ResolveFolder(path, true, debugFileExtension, new[] { ".js" }, new[] { ".css" }).ToList();
                Assert.AreEqual(2, result.Count);
                Assert.Contains(path + Path.DirectorySeparatorChar + "file1.js", result);
                Assert.Contains(path + Path.DirectorySeparatorChar + "asdf.JS", result);
            }
            finally
            {
                Directory.Delete(path, true);
            }
        }
        public void ShouldCombinePaths()
        {
            var resolver = new FileSystemResolver();

            Assert.Equal("/bob.xml", resolver.Combine("/root/alice.xml", "../bob.xml"));
        }