public void FindPackageMatchesExactVersionIfSideBySideIsEnabled() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(PathFixUtility.FixPath(@"A.1.1\A.1.1.nupkg")); var repository = new LocalPackageRepository(new DefaultPackagePathResolver(fileSystem, useSideBySidePaths: true), fileSystem, enableCaching: false); var searchedPaths = new List <string>(); Func <string, IPackage> openPackage = p => { searchedPaths.Add(p); return(PackageUtility.CreatePackage("A", "1.1")); }; // Act and Assert IPackage result = repository.FindPackage(openPackage, "A", new SemanticVersion("1.0")); Assert.Null(result); Assert.False(searchedPaths.Any()); result = repository.FindPackage(openPackage, "A", new SemanticVersion("0.8")); Assert.Null(result); Assert.False(searchedPaths.Any()); result = repository.FindPackage(openPackage, "A", new SemanticVersion("1.1")); Assert.Equal(PathFixUtility.FixPath(@"A.1.1\A.1.1.nupkg"), searchedPaths.Single()); Assert.Equal("A", result.Id); Assert.Equal(new SemanticVersion("1.1"), result.Version); }
public void FindPackagesByIdIgnoresPartialIdMatches() { // Arramge var fileSystem = new MockFileSystem(); fileSystem.AddFile(PathFixUtility.FixPath(@"Foo.1.0\Foo.1.0.nupkg")); fileSystem.AddFile(PathFixUtility.FixPath(@"Foo.2.0.0\Foo.2.0.0.nupkg")); fileSystem.AddFile(PathFixUtility.FixPath(@"Foo.Baz.2.0.0\Foo.Baz.2.0.0.nupkg")); var foo_10 = PackageUtility.CreatePackage("Foo", "1.0"); var foo_20 = PackageUtility.CreatePackage("Foo", "2.0.0"); var fooBaz_20 = PackageUtility.CreatePackage("Foo.Baz", "2.0.0"); var package_dictionary = new Dictionary <string, IPackage>() { { PathFixUtility.FixPath(@"Foo.1.0\Foo.1.0.nupkg"), foo_10 }, { PathFixUtility.FixPath(@"Foo.2.0.0\Foo.2.0.0.nupkg"), foo_20 }, { PathFixUtility.FixPath(@"Foo.Baz.2.0.0\Foo.Baz.2.0.0.nupkg"), fooBaz_20 } }; var localPackageRepository = new MockLocalRepository(fileSystem, path => { IPackage retval; package_dictionary.TryGetValue(path, out retval); return(retval); }); // Act var packages = localPackageRepository.FindPackagesById("Foo").ToList(); // Assert Assert.Equal(new[] { foo_10, foo_20 }, packages); }
public void IsAssemblyReferenceReturnsTrueForWinMDFileInLib() { // Arrange var file = PathFixUtility.FixPath(@"lib\NuGet.Core.WINMD"); // Act and Assert Assert.True(LocalPackage.IsAssemblyReference(file)); }
public void IsAssemblyReferenceReturnsTrueIfFileIsAReferenceItemInLib() { // Arrange var file = PathFixUtility.FixPath(@"lib\NuGet.Core.dll"); // Act and Assert Assert.True(LocalPackage.IsAssemblyReference(file)); }
public void IsAssemblyReferenceReturnsFalseIfFileIsAResourceAssembly() { // Arrange var file = PathFixUtility.FixPath(@"lib\NuGet.resources.dll"); // Act and Assert Assert.False(LocalPackage.IsAssemblyReference(file)); }
public void IsAssemblyReferenceReturnsFalseIfFileExtensionIsNotAReferenceItem() { // Arrange var file = PathFixUtility.FixPath(@"lib\foo.txt"); // Act and Assert Assert.False(LocalPackage.IsAssemblyReference(file)); }
public void IsAssemblyReferenceReturnsFalseIfFileDoesNotStartWithLib() { // Arrange var file = PathFixUtility.FixPath(@"content\foo.dll"); // Act and Assert Assert.False(LocalPackage.IsAssemblyReference(file)); }
public void MachineCacheUsesEnvironmentSpecifiedLocationIfProvided() { // Arrange var expectedPath = PathFixUtility.FixPath(@"c:\temp\some\directory"); // Act var cachePath = MachineCache.GetCachePath(_ => PathFixUtility.FixPath(@"c:\temp\some\directory"), _ => { throw new Exception("This shouldn't be called."); }); // Assert Assert.Equal(expectedPath, cachePath); }
public void MachineCacheDoesntUseEnvironmentSpecifiedLocationIfNotProvided() { // Arrange string appDataPath = PathFixUtility.FixPath(@"x:\user\the-dude\the-dude's-stash"); string expectedPath = PathFixUtility.FixPath(@"x:\user\the-dude\the-dude's-stash\NuGet\Cache"); // Act var cachePath = MachineCache.GetCachePath(_ => "", _ => appDataPath); // Assert Assert.Equal(expectedPath, cachePath); }
public void MachineCacheUsesGetFolderPathIfProvided() { // Arrange var expectedPath = PathFixUtility.FixPath(@"d:\root\NuGet\Cache"); // Act var cachePath = MachineCache.GetCachePath( env => env == "LocalAppData" ? @"c:\temp\some\directory" : null, _ => @"d:\root\"); // Assert Assert.Equal(expectedPath, cachePath); }
public void MachineCacheUsesLocalAppEnvironmentIfGetFolderPathReturnsEmpty() { // Arrange var expectedPath = PathFixUtility.FixPath(@"c:\temp\some\directory\NuGet\Cache"); // Act var cachePath = MachineCache.GetCachePath( env => env == "LocalAppData" ? @"c:\temp\some\directory" : null, _ => String.Empty); // Assert Assert.Equal(expectedPath, cachePath); }
public void GetSupportedFrameworkUsesFilesAndFrameworkAssembliesToDetermineTargetFramework() { // Arrange var files = new[] { PathFixUtility.FixPath(@"content\Foo.txt"), PathFixUtility.FixPath(@"lib\net40-full\Bar.dll"), PathFixUtility.FixPath(@"lib\net20\Qux.dll") }; var assemblyReferences = new[] { new FrameworkAssemblyReference("System.Data.Client", new[] { new FrameworkName(".NETFramework,Version=2.0") }) }; var zipPackage = CreatePackage(files: files, assemblyReferences: assemblyReferences); // Act var targetFramework = zipPackage.GetSupportedFrameworks(); // Assert Assert.Equal(new[] { new FrameworkName(".NETFramework,Version=2.0"), new FrameworkName(".NETFramework,Version=4.0") }, targetFramework); }
public void ManifestFileReturnsNoValidationResultsIfSourceAndTargetPathAreValid() { // Arrange var manifestFile = new ManifestFile { Source = PathFixUtility.FixPath(@"bin\release\MyLib.dll"), Target = @"lib" }; var validationContext = new ValidationContext(new object(), null, null); // Act var result = manifestFile.Validate(validationContext); // Assert Assert.False(result.Any()); }
public void AddPackageAddsFileToFileSystem() { // Arrange var mockFileSystem = new MockProjectSystem(); var repository = new LocalPackageRepository(new DefaultPackagePathResolver(mockFileSystem), mockFileSystem); IPackage package = PackageUtility.CreatePackage("A", "1.0"); // Act repository.AddPackage(package); // Assert Assert.True(mockFileSystem.FileExists(PathFixUtility.FixPath(@"A.1.0\A.1.0.nupkg"))); }
public void GetSupportedFrameworkUsesCachedFileValues() { // This test is to ensure our alternate code path that uses cached file names has some coverage. // Arrange var files = new[] { PathFixUtility.FixPath(@"content\Foo.txt"), PathFixUtility.FixPath(@"lib\net40-full\Bar.dll"), PathFixUtility.FixPath(@"lib\net20\Qux.dll") }; var assemblyReferences = new[] { new FrameworkAssemblyReference("System.Data.Client", new[] { new FrameworkName(".NETFramework,Version=2.0") }) }; var zipPackage = CreatePackage(files: files, assemblyReferences: assemblyReferences, enableCaching: true); // Act var zipFiles = zipPackage.GetFiles(); var targetFramework = zipPackage.GetSupportedFrameworks(); // Assert Assert.NotNull(zipFiles); Assert.Equal(new[] { new FrameworkName(".NETFramework,Version=2.0"), new FrameworkName(".NETFramework,Version=4.0") }, targetFramework); }
public void TestingCtorWithFileSystemAndPackagePath() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); // Act var ozp = new OptimizedZipPackage(fileSystem, "pam.nupkg", new MockFileSystem("y:\\")); // Assert Assert.Equal("Package", ozp.Id); Assert.Equal(new SemanticVersion("1.0"), ozp.Version); Assert.Equal("This is a test package", ozp.Description); Assert.Equal("This is a release note.", ozp.ReleaseNotes); Assert.Equal("Copyright", ozp.Copyright); Assert.Equal("dotnetjunky", ozp.Authors.First()); // Order is not gauranteed (or required) from GetFiles(), // but we rely on the order for a few of the asserts, // and it appears to not behave the same way on Mono, // so we call "order by" here to force a specific order. var files = ozp.GetFiles().OrderBy(k => k.Path).ToList(); Assert.Equal(2, files.Count); Assert.Equal(PathFixUtility.FixPath(@"content\foo"), files[0].Path); Assert.Equal(PathFixUtility.FixPath(@"lib\40\A.dll"), files[1].Path); var assemblyReferences = ozp.AssemblyReferences.ToList(); Assert.Equal(1, assemblyReferences.Count); Assert.Equal("A.dll", assemblyReferences[0].Name); Assert.Equal(new FrameworkName(".NETFramework", new Version("4.0")), assemblyReferences[0].TargetFramework); var supportedReferences = ozp.GetSupportedFrameworks().OrderBy(p => p.FullName).ToList(); Assert.Equal(3, supportedReferences.Count); Assert.Equal(new FrameworkName(".NETFramework", new Version("4.0")), supportedReferences[0]); Assert.Equal(new FrameworkName("Silverlight", new Version("5.0")), supportedReferences[1]); Assert.Equal(new FrameworkName("Windows", new Version("8.0")), supportedReferences[2]); }
public void RemovePackageRemovesPackageFileAndDirectoryAndRoot() { // Arrange var mockFileSystem = new MockProjectSystem(); mockFileSystem.AddFile(PathFixUtility.FixPath(@"A.1.0\A.1.0.nupkg")); var repository = new LocalPackageRepository(new DefaultPackagePathResolver(mockFileSystem), mockFileSystem); IPackage package = PackageUtility.CreatePackage("A", "1.0"); // Act repository.RemovePackage(package); // Assert Assert.Equal(3, mockFileSystem.Deleted.Count); Assert.True(mockFileSystem.Deleted.Contains(mockFileSystem.Root)); Assert.True(mockFileSystem.Deleted.Contains(Path.Combine(mockFileSystem.Root, "A.1.0"))); Assert.True(mockFileSystem.Deleted.Contains(Path.Combine(mockFileSystem.Root, PathFixUtility.FixPath(@"A.1.0\A.1.0.nupkg")))); }
public void RemovePackageDoesNotRemovesRootIfNotEmpty() { // Arrange var mockFileSystem = new MockProjectSystem(); mockFileSystem.AddFile(PathFixUtility.FixPath(@"A.1.0\A.1.0.nupkg")); mockFileSystem.AddFile(PathFixUtility.FixPath(@"B.1.0\B.1.0.nupkg")); var repository = new LocalPackageRepository(new DefaultPackagePathResolver(mockFileSystem), mockFileSystem); IPackage package = PackageUtility.CreatePackage("A", "1.0"); // Act repository.RemovePackage(package); // Assert Assert.Equal(2, mockFileSystem.Deleted.Count); Assert.True(mockFileSystem.Deleted.Contains("A.1.0")); Assert.True(mockFileSystem.Deleted.Contains(PathFixUtility.FixPath(@"A.1.0\A.1.0.nupkg"))); }
public void CtorWithStream() { // Arrange var builder = new PackageBuilder(); builder.Id = "Package"; builder.Version = new SemanticVersion("1.0"); builder.Authors.Add("David"); builder.Description = "This is a test package"; builder.ReleaseNotes = "This is a release note."; builder.Copyright = "Copyright"; builder.Files.AddRange(PackageUtility.CreateFiles(new[] { PathFixUtility.FixPath(@"lib\40\A.dll"), PathFixUtility.FixPath(@"content\foo") })); var ms = new MemoryStream(); builder.Save(ms); ms.Seek(0, SeekOrigin.Begin); // Act var package = new ZipPackage(ms); // Assert Assert.Equal("Package", package.Id); Assert.Equal(new SemanticVersion("1.0"), package.Version); Assert.Equal("David", package.Authors.First()); Assert.Equal("Copyright", package.Copyright); //Order is not gauranteed (or required) from GetFiles(), //but we rely on the order for a few of the asserts, //and it appears to not behave the same way on Mono, //so we call "order by" here to force a specific order. var files = package.GetFiles().OrderBy(k => k.Path).ToList(); Assert.Equal(2, files.Count); Assert.Equal(PathFixUtility.FixPath(@"content\foo"), files[0].Path); Assert.Equal(PathFixUtility.FixPath(@"lib\40\A.dll"), files[1].Path); var assemblyReferences = package.AssemblyReferences.ToList(); Assert.Equal(1, assemblyReferences.Count); Assert.Equal("A.dll", assemblyReferences[0].Name); Assert.Equal(new FrameworkName(".NETFramework", new Version("4.0")), assemblyReferences[0].TargetFramework); Assert.Equal("This is a release note.", package.ReleaseNotes); }
public static Mock <IPackageFile> CreateMockedPackageFile(string directory, string fileName, string content = null) { string path = PathFixUtility.FixPath(Path.Combine(directory, fileName)); content = content ?? path; var mockFile = new Mock <IPackageFile>(); mockFile.Setup(m => m.Path).Returns(path); mockFile.Setup(m => m.GetStream()).Returns(() => new MemoryStream(Encoding.Default.GetBytes(content))); string effectivePath; FrameworkName fn = VersionUtility.ParseFrameworkNameFromFilePath(path, out effectivePath); mockFile.Setup(m => m.TargetFramework).Returns(fn); mockFile.Setup(m => m.EffectivePath).Returns(effectivePath); mockFile.Setup(m => m.SupportedFrameworks).Returns( fn == null ? new FrameworkName[0] : new FrameworkName[] { fn }); return(mockFile); }
public void GetPackageFilesDetectsFilesInRootOrFirstLevelOfFolders() { // Arrange var mockFileSystem = new MockProjectSystem(); mockFileSystem.AddFile("P1.nupkg"); mockFileSystem.AddFile("bar.zip"); mockFileSystem.AddFile(PathFixUtility.FixPath(@"baz\P2.nupkg")); mockFileSystem.AddFile(PathFixUtility.FixPath(@"A\B\P3.nupkg")); mockFileSystem.AddFile(PathFixUtility.FixPath(@"A\P4.nupkg")); var repository = new LocalPackageRepository(new DefaultPackagePathResolver(mockFileSystem), mockFileSystem); // Act var files = repository.GetPackageFiles().ToList(); // Assert Assert.Equal(3, files.Count); Assert.Equal(PathFixUtility.FixPath(@"baz\P2.nupkg"), files[0]); Assert.Equal(PathFixUtility.FixPath(@"A\P4.nupkg"), files[1]); Assert.Equal("P1.nupkg", files[2]); }
public static List <IPackageFile> CreateFiles(IEnumerable <string> fileNames, string directory = "") { var files = new List <IPackageFile>(); foreach (var fileName in fileNames) { string path = PathFixUtility.FixPath(Path.Combine(directory, fileName)); var mockFile = new Mock <IPackageFile>(); mockFile.Setup(m => m.Path).Returns(path); mockFile.Setup(m => m.GetStream()).Returns(() => new MemoryStream(Encoding.Default.GetBytes(path))); string effectivePath; FrameworkName fn = VersionUtility.ParseFrameworkNameFromFilePath(path, out effectivePath); mockFile.Setup(m => m.TargetFramework).Returns(fn); mockFile.Setup(m => m.EffectivePath).Returns(effectivePath); mockFile.Setup(m => m.SupportedFrameworks).Returns( fn == null ? new FrameworkName[0] : new FrameworkName[] { fn }); files.Add(mockFile.Object); } return(files); }
private static MemoryStream GetPackageStream( IEnumerable <IPackageFile> files = null, IEnumerable <PackageReferenceSet> references = null) { var builder = new PackageBuilder(); builder.Id = "Package"; builder.Version = new SemanticVersion("1.0"); builder.Authors.Add("dotnetjunky"); builder.Description = "This is a test package"; builder.ReleaseNotes = "This is a release note."; builder.Copyright = "Copyright"; if (files != null) { builder.Files.AddRange(files); } else { builder.Files.AddRange( PackageUtility.CreateFiles( new[] { PathFixUtility.FixPath(@"lib\40\A.dll"), PathFixUtility.FixPath(@"content\foo") } )); } builder.FrameworkReferences.AddRange( new[] { new FrameworkAssemblyReference("A", new[] { VersionUtility.ParseFrameworkName("sl50") }), new FrameworkAssemblyReference("B", new[] { VersionUtility.ParseFrameworkName("windows8") }) }); if (references != null) { builder.PackageAssemblyReferences.AddRange(references); } var ms = new MemoryStream(); builder.Save(ms); ms.Seek(0, SeekOrigin.Begin); return(ms); }