Exemplo n.º 1
0
        public void WillChoosePackageWithSmallestNumberOfAssembliesFromMultipleMatches()
        {
            var packages = new List <IPackage>
            {
                PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: new List <string>()
                {
                    AssemblyCommonDll
                }),
                PackageUtility.CreatePackage("Assembly.Other", "1.0", assemblyReferences: new List <string>()
                {
                    AssemblyCommonDll, "Assembly.Other.dll"
                })
            };

            var assemblies = new List <string>()
            {
                AssemblyCommonDll
            };
            var filesystem = new MockFileSystem();

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock <IConsole>().Object);
            var resolved         = assemblyResolver.GetAssemblyToPackageMapping(false);

            resolved.OutputPackageConfigFile();
            Assert.AreEqual(1, filesystem.Paths.Count);
            var file = new PackageReferenceFile(filesystem, string.Concat(filesystem.Root, "packages.config"));

            Assert.AreEqual(1, file.GetPackageReferences().Count());
            Assert.AreEqual(true, file.EntryExists(AssemblyCommon, SemanticVersion.Parse("1.0")));
        }
Exemplo n.º 2
0
        public void CanOutputPackageConfigWithSingleEntry()
        {
            var fileList = new List <string>()
            {
                AssemblyCommonDll
            };
            var packages = new List <IPackage> {
                PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: fileList)
            };

            var assemblies = new List <string>()
            {
                AssemblyCommonDll
            };
            var filesystem = new MockFileSystem();
            //filesystem.Root = @"c:\test";

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock <IConsole>().Object);
            var resolved         = assemblyResolver.GetAssemblyToPackageMapping(false);

            resolved.OutputPackageConfigFile();
            Assert.AreEqual(1, filesystem.Paths.Count);
            var file = new PackageReferenceFile(filesystem, string.Concat(filesystem.Root, "packages.config"));

            Assert.AreEqual(1, file.GetPackageReferences().Count());
        }
Exemplo n.º 3
0
        public void CanFindMultipleAssembliesInMultiplePackagesExhaustively()
        {
            var fileList = new List <string>()
            {
                AssemblyCommonDll, AssemblyDataDll
            };
            var packages = new List <IPackage>
            {
                PackageUtility.CreatePackage(AssemblyCommon, "1.2", assemblyReferences: fileList, isLatest: true),
                PackageUtility.CreatePackage(AssemblyCommon, "1.1", assemblyReferences: fileList, isLatest: false),
                PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: fileList, isLatest: false),
                PackageUtility.CreatePackage(AssemblyData, "1.0", assemblyReferences: new List <string>()
                {
                    AssemblyDataDll
                }, isLatest: true)
            };

            var assemblies = new List <string>()
            {
                AssemblyCommonDll, AssemblyDataDll
            };

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), new Mock <MockFileSystem>().Object, new Mock <IConsole>().Object);
            var resolved         = assemblyResolver.GetAssemblyToPackageMapping(true).ResolvedMappings;

            Assert.AreEqual(3, resolved[AssemblyCommonDll].Count);
            Assert.AreEqual(4, resolved[AssemblyDataDll].Count);
        }
Exemplo n.º 4
0
        public void CanFindAssemblyInSinglePackage(int numberOfRepeatedAssemblies)
        {
            var fileList = new List <string>()
            {
                AssemblyCommonDll
            };
            var packages = new List <IPackage> {
                PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: fileList)
            };

            var assemblies = Enumerable.Repeat(AssemblyCommonDll, numberOfRepeatedAssemblies).ToList();

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), new Mock <MockFileSystem>().Object, new Mock <IConsole>().Object);
            var resolved         = assemblyResolver.GetAssemblyToPackageMapping(false).ResolvedMappings;

            Assert.AreEqual(1, resolved[AssemblyCommonDll].Count);
        }
Exemplo n.º 5
0
        public override void ExecuteCommand()
        {
            if (string.IsNullOrEmpty(Arguments[0]))
            {
                return;
            }
            var assemblies = new List <string>();

            if (!Arguments[0].EndsWith(".dll"))
            {
                _fileSystem = CreateFileSystem(Directory.GetCurrentDirectory());
                assemblies.AddRange(GetAssemblyListFromDirectory());
            }
            else
            {
                assemblies.Add(Arguments[0]);
            }


            var sw = new Stopwatch();

            sw.Start();
            var repository    = GetRepository();
            var packageSource = GetPackageList(repository);

            _resolver = new RepositoryAssemblyResolver(assemblies, packageSource, _fileSystem, Console);

            var assemblyToPackageMapping = _resolver.GetAssemblyToPackageMapping(Exhaustive);

            Console.WriteLine();
            sw.Stop();

            if (!OutputPackageConfig)
            {
                OutputResultsToConsole(sw, assemblyToPackageMapping.ResolvedMappings);
                OutputErrors(assemblyToPackageMapping.FailedMappings);
            }
            else
            {
                assemblyToPackageMapping.OutputPackageConfigFile();
                OutputErrors(assemblyToPackageMapping.FailedMappings);
            }

            Environment.Exit(0);
        }
Exemplo n.º 6
0
        private IEnumerable <KeyValuePair <string, List <IPackage> > > ResolveReferenceMappings(IEnumerable <IReference> references)
        {
            var referenceList = GetReferencedAssemblies(references);

            if (referenceList.Any())
            {
                _console.WriteLine("Checking feed for {0} references...", referenceList.Count);

                IQueryable <IPackage> packageSource = _packageRepository.GetPackages();
                var assemblyResolver  = new RepositoryAssemblyResolver(referenceList, packageSource, _projectFileSystem, _console);
                var referenceMappings = assemblyResolver.GetAssemblyToPackageMapping(false);
                referenceMappings.OutputPackageConfigFile();
                //next, lets rewrite the project file with the mappings to the new location...
                //Going to have to use the mapping to assembly name that we get back from the resolve above
                _console.WriteLine();
                _console.WriteLine("Found {0} package to assembly mappings on feed...", referenceMappings.ResolvedMappings.Count());
                referenceMappings.FailedMappings.ToList().ForEach(f => _console.WriteLine("Could not match: {0}", f));
                return(referenceMappings.ResolvedMappings);
            }

            _console.WriteLine("No references found to resolve (all GAC?)");
            return(Enumerable.Empty <KeyValuePair <string, List <IPackage> > >());
        }
Exemplo n.º 7
0
        public void NonExhaustiveSearchStopsAfterResolvingOnePackagePerAssembly()
        {
            var willThrowErrorIfManipulatedAsPath = new List <string>()
            {
                "c:\\temp c:\\windows"
            };
            var packages = new List <IPackage>
            {
                PackageUtility.CreatePackage("Assembly.Common", "1.2", assemblyReferences: new[] { AssemblyCommonDll }, isLatest: true),
                PackageUtility.CreatePackage("Assembly.Data", "1.1", assemblyReferences: new[] { AssemblyDataDll }, isLatest: false),
                PackageUtility.CreatePackage("Assembly.Common", "1.0", assemblyReferences: willThrowErrorIfManipulatedAsPath, isLatest: false)
            };

            var assemblies = new List <string>()
            {
                AssemblyCommonDll, AssemblyDataDll
            };

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), new Mock <MockFileSystem>().Object, new Mock <IConsole>().Object);
            var resolved         = assemblyResolver.GetAssemblyToPackageMapping(false).ResolvedMappings;

            Assert.AreEqual(1, resolved[AssemblyCommonDll].Count);
            Assert.AreEqual(1, resolved[AssemblyDataDll].Count);
        }