public void PiecesWithTrailingSlashesAreIgnored()
            {
                bool interleaved;
                bool ignored = !Nupkg.IsValidPartName(Nupkg.GetLogicalPartName("foo.txt/[13].piece/", out interleaved).ToString());

                Assert.True(ignored);
            }
            public void PrependsSlash()
            {
                bool   interleaved;
                string name = Nupkg.GetLogicalPartName("file1.xml", out interleaved).ToString();

                Assert.False(interleaved);
                Assert.True(name.StartsWith("/", StringComparison.Ordinal));
            }
            public void UnderstandsNonInterleavedItems()
            {
                bool   interleaved;
                string name = Nupkg.GetLogicalPartName("folder1/file1.xml", out interleaved).ToString();

                Assert.False(interleaved);
                Assert.True(name.IndexOf("folder1/file1.xml", StringComparison.Ordinal) > 0);
                Assert.False(name.EndsWith("/", StringComparison.Ordinal));
            }
            public void ReturnsNothingForNoFilesAndNoFrameworkReferences()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream();
                var fakeNupkg  = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Empty(fx);
            }
Esempio n. 5
0
            public void ExtractTheManifest()
            {
                var packageStream = CreateTestPackageStream();
                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    Assert.Equal("TestPackage", nupkg.Metadata.Id);
                    Assert.Equal(SemanticVersion.Parse("0.0.0.1"), nupkg.Metadata.Version);
                    Assert.Equal("Trivial Description", nupkg.Metadata.Description);
                }
            }
            public void ExtractTheManifest()
            {
                var packageStream = CreateTestPackageStream();

                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    Assert.Equal("TestPackage", nupkg.Metadata.Id);
                    Assert.Equal(SemanticVersion.Parse("0.0.0.1"), nupkg.Metadata.Version);
                    Assert.Equal("Trivial Description", nupkg.Metadata.Description);
                }
            }
Esempio n. 7
0
            public void ExtractThePartsList()
            {
                var packageStream = CreateTestPackageStream();
                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    var parts = nupkg.Parts;
                    Assert.Contains("/[Content_Types].xml", parts);
                    Assert.Contains("/_rels/.rels", parts);
                    Assert.Contains("/TestPackage.nuspec", parts);
                    Assert.Contains("/content/HelloWorld.cs", parts);
                }
            }
            public void ExtractThePartsList()
            {
                var packageStream = CreateTestPackageStream();

                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    var parts = nupkg.Parts;
                    Assert.Contains("/[Content_Types].xml", parts);
                    Assert.Contains("/_rels/.rels", parts);
                    Assert.Contains("/TestPackage.nuspec", parts);
                    Assert.Contains("/content/HelloWorld.cs", parts);
                }
            }
            public void ReturnsFilePathFrameworksIfPresent(string directoryName, FrameworkName fxName)
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.Files.Add(CreateMockPackageFile(@"lib\" + directoryName + @"\file.dll"));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    fxName,
                }, fx.ToArray());
            }
Esempio n. 10
0
        /// <summary>
        /// Given the nupkg file as a read-write stream with random access (e.g. MemoryStream),
        /// This will replace the .nuspec file with a new .nuspec generated from
        /// a) the old .nuspec file
        /// b) supplied edits
        ///
        /// This function leaves readWriteStream open.
        /// </summary>
        public static void RewriteNupkgManifest(Stream readWriteStream, IEnumerable <Action <ManifestMetadata> > edits)
        {
            if (!readWriteStream.CanRead)
            {
                throw new ArgumentException("Must be a readable stream", "readWriteStream");
            }

            if (!readWriteStream.CanWrite)
            {
                throw new ArgumentException("Must be a writeable stream", "readWriteStream");
            }

            if (!readWriteStream.CanSeek)
            {
                throw new ArgumentException("Must be a seekable stream", "readWriteStream");
            }

            Manifest manifest = Nupkg.SafelyLoadManifest(readWriteStream, leaveOpen: true);

            foreach (var edit in edits)
            {
                edit.Invoke(manifest.Metadata);
            }

            using (var newManifestStream = new MemoryStream())
            {
                manifest.Save(newManifestStream);
                using (var archive = new ZipArchive(readWriteStream, ZipArchiveMode.Update, leaveOpen: true))
                {
                    var manifestEntry = archive.Entries.SingleOrDefault(entry =>
                                                                        entry.FullName.IndexOf("/", StringComparison.OrdinalIgnoreCase) == -1 &&
                                                                        entry.Name.EndsWith(".nuspec", StringComparison.OrdinalIgnoreCase)
                                                                        );

                    using (var manifestOutputStream = manifestEntry.Open())
                    {
                        manifestOutputStream.SetLength(0);
                        newManifestStream.Position = 0;
                        newManifestStream.CopyTo(manifestOutputStream);
                    }
                }
            }
        }
