public static void GetLocalRepositoryWhenSolutionDirectoryIsNotFound() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockAggregateRepository = new Mock <AggregateRepository>(Enumerable.Empty <IPackageRepository>()); var solutionManager = new Mock <ISolutionManager>(); solutionManager.Setup(s => s.SolutionDirectory).Returns(String.Empty); var fileSystemProvider = new Mock <IFileSystemProvider>(); var repositorySettings = new RepositorySettings(solutionManager.Object, fileSystemProvider.Object, new Mock <IVsSourceControlTracker>().Object, null); var packageManagerFactory = new VsPackageManagerFactory( new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, repositorySettings, new Mock <VsPackageInstallerEvents>().Object, mockAggregateRepository.Object, frameworkMultiTargeting: null, machineWideSettings: null); // Act & Assert // Get RepositoryPath throws InvalidOperationException and GetLocalRepository() handles it to return null // To make a delegate out of property repositorySettings.RepositoryPath, calling String.IsNullOrEmpty ExceptionAssert.Throws <InvalidOperationException>(() => String.IsNullOrEmpty(repositorySettings.RepositoryPath), "Unable to locate the solution directory. Please ensure that the solution has been saved."); Assert.Null(ProjectRetargetingUtility.GetLocalRepository(packageManagerFactory)); }
public void ResolveDependencyReturnsPackagesFromAggregateSources() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository(); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2 }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny <string>())).Returns <string>(s => { switch (s) { case "Source1": return(mockRepository1); case "Source2": return(mockRepository2); default: return(null); } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, new Mock <IRepositorySettings>().Object, new Mock <VsPackageInstallerEvents>().Object, mockRepository1, machineWideSettings: null); // Act var repository = packageManagerFactory.CreateFallbackRepository(mockRepository1); // Assert var dependencyResolver = repository as IDependencyResolver; IPackage dependency = dependencyResolver.ResolveDependency(new PackageDependency("A", new VersionSpec { MinVersion = new SemanticVersion("1.0.0.0") }), null, allowPrereleaseVersions: false, preferListedPackages: false, dependencyVersion: DependencyVersion.Lowest); List <IPackage> packages = repository.GetPackages().ToList(); // Assert Assert.Equal(1, packages.Count()); Assert.Equal("A", packages[0].Id); Assert.Equal(new SemanticVersion("1.0"), packages[0].Version); Assert.NotNull(dependency); Assert.Equal("A", dependency.Id); Assert.Equal(new SemanticVersion("1.2"), dependency.Version); }
public void CreatePackageManagerUsesFallbackRepositoryyAsdependencyResolverIfUseFallbackIsTrue() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockFileSystemProvider = new Mock<IFileSystemProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository(); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2 }); mockFileSystemProvider.Setup(f => f.GetFileSystem(It.IsAny<string>())).Returns(new MockFileSystem()); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, mockFileSystemProvider.Object, new Mock<IRepositorySettings>().Object, null, new Mock<VsPackageInstallerEvents>().Object); // Act var packageManager = packageManagerFactory.CreatePackageManager(mockRepository1, useFallbackForDependencies: true); // Assert Assert.IsType(typeof(FallbackRepository), packageManager.SourceRepository); var fallbackRepo = (FallbackRepository)packageManager.SourceRepository; Assert.IsType(typeof(AggregateRepository), fallbackRepo.DependencyResolver); var dependencyResolver = (AggregateRepository)fallbackRepo.DependencyResolver; Assert.Equal(2, dependencyResolver.Repositories.Count()); Assert.Equal(mockRepository1, dependencyResolver.Repositories.First()); Assert.Equal(mockRepository2, dependencyResolver.Repositories.Last()); }
public void CreateFallbackRepositoryIncludesRepositoryOnceInAggregateDependencyResolver() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository("Source1"); var mockRepository2 = new MockPackageRepository("Source2"); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2 }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny <string>())).Returns <string>(s => { switch (s) { case "Source1": return(mockRepository1); case "Source2": return(mockRepository2); default: return(null); } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, new Mock <IRepositorySettings>().Object, new Mock <VsPackageInstallerEvents>().Object, mockRepository1, machineWideSettings: null); // Act var repository = packageManagerFactory.CreateFallbackRepository(mockRepository1); // Assert var fallbackRepo = repository as FallbackRepository; var aggregateRepo = (AggregateRepository)fallbackRepo.DependencyResolver; Assert.Equal(2, aggregateRepo.Repositories.Count()); Assert.Equal(mockRepository1, aggregateRepo.Repositories.First()); Assert.Equal(mockRepository2, aggregateRepo.Repositories.Last()); }
public void CreateFallbackRepositoryUsesResolvedSourceNameWhenEnsuringRepositoryIsNotAlreadyListedInAggregate() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository("http://redirected"); var aggregateRepo = new AggregateRepository(new[] { mockRepository1, mockRepository2 }); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var aggregateSource = AggregatePackageSource.Instance; mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny <string>())).Returns <string>(s => { switch (s) { case "Source1": return(mockRepository1); case "Source2": return(mockRepository2); default: return(null); } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, new Mock <IRepositorySettings>().Object, new Mock <VsPackageInstallerEvents>().Object, mockRepository1, machineWideSettings: null); // Act FallbackRepository repository = (FallbackRepository)packageManagerFactory.CreateFallbackRepository(mockRepository2); // Assert var dependencyResolver = (AggregateRepository)repository.DependencyResolver; Assert.Equal(2, dependencyResolver.Repositories.Count()); }
public void CreateFallbackRepositoryDoesNotThrowWhenIteratingOverFailingRepositories() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository("http://redirected"); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var source3 = new PackageSource("SourceBad"); var aggregateSource = AggregatePackageSource.Instance; mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source3, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny <string>())).Returns <string>(s => { switch (s) { case "Source1": return(mockRepository1); case "Source2": return(mockRepository2); case "SourceBad": throw new InvalidOperationException(); default: return(null); } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, new Mock <IRepositorySettings>().Object, new Mock <VsPackageInstallerEvents>().Object, mockRepository1, machineWideSettings: null); // Act FallbackRepository repository = (FallbackRepository)packageManagerFactory.CreateFallbackRepository(mockRepository2); // Assert var dependencyResolver = (AggregateRepository)repository.DependencyResolver; Assert.Equal(2, dependencyResolver.Repositories.Count()); }
public void CreateFallbackRepositoryReturnsCurrentIfCurrentIsAggregateRepository() { // Arrange var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>(); var mockSourceProvider = new Mock <IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository(); var aggregateRepo = new AggregateRepository(new[] { mockRepository1, mockRepository2 }); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var aggregateSource = AggregatePackageSource.Instance; mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny <string>())).Returns <string>(s => { switch (s) { case "Source1": return(mockRepository1); case "Source2": return(mockRepository2); default: return(null); } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock <ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock <IFileSystemProvider>().Object, new Mock <IRepositorySettings>().Object, new Mock <VsPackageInstallerEvents>().Object, mockRepository1, machineWideSettings: null); // Act var repository = packageManagerFactory.CreateFallbackRepository(aggregateRepo); // Assert Assert.Equal(aggregateRepo, repository); }
public void ResolveDependencyReturnsPackagesFromAggregateSources() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository(); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2 }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock<IFileSystemProvider>().Object, new Mock<IRepositorySettings>().Object, new Mock<VsPackageInstallerEvents>().Object); // Act var repository = packageManagerFactory.CreateFallbackRepository(mockRepository1); // Assert var dependencyResolver = repository as IDependencyResolver; IPackage dependency = dependencyResolver.ResolveDependency(new PackageDependency("A", new VersionSpec { MinVersion = new SemanticVersion("1.0.0.0") }), null, allowPrereleaseVersions: false, preferListedPackages: false); List<IPackage> packages = repository.GetPackages().ToList(); // Assert Assert.Equal(1, packages.Count()); Assert.Equal("A", packages[0].Id); Assert.Equal(new SemanticVersion("1.0"), packages[0].Version); Assert.NotNull(dependency); Assert.Equal("A", dependency.Id); Assert.Equal(new SemanticVersion("1.2"), dependency.Version); }
public void CreateFallbackRepositoryIncludesRepositoryOnceInAggregateDependencyResolver() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository("Source1"); var mockRepository2 = new MockPackageRepository("Source2"); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2 }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock<IFileSystemProvider>().Object, new Mock<IRepositorySettings>().Object, new Mock<VsPackageInstallerEvents>().Object); // Act var repository = packageManagerFactory.CreateFallbackRepository(mockRepository1); // Assert var fallbackRepo = repository as FallbackRepository; var aggregateRepo = (AggregateRepository)fallbackRepo.DependencyResolver; Assert.Equal(2, aggregateRepo.Repositories.Count()); Assert.Equal(mockRepository1, aggregateRepo.Repositories.First()); Assert.Equal(mockRepository2, aggregateRepo.Repositories.Last()); }
public void CreateFallbackRepositoryDoesNotThrowWhenIteratingOverFailingRepositories() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository("http://redirected"); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var source3 = new PackageSource("SourceBad"); var aggregateSource = AggregatePackageSource.Instance; mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source3, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; case "SourceBad": throw new InvalidOperationException(); default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock<IFileSystemProvider>().Object, new Mock<IRepositorySettings>().Object, new Mock<VsPackageInstallerEvents>().Object); // Act FallbackRepository repository = (FallbackRepository)packageManagerFactory.CreateFallbackRepository(mockRepository2); // Assert var dependencyResolver = (AggregateRepository)repository.DependencyResolver; Assert.Equal(2, dependencyResolver.Repositories.Count()); }
public void CreateFallbackRepositoryUsesResolvedSourceNameWhenEnsuringRepositoryIsNotAlreadyListedInAggregate() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository("http://redirected"); var aggregateRepo = new AggregateRepository(new[] { mockRepository1, mockRepository2 }); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var aggregateSource = AggregatePackageSource.Instance; mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock<IFileSystemProvider>().Object, new Mock<IRepositorySettings>().Object, new Mock<VsPackageInstallerEvents>().Object); // Act FallbackRepository repository = (FallbackRepository)packageManagerFactory.CreateFallbackRepository(mockRepository2); // Assert var dependencyResolver = (AggregateRepository)repository.DependencyResolver; Assert.Equal(2, dependencyResolver.Repositories.Count()); }
public void CreateFallbackRepositoryReturnsCurrentIfCurrentIsAggregateRepository() { // Arrange var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>(); var mockSourceProvider = new Mock<IVsPackageSourceProvider>(); var mockRepository1 = new MockPackageRepository(); var mockRepository2 = new MockPackageRepository(); var aggregateRepo = new AggregateRepository(new[] { mockRepository1, mockRepository2 }); var source1 = new PackageSource("Source1"); var source2 = new PackageSource("Source2"); var aggregateSource = AggregatePackageSource.Instance; mockRepository1.AddPackage(PackageUtility.CreatePackage("A", "1.0")); mockRepository2.AddPackage(PackageUtility.CreatePackage("A", "1.2")); mockSourceProvider.Setup(m => m.LoadPackageSources()).Returns(new[] { source1, source2, aggregateSource }); mockRepositoryFactory.Setup(m => m.CreateRepository(It.IsAny<string>())).Returns<string>(s => { switch (s) { case "Source1": return mockRepository1; case "Source2": return mockRepository2; default: return null; } }); var packageManagerFactory = new VsPackageManagerFactory(new Mock<ISolutionManager>().Object, mockRepositoryFactory.Object, mockSourceProvider.Object, new Mock<IFileSystemProvider>().Object, new Mock<IRepositorySettings>().Object, new Mock<VsPackageInstallerEvents>().Object); // Act var repository = packageManagerFactory.CreateFallbackRepository(aggregateRepo); // Assert Assert.Equal(aggregateRepo, repository); }