Ejemplo n.º 1
0
        public void Get()
        {
            var source = new FakeSource();

            source.Get(new PackageDependency("Foo")).Should(Be.Null);

            source.Add("Foo 1.2.3", "Dep > 1.0");

            source.Get(new PackageDependency("Foo")).ShouldNot(Be.Null);
            source.Get(new PackageDependency("Foo")).Id.ShouldEqual("Foo");
            source.Get(new PackageDependency("Foo")).Version.ToString().ShouldEqual("1.2.3");
            source.Get(new PackageDependency("Foo")).Details.Dependencies.ToStrings().ShouldEqual(new List <string> {
                "Dep > 1.0"
            });
        }
Ejemplo n.º 2
0
        public void can_return_dependencies_for_package_that_has_dependencies_which_have_subdependencies_which_have_subdependencies()
        {
            /*
             * Package overview.
             *
             * Package1
             *		P1Sub
             *			P1SubSub1
             *			P1SubSub2
             *				P1SubSubSub
             *
             *	Package2
             *		P2Sub1
             *		P2Sub2
             *		P2Sub3 = 1.0
             *			P2Sub3Sub
             *				P2Sub3SubSub ~> 1.5
             *					P2Sub3SubSubSub
             *
             * P2Sub3SubSub 1.5.0, 1.5.9, 1.6.0, 2.0.0
             *
             * P2Sub3 0.9 (no deps)
             * P2Sub3 1.0 (has the dependencies above)
             */
            var source = new FakeSource();

            source.Add("Package1", "P1Sub");
            source.Add("P1Sub", "P1SubSub1", "P1SubSub2");
            source.Add("P1SubSub1");
            source.Add("P1SubSub2", "P1SubSubSub");
            source.Add("P1SubSubSub");
            source.Add("Package2", "P2Sub1", "P2Sub2", "P2Sub3 1.0");
            source.Add("P2Sub1");
            source.Add("P2Sub2");
            source.Add("P2Sub3 0.9");
            source.Add("P2Sub3 1.0", "P2Sub3Sub");
            source.Add("P2Sub3Sub", "P2Sub3SubSub ~> 1.5");
            source.Add("P2Sub3SubSub 1.5.0", "P2Sub3SubSubSub");
            source.Add("P2Sub3SubSub 1.5.9", "P2Sub3SubSubSub");
            source.Add("P2Sub3SubSub 1.6.0");
            source.Add("P2Sub3SubSub 2.0.0");
            source.Add("P2Sub3SubSubSub");

            var package1 = source.GetPackagesWithId("Package1").First();
            var package2 = source.GetPackagesWithId("Package2").First();

            // check that a few things are setup correctly ...
            source.Packages.First(p => p.Id == "P2Sub3Sub").Details.Dependencies.First().ToString().ShouldEqual("P2Sub3SubSub ~> 1.5");

            /* get Package1's dependencies
             *
             * Package1
             *		P1Sub
             *			P1SubSub1
             *			P1SubSub2
             *				P1SubSubSub
             */
            var found = package1.FindDependencies(source);

            found.Count.ShouldEqual(4);
            found.Select(p => p.Id).ShouldContain("P1Sub");
            found.Select(p => p.Id).ShouldContain("P1SubSub1");
            found.Select(p => p.Id).ShouldContain("P1SubSub2");
            found.Select(p => p.Id).ShouldContain("P1SubSubSub");

            // get Package2's dependencies

            /*
             *	Package2
             *		P2Sub1
             *		P2Sub2
             *		P2Sub3 = 1.0
             *			P2Sub3Sub
             *				P2Sub3SubSub ~> 1.5
             *					P2Sub3SubSubSub
             */
            found = package2.FindDependencies(source);
            found.Count.ShouldEqual(6);
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub1-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub2-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3Sub-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3SubSub-1.5.9");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3SubSubSub-1.0");

            // get Package1 and Package2's dependencies
            found = Source.FindDependencies(new IPackage[] { package1, package2 }, source);
            found.Count.ShouldEqual(10);
            found.Select(p => p.Id).ToArray().ShouldContain("P1Sub");
            found.Select(p => p.Id).ToArray().ShouldContain("P1SubSub1");
            found.Select(p => p.Id).ToArray().ShouldContain("P1SubSub2");
            found.Select(p => p.Id).ToArray().ShouldContain("P1SubSubSub");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub1-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub2-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3Sub-1.0");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3SubSub-1.5.9");
            found.Select(p => p.IdAndVersion()).ToArray().ShouldContain("P2Sub3SubSubSub-1.0");

            // while we have all of this loaded up, let's test missing dependencies ...
            // let's remove P2Sub3SubSub 1.5.* so P2Sub3SubSub ~> 1.5 fails
            source.Packages.Where(p => p.IdAndVersion().StartsWith("P2Sub3SubSub-1.5.")).ToList().ForEach(p => source.Packages.Remove(p));

            try {
                Source.FindDependencies(new IPackage[] { package1, package2 }, source);
                Assert.Fail("Expected MissingDependencyException to be thrown");
            } catch (MooGet.MissingDependencyException ex) {
                ex.Dependencies.Count.ShouldEqual(1);
                ex.Dependencies.First().ToString().ShouldEqual("P2Sub3SubSub ~> 1.5");
            }
        }