Esempio n. 11
0
            public void ExtractTheFilesList()
            {
                var packageStream = CreateTestPackageStream();
                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    var files = nupkg.GetFiles();
                    Assert.DoesNotContain("/_rels/.rels", files);
                    Assert.DoesNotContain("\\_rels\\.rels", files);
                    Assert.DoesNotContain("/[Content_Types].xml", files);
                    Assert.DoesNotContain("\\[Content_Types].xml", files);
                    Assert.DoesNotContain("_rels/.rels", files);
                    Assert.DoesNotContain("_rels\\.rels", files);
                    Assert.DoesNotContain("[Content_Types].xml", files);
                    Assert.Contains("TestPackage.nuspec", files);
                    Assert.Contains("content\\HelloWorld.cs", files);
                }
            }
        public static void CanRewriteTheNuspecInANupkg()
        {
            var packageStream = CreateTestPackageStream();

            // Act
            NupkgRewriter.RewriteNupkgManifest(packageStream,
                                               new List <Action <ManifestMetadata> >
            {
                (metadata) => { metadata.Authors = "Me and You"; },
                (metadata) => { metadata.Tags = "Peas In A Pod"; },
            });

            // Assert
            using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
            {
                Assert.Equal("TestPackage", nupkg.Metadata.Id);
                Assert.Equal(SemanticVersion.Parse("0.0.0.1"), nupkg.Metadata.Version);
                Assert.Equal("Me and You", string.Join(" ", nupkg.Metadata.Authors));
                Assert.Equal("Peas In A Pod", nupkg.Metadata.Tags);
            }
        }
            public void ExtractTheFilesList()
            {
                var packageStream = CreateTestPackageStream();

                packageStream.Position = 0;

                // Act
                using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
                {
                    var files = nupkg.GetFiles();
                    Assert.DoesNotContain("/_rels/.rels", files);
                    Assert.DoesNotContain("\\_rels\\.rels", files);
                    Assert.DoesNotContain("/[Content_Types].xml", files);
                    Assert.DoesNotContain("\\[Content_Types].xml", files);
                    Assert.DoesNotContain("_rels/.rels", files);
                    Assert.DoesNotContain("_rels\\.rels", files);
                    Assert.DoesNotContain("[Content_Types].xml", files);
                    Assert.Contains("TestPackage.nuspec", files);
                    Assert.Contains("content\\HelloWorld.cs", files);
                }
            }
