public void InstallCommandUpdatesPackageIfAlreadyPresentAndNotUsingSideBySide() { // Arrange var fileSystem = new MockFileSystem(); var repository = new MockPackageRepository(); var packageManager = new PackageManager(GetFactory().CreateRepository("Some source"), new DefaultPackagePathResolver(fileSystem), fileSystem, repository); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem, packageManager) { Console = new MockConsole(), ExcludeVersion = true, Version = "0.4", }; installCommand.Arguments.Add("Baz"); // Act - 1 installCommand.ExecuteCommand(); // Assert - 1 Assert.True(repository.Exists("Baz", new SemanticVersion("0.4"))); // Act - 2 installCommand.Version = null; installCommand.Execute(); // Assert - 2 Assert.False(repository.Exists("Baz", new SemanticVersion("0.4"))); Assert.True(repository.Exists("Baz", new SemanticVersion("0.7"))); }
public void InstallCommandFromConfigIgnoresDependencies() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"X:\test\packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Foo"" version=""1.0.0"" /> <package id=""Qux"" version=""2.3.56-beta"" /> </packages>"); var pathResolver = new DefaultPackagePathResolver(fileSystem); var packageManager = new Mock <IPackageManager>(MockBehavior.Strict); var repository = new MockPackageRepository(); packageManager.Setup(p => p.InstallPackage("Foo", new SemanticVersion("1.0.0"), true, true)).Verifiable(); packageManager.Setup(p => p.InstallPackage("Qux", new SemanticVersion("2.3.56-beta"), true, true)).Verifiable(); packageManager.SetupGet(p => p.PathResolver).Returns(pathResolver); packageManager.SetupGet(p => p.LocalRepository).Returns(new LocalPackageRepository(pathResolver, fileSystem)); packageManager.SetupGet(p => p.FileSystem).Returns(fileSystem); packageManager.SetupGet(p => p.SourceRepository).Returns(repository); var repositoryFactory = new Mock <IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = new Mock <IPackageSourceProvider>(MockBehavior.Strict); // Act var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider.Object, fileSystem, packageManager.Object); installCommand.Arguments.Add(@"X:\test\packages.config"); installCommand.Execute(); // Assert packageManager.Verify(); }
public void InstallCommandUpdatesPackageIfAlreadyPresentAndNotUsingSideBySide() { // Arrange var fileSystem = new MockFileSystem(); var packages = new List <IPackage>(); var repository = new Mock <IPackageRepository>(); repository.Setup(c => c.GetPackages()).Returns(packages.AsQueryable()); repository.Setup(c => c.AddPackage(It.IsAny <IPackage>())).Callback <IPackage>(c => packages.Add(c)).Verifiable(); repository.Setup(c => c.RemovePackage(It.IsAny <IPackage>())).Callback <IPackage>(c => packages.Remove(c)).Verifiable(); var packageManager = new PackageManager(GetFactory().CreateRepository("Some source"), new DefaultPackagePathResolver(fileSystem), fileSystem, repository.Object); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem, packageManager); installCommand.Version = "0.4"; installCommand.ExcludeVersion = true; installCommand.Arguments.Add("Baz"); // Act - 1 installCommand.ExecuteCommand(); // Assert - 1 Assert.Equal("Baz", packages.Single().Id); Assert.Equal(new SemanticVersion("0.4"), packages.Single().Version); // Act - 2 installCommand.Version = null; installCommand.Execute(); // Assert - 2 Assert.Equal("Baz", packages.Single().Id); Assert.Equal(new SemanticVersion("0.7"), packages.Single().Version); repository.Verify(); }
public void InstallCommandInstallsSatellitePackagesAfterCorePackages() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"X:\test\packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Foo.Fr"" version=""1.0.0"" /> <package id=""Foo"" version=""1.0.0"" /> </packages>"); var pathResolver = new DefaultPackagePathResolver(fileSystem); var packageManager = new Mock <IPackageManager>(MockBehavior.Strict); var package1 = PackageUtility.CreatePackage("Foo", "1.0.0"); var package2 = PackageUtility.CreatePackage("Foo.Fr", "1.0.0", language: "fr", dependencies: new[] { new PackageDependency("Foo", VersionUtility.ParseVersionSpec("[1.0.0]")) }); var repository = new MockPackageRepository { package1, package2 }; // We *shouldn't* be testing if a sequence of operations worked rather that the outcome that satellite package was installed correctly, // but doing so requires work with nice to have a unit test that tests it. bool langPackInstalled = false; packageManager.Setup(p => p.InstallPackage(package1, true, true)).Callback(() => { if (langPackInstalled) { throw new Exception("Lang package installed first"); } }).Verifiable(); packageManager.Setup(p => p.InstallPackage(package2, true, true)).Callback(() => langPackInstalled = true).Verifiable(); packageManager.SetupGet(p => p.PathResolver).Returns(pathResolver); packageManager.SetupGet(p => p.LocalRepository).Returns(new LocalPackageRepository(pathResolver, fileSystem)); packageManager.SetupGet(p => p.FileSystem).Returns(fileSystem); packageManager.SetupGet(p => p.SourceRepository).Returns(repository); var repositoryFactory = new Mock <IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = Mock.Of <IPackageSourceProvider>(); // Act var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider, fileSystem, packageManager.Object); installCommand.Arguments.Add(@"X:\test\packages.config"); installCommand.Execute(); // Assert packageManager.Verify(); }
public void InstallCommandPromptsForConsentIfRequireConsentIsSet() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"X:\test\packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Abc"" version=""1.0.0"" /> </packages>"); var pathResolver = new DefaultPackagePathResolver(fileSystem); var packageManager = new Mock <IPackageManager>(MockBehavior.Strict); var repository = new MockPackageRepository { PackageUtility.CreatePackage("Abc") }; packageManager.SetupGet(p => p.PathResolver).Returns(pathResolver); packageManager.SetupGet(p => p.LocalRepository).Returns(new LocalPackageRepository(pathResolver, fileSystem)); packageManager.SetupGet(p => p.FileSystem).Returns(fileSystem); packageManager.SetupGet(p => p.SourceRepository).Returns(repository); var repositoryFactory = new Mock <IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = Mock.Of <IPackageSourceProvider>(); var console = new MockConsole(); var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider, fileSystem, packageManager.Object, allowPackageRestore: false); installCommand.Arguments.Add(@"X:\test\packages.config"); installCommand.Console = console; installCommand.RequireConsent = true; // Act var exception = Assert.Throws <AggregateException>(() => installCommand.Execute()); // Assert Assert.Equal("Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'.", exception.InnerException.Message); }
public void InstallCommandDoesNotPromptForConsentIfRequireConsentIsNotSet() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"X:\test\packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Abc"" version=""1.0.0"" /> </packages>"); var pathResolver = new DefaultPackagePathResolver(fileSystem); var packageManager = new Mock <IPackageManager>(MockBehavior.Strict); var package = PackageUtility.CreatePackage("Abc"); var repository = new MockPackageRepository { package }; packageManager.SetupGet(p => p.PathResolver).Returns(pathResolver); packageManager.SetupGet(p => p.LocalRepository).Returns(new LocalPackageRepository(pathResolver, fileSystem)); packageManager.SetupGet(p => p.FileSystem).Returns(fileSystem); packageManager.SetupGet(p => p.SourceRepository).Returns(repository); packageManager.Setup(p => p.InstallPackage(package, true, true)).Verifiable(); var repositoryFactory = new Mock <IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = Mock.Of <IPackageSourceProvider>(); var console = new MockConsole(); var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider, fileSystem, packageManager.Object, allowPackageRestore: false); installCommand.Arguments.Add(@"X:\test\packages.config"); installCommand.Console = console; // Act installCommand.Execute(); // Assert packageManager.Verify(); }
public void InstallCommandFromConfigIgnoresDependencies() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Foo"" version=""1.0.0"" /> <package id=""Qux"" version=""2.3.56-beta"" /> </packages>"); var packageManager = new Mock<IPackageManager>(MockBehavior.Strict); var package = PackageUtility.CreatePackage("Foo", "1.0.0"); packageManager.Setup(p => p.InstallPackage("Foo", new SemanticVersion("1.0.0"), true, true)).Verifiable(); packageManager.Setup(p => p.InstallPackage("Qux", new SemanticVersion("2.3.56-beta"), true, true)).Verifiable(); packageManager.SetupGet(p => p.PathResolver).Returns(new DefaultPackagePathResolver(fileSystem)); var repository = new MockPackageRepository(); var repositoryFactory = new Mock<IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = new Mock<IPackageSourceProvider>(MockBehavior.Strict); // Act var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider.Object, fileSystem, packageManager.Object); installCommand.Arguments.Add("packages.config"); installCommand.Execute(); // Assert packageManager.Verify(); }
public void InstallCommandUpdatesPackageIfAlreadyPresentAndNotUsingSideBySide() { // Arrange var fileSystem = new MockFileSystem(); var packages = new List<IPackage>(); var repository = new Mock<IPackageRepository>(); repository.Setup(c => c.GetPackages()).Returns(packages.AsQueryable()); repository.Setup(c => c.AddPackage(It.IsAny<IPackage>())).Callback<IPackage>(c => packages.Add(c)).Verifiable(); repository.Setup(c => c.RemovePackage(It.IsAny<IPackage>())).Callback<IPackage>(c => packages.Remove(c)).Verifiable(); var packageManager = new PackageManager(GetFactory().CreateRepository("Some source"), new DefaultPackagePathResolver(fileSystem), fileSystem, repository.Object); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem, packageManager); installCommand.Version = "0.4"; installCommand.ExcludeVersion = true; installCommand.Arguments.Add("Baz"); // Act - 1 installCommand.ExecuteCommand(); // Assert - 1 Assert.Equal("Baz", packages.Single().Id); Assert.Equal(new SemanticVersion("0.4"), packages.Single().Version); // Act - 2 installCommand.Version = null; installCommand.Execute(); // Assert - 2 Assert.Equal("Baz", packages.Single().Id); Assert.Equal(new SemanticVersion("0.7"), packages.Single().Version); repository.Verify(); }
public void InstallCommandFromConfigPerformsQuickCheckForFiles() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(@"X:\test\packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""Foo"" version=""1.8.0"" /> <package id=""Qux"" version=""2.3.56-beta"" /> </packages>"); fileSystem.AddFile("Foo.1.8.nupkg"); var pathResolver = new DefaultPackagePathResolver(fileSystem); var packageManager = new Mock<IPackageManager>(MockBehavior.Strict); var repository = new MockPackageRepository(); packageManager.Setup(p => p.InstallPackage("Qux", new SemanticVersion("2.3.56-beta"), true, true)).Verifiable(); packageManager.SetupGet(p => p.PathResolver).Returns(pathResolver); packageManager.SetupGet(p => p.LocalRepository).Returns(new LocalPackageRepository(pathResolver, fileSystem)); packageManager.SetupGet(p => p.FileSystem).Returns(fileSystem); packageManager.SetupGet(p => p.SourceRepository).Returns(repository); var repositoryFactory = new Mock<IPackageRepositoryFactory>(); repositoryFactory.Setup(r => r.CreateRepository("My Source")).Returns(repository); var packageSourceProvider = new Mock<IPackageSourceProvider>(MockBehavior.Strict); // Act var installCommand = new TestInstallCommand(repositoryFactory.Object, packageSourceProvider.Object, fileSystem, packageManager.Object) { Console = new MockConsole() }; installCommand.Arguments.Add(@"X:\test\packages.config"); installCommand.Execute(); // Assert packageManager.Verify(); }