public void FindPackageById_ReturnsSpecificVersionIfHashFileExists() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg.sha512"), "hash"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg"), "content"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg.sha512"), "cotnent"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg"), "cotnent"); var repository = new ExpandedPackageRepository(fileSystem); // Act var package = repository.FindPackage("Bar", NuGetVersion.Parse("1.0.0.0-beta1")); // Assert Assert.NotNull(package); Assert.Equal(SemanticVersion.Parse("1.0.0-beta1"), package.Identity.Version); var author = package.Nuspec.GetAuthors(); Assert.Equal("test-author", author); }
public void GetPackages_SkipsPackagesWithoutHashFile() { // Arrange var barPackage = new PackageBuilder { Id = "Foo", Version = new SemanticVersion("1.0.0-beta1-345"), Description = "Some description", }; barPackage.Authors.Add("test author"); barPackage.Files.Add( PackageUtility.CreateMockedPackageFile(@"lib\net45", "Foo.dll", "lib contents").Object); var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg"), "")); var barRoot = Path.Combine("Bar", "1.0.0-beta1-345"); fileSystem.AddFile(Path.Combine(barRoot, "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine(barRoot, "Bar.1.0.0-beta1-345.nupkg.sha512")); fileSystem.AddFile(Path.Combine(barRoot, "Bar.1.0.0-beta1-345.nupkg"), GetPackageStream(barPackage)); var repository = new ExpandedPackageRepository(fileSystem); // Act var packages = repository.GetPackages().ToList(); // Assert var package = Assert.Single(packages); Assert.Equal("Bar", package.Id); Assert.Equal(new SemanticVersion("1.0.0-beta1-345"), package.Version); }
public void FindPackageById_ReturnsSpecificVersionIfHashFileExists() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.1.0.0-beta1-345.nupkg.sha512")); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512")); var repository = new ExpandedPackageRepository(fileSystem); // Act var package = repository.FindPackage("Bar", new SemanticVersion("1.0.0.0-beta1")); // Assert Assert.NotNull(package); Assert.Equal(new SemanticVersion("1.0.0-beta1"), package.Version); var author = Assert.Single(package.Authors); Assert.Equal("test-author", author); }
internal ServerPackageRepository( IFileSystem fileSystem, bool runBackgroundTasks, ExpandedPackageRepository innerRepository, Logging.ILogger logger = null, Func <string, bool, bool> getSetting = null) { if (fileSystem == null) { throw new ArgumentNullException("fileSystem"); } if (innerRepository == null) { throw new ArgumentNullException("innerRepository"); } _fileSystem = fileSystem; _runBackgroundTasks = runBackgroundTasks; _expandedPackageRepository = innerRepository; _logger = logger ?? new TraceLogger(); _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin"); _getSetting = getSetting ?? GetBooleanAppSetting; }
public void FindPackagesById_ReturnsAllVersionsOfAPackage() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.1.0.0-beta1-345.nupkg.sha512"), "345sha"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-402", "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-402</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-402", "Bar.1.0.0-beta1-402.nupkg.sha512"), "402sha"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512"), "beta1sha"); var repository = new ExpandedPackageRepository(fileSystem); // Act var packages = repository.FindPackagesById("Bar").OrderBy(p => p.Version).ToList(); // Assert Assert.Equal(3, packages.Count); Assert.Equal(new SemanticVersion("1.0.0-beta1"), packages[0].Version); Assert.Equal(new SemanticVersion("1.0.0-beta1-345"), packages[1].Version); Assert.Equal(new SemanticVersion("1.0.0-beta1-402"), packages[2].Version); }
public async Task Remove_SupportsEnabledUnlisting() { // Arrange using (var directory = new TemporaryDirectory()) { var fileSystem = new PhysicalFileSystem(directory); var repository = new ExpandedPackageRepository(fileSystem); var logger = new Infrastructure.NullLogger(); repository.AddPackage(CreatePackage(PackageId, PackageVersion)); var target = new ServerPackageStore(fileSystem, repository, logger); // Act target.Remove(PackageId, PackageVersion, enableDelisting: true); // Assert var package = (await target.GetAllAsync(enableDelisting: true, token: Token)).SingleOrDefault(); Assert.NotNull(package); Assert.Equal(PackageId, package.Id); Assert.Equal(PackageVersion, package.Version); Assert.False(package.Listed); var fileInfo = new FileInfo(package.FullPath); Assert.True(fileInfo.Exists); Assert.Equal(FileAttributes.Hidden, fileInfo.Attributes & FileAttributes.Hidden); } }
internal ServerPackageRepository( IFileSystem fileSystem, bool runBackgroundTasks, ExpandedPackageRepository innerRepository, ISettingsProvider settingsProvider = null, Logging.ILogger logger = null) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } if (innerRepository == null) { throw new ArgumentNullException(nameof(innerRepository)); } _fileSystem = fileSystem; _runBackgroundTasks = runBackgroundTasks; _settingsProvider = settingsProvider ?? new DefaultSettingsProvider(); _logger = logger ?? new TraceLogger(); _serverPackageCache = InitializeServerPackageStore(); _serverPackageStore = new ServerPackageStore( _fileSystem, innerRepository, _logger); }
public void FindPackagesById_IgnoresPackagesWithoutHashFiles() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg.sha512"), "345sha"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg"), "content"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.nuspec"), "content"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.nupkg"), "content"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.1.0.0-beta1-402.nupkg"), "nupkg contents"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg.sha512"), "beta1 hash"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg"), "content"); var repository = new ExpandedPackageRepository(fileSystem); // Act var packages = repository.FindPackagesById("Bar").OrderBy(p => p.Identity.Version).ToList(); // Assert Assert.Equal(2, packages.Count); Assert.Equal(SemanticVersion.Parse("1.0.0-beta1"), packages[0].Identity.Version); Assert.Equal(SemanticVersion.Parse("1.0.0-beta1-345"), packages[1].Identity.Version); }
public ServerPackageStore( IFileSystem fileSystem, ExpandedPackageRepository repository, Logging.ILogger logger) { _fileSystem = fileSystem; _repository = repository; _logger = logger; }
public void AddPackage_AddsExpandedPackageToThePackageDirectory() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); var repository = new ExpandedPackageRepository(fileSystem); var package = CreateMyPackage(); // Act var addedPackage = repository.AddPackage(package); AssertMyPackage(fileSystem, package, addedPackage); }
public void AddPackageFromStream_AddsExpandedPackageToThePackageDirectory(bool allowOverwrite) { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); var repository = new ExpandedPackageRepository(fileSystem); var package = CreateMyPackage(); using (var packageStream = File.OpenRead(package.Path)) { // Act var addedPackage = repository.AddPackage(packageStream, allowOverwrite); AssertMyPackage(fileSystem, package, addedPackage); } }
public void AddPackageFromStream_WhenDuplicateAndOverwriteEnabled() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); var repository = new ExpandedPackageRepository(fileSystem); var package = CreateMyPackage(); using (var packageStream = File.OpenRead(package.Path)) { var addedPackage = repository.AddPackage(packageStream, true); AssertMyPackage(fileSystem, package, addedPackage); } using (var packageStream = File.OpenRead(package.Path)) { var addedPackage = repository.AddPackage(packageStream, true); AssertMyPackage(fileSystem, package, addedPackage); } }
public void AddPackageFromStream_WhenDuplicateAndOverwriteDisabled() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); var repository = new ExpandedPackageRepository(fileSystem); var package = CreateMyPackage(); using (var packageStream = File.OpenRead(package.Path)) { var addedPackage = repository.AddPackage(packageStream, false); AssertMyPackage(fileSystem, package, addedPackage); } // add again using (var packageStream = File.OpenRead(package.Path)) { Assert.Throws <PackageDuplicateException>(() => repository.AddPackage(packageStream, false)); } }
public void AddPackage_AddsExpandedPackageToThePackageDirectory() { // Arrange var fileSystem = new MockFileSystem(); var repository = new ExpandedPackageRepository(fileSystem); var package = GetPackage(); // Act repository.AddPackage(package); // Assert var reader = Manifest.ReadFrom(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.nuspec"), validateSchema: true); Assert.Equal("MyPackage", reader.Metadata.Id); Assert.Equal("1.0.0-beta2", reader.Metadata.Version); Assert.True(package.GetStream().ContentEquals(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg"))); Assert.Equal(package.GetHash(new CryptoHashProvider()), fileSystem.ReadAllText(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg.sha512")); }
public void RemovePackage_Succeeds_IfPackageDoesNotExist() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"), "Nuspec contents"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "tools", "net45", "Foo.targets"), "Foo.targets contents"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta4", "Foo.nupkg"), "1.0.0-beta4 Nuspec contents"); var repository = new ExpandedPackageRepository(fileSystem); var package = PackageUtility.CreatePackage("Foo", "1.0.0-beta4"); // Act repository.RemovePackage(package); // Assert Assert.Empty(fileSystem.Deleted); }
public ServerPackageRepository( ExpandedPackageRepository innerRepository, IServerPackageRepositoryConfig serverConfig) { if (innerRepository == null) { throw new ArgumentNullException("innerRepository"); } _config = serverConfig; new DirectoryInfo(serverConfig.RootPath).Create(); _fileSystem = new PhysicalFileSystem(serverConfig.RootPath); _runBackgroundTasks = serverConfig.RunBackgroundTasks; _expandedPackageRepository = innerRepository; _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin"); _logger.InfoFormat("Initialized server package repository at {0}", serverConfig.RootPath); }
public ServerPackageRepository CreateServerPackageRepository( string path, ServerPackageRepositoryConfig config, Action <ExpandedPackageRepository> setupRepository = null) { config.RootPath = path; var expandedPackageRepository = new ExpandedPackageRepository(config); setupRepository?.Invoke(expandedPackageRepository); var serverRepository = new ServerPackageRepository( innerRepository: expandedPackageRepository, serverConfig: config); serverRepository.GetPackages(); // caches the files return(serverRepository); }
public void FindPackageById_IgnoresVersionsWithoutHashFiles() { // Arrange var fileSystem = new PhysicalFileSystem(tmpDir.Path); fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nupkg"), @"Foo.nupkg contents"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>"); var repository = new ExpandedPackageRepository(fileSystem); // Act var package = repository.FindPackage("Foo", NuGetVersion.Parse("1.0.0")); // Assert Assert.Null(package); }
public ServerPackageRepository(string path, IHashProvider hashProvider, Logging.ILogger logger) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } if (hashProvider == null) { throw new ArgumentNullException("hashProvider"); } _fileSystem = new PhysicalFileSystem(path); _runBackgroundTasks = true; _logger = logger ?? new TraceLogger(); _expandedPackageRepository = new ExpandedPackageRepository(_fileSystem, hashProvider); _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin"); _getSetting = GetBooleanAppSetting; }
public async Task Remove_SupportsDisabledUnlisting() { // Arrange using (var directory = new TemporaryDirectory()) { var fileSystem = new PhysicalFileSystem(directory); var repository = new ExpandedPackageRepository(fileSystem); var logger = new Infrastructure.NullLogger(); repository.AddPackage(CreatePackage(PackageId, PackageVersion)); var target = new ServerPackageStore(fileSystem, repository, logger); // Act target.Remove(PackageId, PackageVersion, enableDelisting: false); // Assert Assert.Empty(await target.GetAllAsync(enableDelisting: false, token: Token)); Assert.Empty(repository.GetPackages()); } }
internal ServerPackageRepository(IFileSystem fileSystem, bool runBackgroundTasks, ExpandedPackageRepository innerRepository, Logging.ILogger logger = null, Func<string, bool, bool> getSetting = null) { if (fileSystem == null) { throw new ArgumentNullException("fileSystem"); } if (innerRepository == null) { throw new ArgumentNullException("innerRepository"); } _fileSystem = fileSystem; _runBackgroundTasks = runBackgroundTasks; _expandedPackageRepository = innerRepository; _logger = logger ?? new TraceLogger(); _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin"); _getSetting = getSetting ?? GetBooleanAppSetting; }
public static async Task <ServerPackageRepository> CreateServerPackageRepositoryAsync( string path, Action <ExpandedPackageRepository> setupRepository = null, Func <string, object, object> getSetting = null) { var fileSystem = new PhysicalFileSystem(path); var expandedPackageRepository = new ExpandedPackageRepository(fileSystem); setupRepository?.Invoke(expandedPackageRepository); var serverRepository = new ServerPackageRepository( fileSystem, runBackgroundTasks: false, innerRepository: expandedPackageRepository, logger: new Infrastructure.NullLogger(), settingsProvider: getSetting != null ? new FuncSettingsProvider(getSetting) : null); await serverRepository.GetPackagesAsync(ClientCompatibility.Max, Token); // caches the files return(serverRepository); }
public ServerPackageRepository CreateServerPackageRepository(string path, Action <ExpandedPackageRepository> setupRepository = null, Func <string, bool, bool> getSetting = null) { var fileSystem = new PhysicalFileSystem(path); var expandedPackageRepository = new ExpandedPackageRepository(fileSystem); if (setupRepository != null) { setupRepository(expandedPackageRepository); } var serverRepository = new ServerPackageRepository( fileSystem, runBackgroundTasks: false, innerRepository: expandedPackageRepository, logger: new Logging.NullLogger(), getSetting: getSetting); serverRepository.GetPackages(); // caches the files return(serverRepository); }
public ServerPackageRepository CreateServerPackageRepository(string path, Action<ExpandedPackageRepository> setupRepository = null, Func<string, bool, bool> getSetting = null) { var fileSystem = new PhysicalFileSystem(path); var expandedPackageRepository = new ExpandedPackageRepository(fileSystem); if (setupRepository != null) { setupRepository(expandedPackageRepository); } var serverRepository = new ServerPackageRepository( fileSystem, runBackgroundTasks: false, innerRepository: expandedPackageRepository, logger: new Logging.NullLogger(), getSetting: getSetting); serverRepository.GetPackages(); // caches the files return serverRepository; }
public void RemovePackage_DeletesPackageDirectory_IfItExists() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "Foo.nuspec"), "Nuspec contents"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "Foo.1.0.0-beta2.nupkg.sha512"), "hash contents"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "tools", "net45", "Foo.targets"), "Foo.targets contents"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta4", "Foo.nuspec"), "1.0.0-beta4 Nuspec contents"); var repository = new ExpandedPackageRepository(fileSystem); var package = PackageUtility.CreatePackage("Foo", "1.0-beta2"); // Act repository.RemovePackage(package); // Assert var deletedItems = Assert.Single(fileSystem.Deleted); Assert.Contains(Path.Combine("Foo", "1.0.0-beta2"), deletedItems); Assert.True(fileSystem.FileExists(Path.Combine("Foo", "1.0.0-beta4", "Foo.nuspec"))); }
public async Task Remove_NoOpsWhenPackageDoesNotExist() { // Arrange using (var directory = new TemporaryDirectory()) { var fileSystem = new PhysicalFileSystem(directory); var repository = new ExpandedPackageRepository(fileSystem); var logger = new Infrastructure.NullLogger(); repository.AddPackage(CreatePackage(PackageId, PackageVersion)); var target = new ServerPackageStore(fileSystem, repository, logger); // Act target.Remove("Foo", PackageVersion, enableDelisting: false); // Assert var package = (await target.GetAllAsync(enableDelisting: false, token: Token)).FirstOrDefault(); Assert.NotNull(package); Assert.Equal(PackageId, package.Id); Assert.Equal(PackageVersion, package.Version); Assert.True(package.Listed); } }
public void GetPackages_ReturnsAllPackagesInsideDirectory() { // Arrange var fooPackage = new PackageBuilder { Id = "Foo", Version = NuGetVersion.Parse("1.0.0"), Description = "Some description", }; fooPackage.Authors.Add("test author"); fooPackage.Files.Add( CreateMockedPackageFile(@"lib\net40", "Foo.dll", "lib contents").Object); var barPackage = new PackageBuilder { Id = "Bar", Version = NuGetVersion.Parse("1.0.0-beta1"), Description = "Some description", }; barPackage.Authors.Add("test author"); barPackage.Files.Add( CreateMockedPackageFile("", "README.md", "lib contents").Object); barPackage.Files.Add( CreateMockedPackageFile(@"content", "qwerty.js", "bar contents").Object); barPackage.Files.Add( CreateMockedPackageFile(@"lib\net451", "test.dll", "test-dll").Object); var fileSystem = new PhysicalFileSystem(tmpDir.Path); var fooRoot = Path.Combine(fileSystem.Root, "foo", "1.0.0"); fileSystem.AddFile(Path.Combine(fooRoot, "foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine(fooRoot, "foo.1.0.0.nupkg.sha512"), "Foo-sha"); fileSystem.AddFile(Path.Combine(fooRoot, "foo.1.0.0.nupkg"), GetPackageStream(fooPackage)); var barRoot = Path.Combine(fileSystem.Root, "bar", "1.0.0-beta1"); fileSystem.AddFile(Path.Combine(barRoot, "bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine(barRoot, "bar.1.0.0-beta1.nupkg.sha512"), "bar-sha"); fileSystem.AddFile(Path.Combine(barRoot, "bar.1.0.0-beta1.nupkg"), GetPackageStream(barPackage)); var repository = new ExpandedPackageRepository(fileSystem); // Act var packages = repository.GetPackages().OrderBy(p => p.Identity.Id).ToList(); // Assert Assert.Equal(2, packages.Count); var package = packages[1]; Assert.Equal("foo", package.Identity.Id); Assert.Equal(SemanticVersion.Parse("1.0.0"), package.Identity.Version); using (var reader = package.GetReader()) { Assert.Equal("Foo", reader.GetIdentity().Id); Assert.Equal(package.Identity, reader.GetIdentity()); } }
public void GetPackages_ReturnsAllPackagesInsideDirectory() { // Arrange var fooPackage = new PackageBuilder { Id = "Foo", Version = new SemanticVersion("1.0.0"), Description = "Some description", }; fooPackage.Authors.Add("test author"); fooPackage.Files.Add( PackageUtility.CreateMockedPackageFile(@"lib\net40", "Foo.dll", "lib contents").Object); var barPackage = new PackageBuilder { Id = "Bar", Version = new SemanticVersion("1.0.0-beta1"), Description = "Some description", }; barPackage.Authors.Add("test author"); barPackage.Files.Add( PackageUtility.CreateMockedPackageFile("", "README.md", "lib contents").Object); barPackage.Files.Add( PackageUtility.CreateMockedPackageFile(@"content", "qwerty.js", "bar contents").Object); barPackage.Files.Add( PackageUtility.CreateMockedPackageFile(@"lib\net451", "test.dll", "test-dll").Object); var fileSystem = new MockFileSystem(); var fooRoot = Path.Combine("Foo", "1.0.0"); fileSystem.AddFile(Path.Combine(fooRoot, "Foo.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg.sha512"), "Foo-sha"); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg"), GetPackageStream(fooPackage)); var barRoot = Path.Combine("Bar", "1.0.0-beta1"); fileSystem.AddFile(Path.Combine(barRoot, "Bar.nuspec"), @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512"), "bar-sha"); fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg"), GetPackageStream(barPackage)); var repository = new ExpandedPackageRepository(fileSystem); // Act var packages = repository.GetPackages().ToList(); // Assert Assert.Equal(2, packages.Count); var package = packages[0]; Assert.Equal("Foo", package.Id); Assert.Equal(new SemanticVersion("1.0.0"), package.Version); var packageFile = Assert.Single(package.GetFiles()); Assert.Equal(@"lib\net40\Foo.dll", packageFile.Path); Assert.Equal(".NETFramework,Version=v4.0", packageFile.TargetFramework.FullName); package = packages[1]; Assert.Equal("Bar", package.Id); Assert.Equal(new SemanticVersion("1.0.0-beta1"), package.Version); var files = package.GetFiles().OrderBy(p => p.Path.Length).ToList(); Assert.Equal(3, files.Count); Assert.Equal(@"README.md", files[0].Path); packageFile = files[1]; Assert.Equal(@"content\qwerty.js", packageFile.Path); Assert.Null(packageFile.TargetFramework); packageFile = files[2]; Assert.Equal(@"lib\net451\test.dll", packageFile.Path); Assert.Equal(".NETFramework,Version=v4.5.1", packageFile.TargetFramework.FullName); }