Esempio n. 14
0
        public static void CanRewriteTheNuspecInANupkg()
        {
            var packageStream = CreateTestPackageStream();

            // Act
            NupkgRewriter.RewriteNupkgManifest(packageStream,
                    new List<Action<ManifestMetadata>>
                    {
                        (metadata) => { metadata.Authors = "Me and You"; },
                        (metadata) => { metadata.Tags = "Peas In A Pod"; },
                    });

            // Assert
            using (var nupkg = new Nupkg(packageStream, leaveOpen: false))
            {
                Assert.Equal("TestPackage", nupkg.Metadata.Id);
                Assert.Equal(SemanticVersion.Parse("0.0.0.1"), nupkg.Metadata.Version);
                Assert.Equal("Me and You", string.Join(" ", nupkg.Metadata.Authors));
                Assert.Equal("Peas In A Pod", nupkg.Metadata.Tags);
            }
        }
            public void ReturnsFrameworkAssemblyReferenceFrameworksIfNoFileFrameworks()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("foo", new[] {
                        VersionUtility.ParseFrameworkName("net45"),
                        VersionUtility.ParseFrameworkName("sl-wp70")
                    }));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    new FrameworkName(".NETFramework, Version=4.5"),
                    new FrameworkName("Silverlight, Version=v0.0, Profile=wp70")
                }, fx.ToArray());
            }
            public void ReturnsUnionOfFrameworkReferenceAndFileFrameworks()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.Files.Add(CreateMockPackageFile(@"lib\net40\file.dll"));
                    b.Files.Add(CreateMockPackageFile(@"lib\win\file.dll"));
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("Windows", new[] { new FrameworkName("Windows, Version=0.0") }));
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("System.Net.Http", new[] { new FrameworkName(".NETFramework, Version=2.0") }));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    new FrameworkName("Windows, Version=0.0"),
                    new FrameworkName(".NETFramework, Version=2.0"),
                    new FrameworkName(".NETFramework, Version=4.0"),
                }, fx.ToArray());
            }
            public void PartsWithTrailingSlashesAreIgnored()
            {
                bool valid = Nupkg.IsValidPartName("/content/");

                Assert.False(valid);
            }
Esempio n. 18
0
            public void ReturnsNothingForNoFilesAndNoFrameworkReferences()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream();
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Empty(fx);
            }
Esempio n. 19
0
            public void ReturnsFrameworkAssemblyReferenceFrameworksIfNoFileFrameworks()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("foo", new[] { 
                        VersionUtility.ParseFrameworkName("net45"),
                        VersionUtility.ParseFrameworkName("sl-wp70")
                    }));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    new FrameworkName(".NETFramework, Version=4.5"),
                    new FrameworkName("Silverlight, Version=v0.0, Profile=wp70")
                }, fx.ToArray());
            }
            public void ConvertsBackSlashesToSlashes()
            {
                var canon = Nupkg.CanonicalName(@"Dir1\Dir2\foo.txt");

                Assert.Equal("Dir1/Dir2/foo.txt", canon);
            }
Esempio n. 21
0
            public void ReturnsFilePathFrameworksIfPresent(string directoryName, FrameworkName fxName)
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.Files.Add(CreateMockPackageFile(@"lib\" + directoryName + @"\file.dll"));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    fxName,
                }, fx.ToArray());
            }
            public void RemovesLeadingBackSlashes()
            {
                var canon = Nupkg.CanonicalName(@"\foo.txt");

                Assert.Equal("foo.txt", canon);
            }
            public void PartsWithDotOnlyISegmentsAreIgnored(string logicalPartName)
            {
                bool valid = Nupkg.IsValidPartName(logicalPartName);

                Assert.False(valid);
            }
Esempio n. 24
0
            public void ReturnsUnionOfFrameworkReferenceAndFileFrameworks()
            {
                // Arrange
                var fakeStream = CreateTestPackageStream(b =>
                {
                    b.Files.Add(CreateMockPackageFile(@"lib\net40\file.dll"));
                    b.Files.Add(CreateMockPackageFile(@"lib\win\file.dll"));
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("Windows", new[] { new FrameworkName("Windows, Version=0.0") }));
                    b.FrameworkReferences.Add(new FrameworkAssemblyReference("System.Net.Http", new[] { new FrameworkName(".NETFramework, Version=2.0") }));
                });
                var fakeNupkg = new Nupkg(fakeStream, leaveOpen: false);

                // Act
                var fx = fakeNupkg.GetSupportedFrameworks();

                // Assert
                Assert.Equal(new[] {
                    new FrameworkName("Windows, Version=0.0"),
                    new FrameworkName(".NETFramework, Version=2.0"),
                    new FrameworkName(".NETFramework, Version=4.0"),
                }, fx.ToArray());
            }
            public void LegitPartNamesAreAccepted(string logicalPartName)
            {
                bool valid = Nupkg.IsValidPartName(logicalPartName);

                Assert.True(valid);
            }
            public void EmptyPartNamesAreIgnored()
            {
                bool valid = Nupkg.IsValidPartName("/");

                Assert.False(valid);
            }