internal void SpritesResolved(SpriteBlock block) { var relativeFiles = block.Sprites.Select(s => s.SpriteFilePath.Value).ToList(); foreach (var file in relativeFiles) { var rebased = file.Replace('/', Path.DirectorySeparatorChar).RebaseFile(block.FilePath); if (!Current.FileLookup.Exists(rebased)) continue; Add(block.FilePath, rebased); } Exclusions.Add(block.OutputFile.Value.Replace('/', Path.DirectorySeparatorChar).RebaseFile(block.FilePath)); }
public void DependencyGraph() { Current.SetContext(new Context(new FileCache())); Current.SetFileLookup(new TestAllExistLookup()); var parser = MoreInternals.Parser.Parser.CreateParser(); var statements = parser.Parse("dummy-file.more", new StringReader("foo { bar: url('/ref.png'); }")); var sprite = new SpriteBlock( new QuotedStringValue("out.png"), new List<SpriteRule> { new SpriteRule("blah", new QuotedStringValue("/img/blah.png"), -1, -1, "fake.more") }, -1, -1, "fake.more" ); var graph = new DependencyGraph(); graph.UsingResolved("used-file.more", "second-dep.css"); graph.UsingResolved("dummy-file.more", "used-file.more"); graph.FileCompiled("dummy-file.more", statements); graph.SpritesResolved(sprite); var a = graph.NeedRecompilation(new[] { @"\second-dep.css" }, new[] { "used-file.more", "out.png" }); Assert.AreEqual(1, a.Count()); Assert.AreEqual("used-file.more", a.Single()); var b = graph.NeedRecompilation(new[] { @"\fizz.more", @"\img\blah.png" }, new[] { "fake.more", "used-file.more" }); Assert.AreEqual(1, b.Count()); Assert.AreEqual("fake.more", b.Single()); var c = graph.NeedRecompilation(new[] { @"\ref.png" }, new[] { "dummy-file.more" }); Assert.AreEqual(1, c.Count()); Assert.AreEqual("dummy-file.more", c.Single()); }