Example #1
0
        public void ComputePriorityOrderWithDependencies()
        {
            var a = new TestObject("A", Version.Parse("1.0.0"), new[]
            {
                new Dependency("A1", "==", Version.Parse("1.0.0")),
            });
            var b = new TestObject("B", Version.Parse("1.0.0"), new[]
            {
                new Dependency("B1", "==", Version.Parse("1.0.0")),
                new Dependency("A2", "==", Version.Parse("1.0.0")),
            });
            var a1 = new TestObject("A1", Version.Parse("1.0.0"), new[]
            {
                new Dependency("A2", "==", Version.Parse("1.0.0")),
            });
            var a2 = new TestObject("A2", Version.Parse("1.0.0"));
            var b1 = new TestObject("B1", Version.Parse("1.0.0"));

            var list = Resolver.ComputePriorityOrderWithDependencies(new[] { a, b }, new[] { a1, a2, b1 });

            Assert.IsEmpty(list.GroupBy(x => x)
                           .Where(g => g.Count() > 1)
                           .Select(g => g.Key), "duplicate entries found in the resolved list");

            Assert.IsTrue(list.IndexOf(a) < list.IndexOf(b), "a < b");
            Assert.IsTrue(list.IndexOf(a1) < list.IndexOf(a), "a1 < a");
            Assert.IsTrue(list.IndexOf(a2) < list.IndexOf(a1), "a2 < a1");
        }
Example #2
0
        public Boolean TryCompileSources(IEnumerable <TCodeSource> selectedSources,
                                         IEnumerable <TCodeSource> additionalSources,
                                         out List <ExorCompilerResults <TCodeSource> > results)
        {
            // TODO: when Common.Services.Logging gets their act together, get this logged nice and verbosely.

            if (!Directory.Exists(Options.CachePath))
            {
                Directory.CreateDirectory(Options.CachePath);
            }

            var selected   = selectedSources.ToList();
            var additional = (additionalSources ?? Enumerable.Empty <TCodeSource>()).ToList();

            // this is the whole reason I made Versioner. man, I'm a dork.
            var loadOrder = Resolver.ComputePriorityOrderWithDependencies(selected, additional);

            var dirtySet = new HashSet <TCodeSource>();

            results = loadOrder.Select(s => Compile(s, dirtySet)).ToList();

            return(results.All(r => r.Succeeded));
        }