public void RepositoryPathsAreSavedInAlphabeticalOrder() { // Arrange var fileSystem = new Mock <MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"x:\foo\"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, new MockFileSystem()); // Act repository.RegisterRepository( new PackageReferenceFile(new MockFileSystem(), @"x:\foo\z\packages\packages.config")); repository.RegisterRepository( new PackageReferenceFile(new MockFileSystem(), @"x:\foo\X\packages\packages.config")); repository.RegisterRepository( new PackageReferenceFile(new MockFileSystem(), @"x:\foo\a\packages\packages.config")); // Assert Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""a\packages\packages.config"" /> <repository path=""X\packages\packages.config"" /> <repository path=""z\packages\packages.config"" /> </repositories>", fileSystem.Object.ReadAllText("repositories.config")); }
public void RegisterRepositoryDoesNotAddRelativePathToRepositoriesConfigIfExists() { // Arrange var fileSystem = new Mock <MockFileSystem>() { CallBase = true }; fileSystem.Object.AddFile("repositories.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""A\packages.config"" /> <repository path=""B\packages.config"" /> </repositories>"); fileSystem.Setup(m => m.Root).Returns(@"c:\foo\"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, new MockFileSystem()); // Act repository.RegisterRepository(@"c:\foo\A\packages.config"); // Assert Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""A\packages.config"" /> <repository path=""B\packages.config"" /> </repositories>", fileSystem.Object.ReadAllText("repositories.config")); }
public void RegisterRepositoryAddsRelativePathToRepositoriesConfig() { // Arrange var fileSystem = new Mock<MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"c:\foo\"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object); // Act repository.RegisterRepository(@"c:\foo\packages\packages.config"); // Assert Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""packages\packages.config"" /> </repositories>", fileSystem.Object.ReadAllText("repositories.config")); }
private void CreateNuGetScaffolding(SharedPackageRepository sharedPackagesRepository, List <ManifestDependency> manifestDependencies, IEnumerable <KeyValuePair <string, List <IPackage> > > resolvedMappings, FileInfo projectFileInfo, Project project, List <string> projectDependencies) { //Now, create the packages.config for the resolved packages, and update the repositories.config Console.WriteLine("Creating packages.config"); var packagesConfigFilePath = Path.Combine(projectFileInfo.Directory.FullName + "\\", "packages.config"); var packagesConfig = new PackageReferenceFile(packagesConfigFilePath); foreach (var referenceMapping in resolvedMappings) { //TODO We shouldnt need to resolve this twice.... var package = referenceMapping.Value.OrderBy(p => p.GetFiles().Count()).First(); if (!packagesConfig.EntryExists(package.Id, package.Version)) { packagesConfig.AddEntry(package.Id, package.Version); } if (NuSpec && manifestDependencies.All(m => m.Id != package.Id)) { manifestDependencies.Add(new ManifestDependency { Id = package.Id }); } } //This is messy...refactor //For any resolved project dependencies, add a manifest dependency if we are doing nuspecs if (NuSpec) { foreach (var projectDependency in projectDependencies) { if (manifestDependencies.All(m => m.Id != projectDependency)) { manifestDependencies.Add(new ManifestDependency { Id = projectDependency }); } } } //Register the packages.config sharedPackagesRepository.RegisterRepository(packagesConfigFilePath); //Add the packages.config to the project content, otherwise later versions of the VSIX fail... if (!project.GetItems("None").Any(i => i.UnevaluatedInclude.Equals("packages.config"))) { project.Xml.AddItemGroup().AddItem("None", "packages.config"); project.Save(); } }
public void RegisterRepositoryUseTheStoreFileSystem() { // Arrange var fileSystem = new MockFileSystem("x:\\"); var storeFileSystem = new MockFileSystem("y:\\"); var configFileSystem = new MockFileSystem("z:\\"); var resolver = new DefaultPackagePathResolver(fileSystem); var repository = new SharedPackageRepository(resolver, fileSystem, storeFileSystem, configFileSystem); // Act repository.RegisterRepository("x:\\project1\\path"); // Assert Assert.True(storeFileSystem.FileExists("repositories.config")); string content = storeFileSystem.ReadAllText("repositories.config"); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""project1\path"" /> </repositories>", content); }
public void RegisterRepositoryDoesNotAddRelativePathToRepositoriesConfigIfExists() { // Arrange var fileSystem = new MockFileSystem(@"x:\foo"); fileSystem.AddFile("repositories.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""A\packages.config"" /> <repository path=""B\packages.config"" /> </repositories>"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, new MockFileSystem()); var packageReferenceFile = new PackageReferenceFile(new MockFileSystem(), @"x:\foo\A\packages.config"); // Act repository.RegisterRepository(packageReferenceFile); // Assert Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""A\packages.config"" /> <repository path=""B\packages.config"" /> </repositories>", fileSystem.ReadAllText("repositories.config")); }
public void RepositoryPathsAreSavedInAlphabeticalOrder() { // Arrange var fileSystem = new Mock<MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"x:\foo\"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, new MockFileSystem()); // Act repository.RegisterRepository(@"x:\foo\z\packages\packages.config"); repository.RegisterRepository(@"x:\foo\X\packages\packages.config"); repository.RegisterRepository(@"x:\foo\a\packages\packages.config"); // Assert Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""a\packages\packages.config"" /> <repository path=""X\packages\packages.config"" /> <repository path=""z\packages\packages.config"" /> </repositories>", fileSystem.Object.ReadAllText("repositories.config")); }
private void CreateNuGetScaffolding(SharedPackageRepository sharedPackagesRepository, List<ManifestDependency> manifestDependencies, IEnumerable<KeyValuePair<string, List<IPackage>>> resolvedMappings, FileInfo projectFileInfo, Project project, List<string> projectDependencies) { //Now, create the packages.config for the resolved packages, and update the repositories.config Console.WriteLine("Creating packages.config"); var packagesConfigFilePath = Path.Combine(projectFileInfo.Directory.FullName + "\\", "packages.config"); var packagesConfig = new PackageReferenceFile(packagesConfigFilePath); foreach (var referenceMapping in resolvedMappings) { //TODO We shouldnt need to resolve this twice.... var package = referenceMapping.Value.OrderBy(p => p.GetFiles().Count()).First(); if (!packagesConfig.EntryExists(package.Id, package.Version)) packagesConfig.AddEntry(package.Id, package.Version); if (NuSpec && manifestDependencies.All(m => m.Id != package.Id)) { manifestDependencies.Add(new ManifestDependency {Id = package.Id}); } } //This is messy...refactor //For any resolved project dependencies, add a manifest dependency if we are doing nuspecs if (NuSpec) { foreach (var projectDependency in projectDependencies) { if (manifestDependencies.All(m => m.Id != projectDependency)) { manifestDependencies.Add(new ManifestDependency {Id = projectDependency}); } } } //Register the packages.config sharedPackagesRepository.RegisterRepository(packagesConfigFilePath); //Add the packages.config to the project content, otherwise later versions of the VSIX fail... if (!project.GetItems("None").Any(i => i.UnevaluatedInclude.Equals("packages.config"))) { project.Xml.AddItemGroup().AddItem("None", "packages.config"); project.Save(); } }