Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        public void IsAssemblyReferenceReturnsTrueForWinMDFileInLib()
        {
            // Arrange
            var file = PathFixUtility.FixPath(@"lib\NuGet.Core.WINMD");

            // Act and Assert
            Assert.True(LocalPackage.IsAssemblyReference(file));
        }
Exemple #4
0
        public void IsAssemblyReferenceReturnsTrueIfFileIsAReferenceItemInLib()
        {
            // Arrange
            var file = PathFixUtility.FixPath(@"lib\NuGet.Core.dll");

            // Act and Assert
            Assert.True(LocalPackage.IsAssemblyReference(file));
        }
Exemple #5
0
        public void IsAssemblyReferenceReturnsFalseIfFileIsAResourceAssembly()
        {
            // Arrange
            var file = PathFixUtility.FixPath(@"lib\NuGet.resources.dll");

            // Act and Assert
            Assert.False(LocalPackage.IsAssemblyReference(file));
        }
Exemple #6
0
        public void IsAssemblyReferenceReturnsFalseIfFileExtensionIsNotAReferenceItem()
        {
            // Arrange
            var file = PathFixUtility.FixPath(@"lib\foo.txt");

            // Act and Assert
            Assert.False(LocalPackage.IsAssemblyReference(file));
        }
Exemple #7
0
        public void IsAssemblyReferenceReturnsFalseIfFileDoesNotStartWithLib()
        {
            // Arrange
            var file = PathFixUtility.FixPath(@"content\foo.dll");

            // Act and Assert
            Assert.False(LocalPackage.IsAssemblyReference(file));
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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());
        }
Exemple #14
0
        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")));
        }
Exemple #15
0
        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]);
        }
Exemple #17
0
        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"))));
        }
Exemple #18
0
        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")));
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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);
        }