diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs index d09c4999e4e..e292dbe70d9 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs @@ -1088,8 +1088,6 @@ internal IEnumerable GetAllFiles() // union with additional files files = files.Union(AdditionalFiles); - // union with optional markdown files from directory - files = files.Union(MarkdownFiles); files = files.Union(Assemblies.Select(x => x.Assembly.Location)); return files; @@ -1332,12 +1330,12 @@ private void SelectMarkdownDirectory() } MarkdownFilesDirectory = directoryPath; - // Append all md files from the directory to files list without affect the package content UI + // Store all files paths from the markdown directory to list without affecting the package content UI MarkdownFiles = Directory .GetFiles ( directoryPath, - "*.md", + "*", SearchOption.AllDirectories ).ToList(); } @@ -1502,18 +1500,18 @@ private void Submit() { return; } - var files = BuildPackage(); + var contentFiles = BuildPackage(); try { //if buildPackage() returns no files then the package //is empty so we should return - if (files == null || files.Count() < 1) + if (contentFiles == null || contentFiles.Count() < 1) { return; } // begin submission var pmExtension = dynamoViewModel.Model.GetPackageManagerExtension(); - var handle = pmExtension.PackageManagerClient.PublishAsync(Package, files, IsNewVersion); + var handle = pmExtension.PackageManagerClient.PublishAsync(Package, contentFiles, MarkdownFiles, IsNewVersion); // start upload Uploading = true; @@ -1600,7 +1598,7 @@ private void PublishLocally() var remapper = new CustomNodePathRemapper(DynamoViewModel.Model.CustomNodeManager, DynamoModel.IsTestMode); var builder = new PackageDirectoryBuilder(new MutatingFileSystem(), remapper); - builder.BuildDirectory(Package, publishPath, files); + builder.BuildDirectory(Package, publishPath, files, MarkdownFiles); UploadState = PackageUploadHandle.State.Uploaded; // Once upload is successful, a display message will appear to ask diff --git a/src/DynamoPackages/PackageDirectoryBuilder.cs b/src/DynamoPackages/PackageDirectoryBuilder.cs index 07d0f4e395d..391cf5ba160 100644 --- a/src/DynamoPackages/PackageDirectoryBuilder.cs +++ b/src/DynamoPackages/PackageDirectoryBuilder.cs @@ -10,7 +10,7 @@ namespace Dynamo.PackageManager { public interface IPackageDirectoryBuilder { - IDirectoryInfo BuildDirectory(Package packages, string packagesDirectory, IEnumerable files); + IDirectoryInfo BuildDirectory(Package packages, string packagesDirectory, IEnumerable files, IEnumerable markdownfiles); } /// @@ -34,11 +34,8 @@ internal class PackageDirectoryBuilder : IPackageDirectoryBuilder /// For modifying custom node paths internal PackageDirectoryBuilder(IFileSystem fileSystem, IPathRemapper pathRemapper) { - if (fileSystem == null) throw new ArgumentNullException("fileSystem"); - if (pathRemapper == null) throw new ArgumentNullException("pathRemapper"); - - this.fileSystem = fileSystem; - this.pathRemapper = pathRemapper; + this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); + this.pathRemapper = pathRemapper ?? throw new ArgumentNullException(nameof(pathRemapper)); } #region Public Class Operational Methods @@ -50,18 +47,16 @@ internal PackageDirectoryBuilder(IFileSystem fileSystem, IPathRemapper pathRemap /// The parent directory for the parent directory /// The collection of files to be moved /// - public IDirectoryInfo BuildDirectory(Package package, string packagesDirectory, IEnumerable files) + public IDirectoryInfo BuildDirectory(Package package, string packagesDirectory, IEnumerable contentFiles, IEnumerable markdownFiles) { - IDirectoryInfo rootDir, dyfDir, binDir, extraDir, docDir; - - FormPackageDirectory(packagesDirectory, package.Name, out rootDir, out dyfDir, out binDir, out extraDir, out docDir); // shouldn't do anything for pkg versions + FormPackageDirectory(packagesDirectory, package.Name, out IDirectoryInfo rootDir, out IDirectoryInfo dyfDir, out IDirectoryInfo binDir, out IDirectoryInfo extraDir, out IDirectoryInfo docDir); // shouldn't do anything for pkg versions package.RootDirectory = rootDir.FullName; WritePackageHeader(package, rootDir); - RemoveUnselectedFiles(files, rootDir); - CopyFilesIntoPackageDirectory(files, dyfDir, binDir, extraDir, docDir); - RemoveDyfFiles(files, dyfDir); - RemapCustomNodeFilePaths(files, dyfDir.FullName); + RemoveUnselectedFiles(contentFiles, rootDir); + CopyFilesIntoPackageDirectory(contentFiles, markdownFiles, dyfDir, binDir, extraDir, docDir); + RemoveDyfFiles(contentFiles, dyfDir); + RemapCustomNodeFilePaths(contentFiles, dyfDir.FullName); return rootDir; } @@ -145,9 +140,9 @@ private void WritePackageHeader(Package package, IDirectoryInfo rootDir) } - internal void CopyFilesIntoPackageDirectory(IEnumerable files, IDirectoryInfo dyfDir, - IDirectoryInfo binDir, IDirectoryInfo extraDir, - IDirectoryInfo docDir) + internal void CopyFilesIntoPackageDirectory(IEnumerable files, IEnumerable markdownFiles, + IDirectoryInfo dyfDir, IDirectoryInfo binDir, + IDirectoryInfo extraDir, IDirectoryInfo docDir) { // normalize the paths to ensure correct comparison var dyfDirPath = NormalizePath(dyfDir.FullName); @@ -166,7 +161,7 @@ internal void CopyFilesIntoPackageDirectory(IEnumerable files, IDirector // determine which folder to put the file in string targetFolder = extraDirPath; - if (Path.GetDirectoryName(file).EndsWith(DocumentationDirectoryName) || file.EndsWith(".md")) + if (Path.GetDirectoryName(file).EndsWith(DocumentationDirectoryName)) { targetFolder = docDirPath; } @@ -192,6 +187,20 @@ internal void CopyFilesIntoPackageDirectory(IEnumerable files, IDirector fileSystem.DeleteFile(destPath); } + fileSystem.CopyFile(file, destPath); + } + // All files under Markdown directory do not apply to the rule above, + // because they may fall into extra folder instead of docs folder, + // currently there is on obvious way to filter them properly only based on path string. + foreach (var file in markdownFiles.Where(x => x != null)) + { + var destPath = Path.Combine(docDirPath, Path.GetFileName(file)); + + if (fileSystem.FileExists(destPath)) + { + fileSystem.DeleteFile(destPath); + } + fileSystem.CopyFile(file, destPath); } } diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs index 01861fd5911..e2b156e118a 100644 --- a/src/DynamoPackages/PackageManagerClient.cs +++ b/src/DynamoPackages/PackageManagerClient.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; using Dynamo.Graph.Workspaces; @@ -207,33 +207,33 @@ private bool ExecuteTermsOfUseCall(bool queryAcceptanceStatus) }, false); } - internal PackageUploadHandle PublishAsync(Package package, IEnumerable files, bool isNewVersion) + internal PackageUploadHandle PublishAsync(Package package, IEnumerable files, IEnumerable markdownFiles, bool isNewVersion) { var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(package)); Task.Factory.StartNew(() => { - Publish(package, files, isNewVersion, packageUploadHandle); + Publish(package, files, markdownFiles, isNewVersion, packageUploadHandle); }); return packageUploadHandle; } - internal void Publish(Package package, IEnumerable files, bool isNewVersion, PackageUploadHandle packageUploadHandle) + internal void Publish(Package package, IEnumerable files, IEnumerable markdownFiles, bool isNewVersion, PackageUploadHandle packageUploadHandle) { try { ResponseBody ret = null; if (isNewVersion) { - var pkg = uploadBuilder.NewPackageVersionUpload(package, packageUploadDirectory, files, + var pkg = uploadBuilder.NewPackageVersionUpload(package, packageUploadDirectory, files, markdownFiles, packageUploadHandle); packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading; ret = this.client.ExecuteAndDeserialize(pkg); } else { - var pkg = uploadBuilder.NewPackageUpload(package, packageUploadDirectory, files, + var pkg = uploadBuilder.NewPackageUpload(package, packageUploadDirectory, files, markdownFiles, packageUploadHandle); packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading; ret = this.client.ExecuteAndDeserialize(pkg); diff --git a/src/DynamoPackages/PackageUploadBuilder.cs b/src/DynamoPackages/PackageUploadBuilder.cs index 23769991afc..83a253c75de 100644 --- a/src/DynamoPackages/PackageUploadBuilder.cs +++ b/src/DynamoPackages/PackageUploadBuilder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -9,11 +9,11 @@ namespace Dynamo.PackageManager { public interface IPackageUploadBuilder { - PackageUpload NewPackageUpload(Package package, string packagesDirectory, IEnumerable files, + PackageUpload NewPackageUpload(Package package, string packagesDirectory, IEnumerable files, IEnumerable markdownFiles, PackageUploadHandle handle); PackageVersionUpload NewPackageVersionUpload(Package package, string packagesDirectory, - IEnumerable files, PackageUploadHandle handle); + IEnumerable files, IEnumerable markdownFiles, PackageUploadHandle handle); } internal class PackageUploadBuilder : IPackageUploadBuilder @@ -56,8 +56,17 @@ public static PackageUploadRequestBody NewRequestBody(Package package) package.NodeLibraries.Select(x => x.FullName), package.HostDependencies, package.CopyrightHolder, package.CopyrightYear); } - - public PackageUpload NewPackageUpload(Package package, string packagesDirectory, IEnumerable files, PackageUploadHandle handle) + /// + /// Build a new package and upload + /// + /// + /// + /// + /// + /// + /// + /// + public PackageUpload NewPackageUpload(Package package, string packagesDirectory, IEnumerable files, IEnumerable markdownFiles, PackageUploadHandle handle) { if (package == null) throw new ArgumentNullException("package"); if (packagesDirectory == null) throw new ArgumentNullException("packagesDirectory"); @@ -65,28 +74,38 @@ public PackageUpload NewPackageUpload(Package package, string packagesDirectory, if (handle == null) throw new ArgumentNullException("handle"); return new PackageUpload(NewRequestBody(package), - BuildAndZip(package, packagesDirectory, files, handle).Name); + BuildAndZip(package, packagesDirectory, files, markdownFiles, handle).Name); } - public PackageVersionUpload NewPackageVersionUpload(Package package, string packagesDirectory, IEnumerable files, PackageUploadHandle handle) + /// + /// Build a new version of the package and upload + /// + /// + /// + /// + /// + /// + /// + /// + public PackageVersionUpload NewPackageVersionUpload(Package package, string packagesDirectory, IEnumerable files, IEnumerable markdownFiles, PackageUploadHandle handle) { if (package == null) throw new ArgumentNullException("package"); if (packagesDirectory == null) throw new ArgumentNullException("packagesDirectory"); if (files == null) throw new ArgumentNullException("files"); if (handle == null) throw new ArgumentNullException("handle"); - return new PackageVersionUpload(NewRequestBody(package), BuildAndZip(package, packagesDirectory, files, handle).Name); + return new PackageVersionUpload(NewRequestBody(package), BuildAndZip(package, packagesDirectory, files, markdownFiles, handle).Name); } #endregion #region Private Class Methods - private IFileInfo BuildAndZip(Package package, string packagesDirectory, IEnumerable files, PackageUploadHandle handle) + private IFileInfo BuildAndZip(Package package, string packagesDirectory, IEnumerable files, IEnumerable markdownFiles, PackageUploadHandle handle) { handle.UploadState = PackageUploadHandle.State.Copying; - var dir = builder.BuildDirectory(package, packagesDirectory, files); + var dir = builder.BuildDirectory(package, packagesDirectory, files, markdownFiles); handle.UploadState = PackageUploadHandle.State.Compressing; diff --git a/test/Libraries/PackageManagerTests/PackageDirectoryBuilderTests.cs b/test/Libraries/PackageManagerTests/PackageDirectoryBuilderTests.cs index 9549a72d989..c25932ad78c 100644 --- a/test/Libraries/PackageManagerTests/PackageDirectoryBuilderTests.cs +++ b/test/Libraries/PackageManagerTests/PackageDirectoryBuilderTests.cs @@ -30,7 +30,7 @@ public void BuildPackageDirectory_DoesExpectedNumberOfOperations() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); Assert.AreEqual(5, fs.DirectoriesCreated.Count()); Assert.AreEqual(2, fs.CopiedFiles.Count()); @@ -50,7 +50,7 @@ public void BuildPackageDirectory_BuildsExpectedDirectories() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); var rootDir = Path.Combine(pkgsDir, pkg.Name); var binDir = Path.Combine(pkgsDir, pkg.Name, PackageDirectoryBuilder.BinaryDirectoryName); @@ -79,7 +79,7 @@ public void BuildPackageDirectory_FormsPackageHeader() var pkgsDir = @"C:\dynamopackages"; // where the magic happens... - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); var rootDir = Path.Combine(pkgsDir, pkg.Name); @@ -109,7 +109,7 @@ public void BuildPackageDirectory_RemapsCustomNodePaths() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); var dyfDir = Path.Combine(pkgsDir, pkg.Name, PackageDirectoryBuilder.CustomNodeDirectoryName); @@ -130,7 +130,7 @@ public void BuildPackageDirectory_UpdatesTheArgumentPackageWithNewDirectories() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); var rootDir = Path.Combine(pkgsDir, pkg.Name); var binDir = Path.Combine(pkgsDir, pkg.Name, PackageDirectoryBuilder.BinaryDirectoryName); @@ -160,7 +160,7 @@ public void BuildPackageDirectory_CopiesTheOriginalFiles() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); var dyfDir = Path.Combine(pkgsDir, pkg.Name, PackageDirectoryBuilder.CustomNodeDirectoryName); @@ -175,7 +175,8 @@ public void BuildPackageDirectory_CopiesTheOriginalFiles() [Test] public void BuildPackageDirectory_CopiesMarkDownFiles() { - var files = new[] { @"C:\file1.md", @"C:\file2.md" }; + var files = new[] { @"C:\file1.dyn", @"C:\file2.dyn" }; + var markdownFiles = new[] { @"C:\file1.md", @"C:\file2.md", @"C:\image\file3.jpg" }; var pkg = new Package(@"C:\pkg", "Foo", "0.1.0", "MIT"); var fs = new RecordedFileSystem((fn) => files.Contains(fn)); @@ -185,16 +186,17 @@ public void BuildPackageDirectory_CopiesMarkDownFiles() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, markdownFiles); var mdDir = Path.Combine(pkgsDir, pkg.Name, PackageDirectoryBuilder.DocumentationDirectoryName); - Assert.AreEqual(2, fs.CopiedFiles.Count()); + Assert.AreEqual(5, fs.CopiedFiles.Count()); Assert.AreEqual(0, fs.DeletedFiles.Count()); Assert.AreEqual(0, fs.DeletedDirectories.Count()); Assert.IsTrue(fs.CopiedFiles.Any(x => ComparePaths(x.Item2, Path.Combine(mdDir, "file1.md")))); Assert.IsTrue(fs.CopiedFiles.Any(x => ComparePaths(x.Item2, Path.Combine(mdDir, "file2.md")))); + Assert.IsTrue(fs.CopiedFiles.Any(x => ComparePaths(x.Item2, Path.Combine(mdDir, "file3.jpg")))); } [Test] @@ -211,7 +213,7 @@ public void BuildPackageDirectory_DeletesTheOriginalFiles() var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); // The original files are moved @@ -242,7 +244,7 @@ public void BuildPackageDirectory_DoesNotIncludeUnselectedFiles() var db = new PackageDirectoryBuilder(fs, MockMaker.Empty()); var pkgsDir = @"C:\dynamopackages"; - db.BuildDirectory(pkg, pkgsDir, files); + db.BuildDirectory(pkg, pkgsDir, files, Enumerable.Empty()); Assert.AreEqual(5, fs.DirectoriesCreated.Count()); Assert.AreEqual(4, fs.CopiedFiles.Count()); @@ -277,7 +279,7 @@ public void CopyFilesIntoPackageDirectory_DoesNotMoveFilesAlreadyWithinDirectory var doc = new Mock(); doc.SetupGet((i) => i.FullName).Returns(() => "C:/foo/doc"); - f.CopyFilesIntoPackageDirectory(files, dyf.Object, bin.Object, extra.Object, doc.Object); + f.CopyFilesIntoPackageDirectory(files, Enumerable.Empty(), dyf.Object, bin.Object, extra.Object, doc.Object); // no files should be copied, they are all already within their intended directory Assert.IsEmpty(fs.CopiedFiles); diff --git a/test/Libraries/PackageManagerTests/PackageManagerClientTests.cs b/test/Libraries/PackageManagerTests/PackageManagerClientTests.cs index bdf9e936055..0b21112fb77 100644 --- a/test/Libraries/PackageManagerTests/PackageManagerClientTests.cs +++ b/test/Libraries/PackageManagerTests/PackageManagerClientTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Dynamo.Graph.Workspaces; @@ -369,7 +369,7 @@ public void Publish_SetsHandleToDoneWhenNewPackagePublishSucceeds() var pkg = new Package("", "Package", "0.1.0", "MIT"); var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - pc.Publish(pkg, Enumerable.Empty(), false, handle); + pc.Publish(pkg, Enumerable.Empty(), Enumerable.Empty(), false, handle); Assert.AreEqual(PackageUploadHandle.State.Uploaded, handle.UploadState); } @@ -389,7 +389,7 @@ public void Publish_SetsHandleToDoneWhenNewPackageVersionPublishSucceeds() var pkg = new Package("", "Package", "0.1.0", "MIT"); var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - pc.Publish(pkg, Enumerable.Empty(), false, handle); + pc.Publish(pkg, Enumerable.Empty(), Enumerable.Empty(), false, handle); Assert.AreEqual(PackageUploadHandle.State.Uploaded, handle.UploadState); } @@ -405,7 +405,7 @@ public void Publish_SetsErrorStatusWhenRequestThrowsAnException() var pkg = new Package("", "Package", "0.1.0", "MIT"); var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - pc.Publish(pkg, Enumerable.Empty(), false, handle); + pc.Publish(pkg, Enumerable.Empty(), Enumerable.Empty(), false, handle); Assert.AreEqual(PackageUploadHandle.State.Error, handle.UploadState); } @@ -424,7 +424,7 @@ public void Publish_SetsErrorStatusWhenResponseIsNull() var pkg = new Package("", "Package", "0.1.0", "MIT"); var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - pc.Publish(pkg, Enumerable.Empty(), true, handle); + pc.Publish(pkg, Enumerable.Empty(), Enumerable.Empty(), true, handle); Assert.AreEqual(PackageUploadHandle.State.Error, handle.UploadState); } @@ -586,4 +586,4 @@ public void Undeprecate_ReturnsFailureObjectWhenRequestThrowsException() #endregion } -} \ No newline at end of file +} diff --git a/test/Libraries/PackageManagerTests/PackageUploadBuilderTests.cs b/test/Libraries/PackageManagerTests/PackageUploadBuilderTests.cs index 4475c805974..e8de461b1d9 100644 --- a/test/Libraries/PackageManagerTests/PackageUploadBuilderTests.cs +++ b/test/Libraries/PackageManagerTests/PackageUploadBuilderTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -26,7 +26,7 @@ private IPackageUploadBuilder BigPackageUploadBuilderMock() zipper.Setup((x) => x.Zip(It.IsAny())).Returns(bigzip.Object); var pdb = new Mock(); - pdb.Setup(x => x.BuildDirectory(It.IsAny(), It.IsAny(), It.IsAny>())) + pdb.Setup(x => x.BuildDirectory(It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>())) .Returns((new Mock()).Object); // this package upload builder will try to return a zip that is too big @@ -139,7 +139,7 @@ public void NewPackageUpload_ThrowsExceptionWhenPackageIsTooBig() var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - Assert.Throws(() => pub.NewPackageUpload(pkg, pkgsDir, files, handle)); + Assert.Throws(() => pub.NewPackageUpload(pkg, pkgsDir, files, Enumerable.Empty(), handle)); } [Test] @@ -152,10 +152,10 @@ public void NewPackageVersionUpload_ThrowsForNullArguments() var m = new PackageUploadBuilder(MockMaker.Empty(), MockMaker.Empty()); - Assert.Throws(() => m.NewPackageVersionUpload(null, pkgsDir, files, handle)); - Assert.Throws(() => m.NewPackageVersionUpload(pkg, null, files, handle)); - Assert.Throws(() => m.NewPackageVersionUpload(pkg, pkgsDir, null, handle)); - Assert.Throws(() => m.NewPackageVersionUpload(pkg, pkgsDir, files, null)); + Assert.Throws(() => m.NewPackageVersionUpload(null, pkgsDir, files, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageVersionUpload(pkg, null, files, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageVersionUpload(pkg, pkgsDir, null, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageVersionUpload(pkg, pkgsDir, files, Enumerable.Empty(), null)); } #endregion @@ -173,7 +173,7 @@ public void NewPackageVersionUpload_ThrowsExceptionWhenPackageIsTooBig() var handle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(pkg)); - Assert.Throws(() => pub.NewPackageVersionUpload(pkg, pkgsDir, files, handle)); + Assert.Throws(() => pub.NewPackageVersionUpload(pkg, pkgsDir, files, Enumerable.Empty(), handle)); } [Test] @@ -186,10 +186,10 @@ public void NewPackageUpload_ThrowsForNullArguments() var m = new PackageUploadBuilder(MockMaker.Empty(), MockMaker.Empty()); - Assert.Throws(() => m.NewPackageUpload(null, pkgsDir, files, handle)); - Assert.Throws(() => m.NewPackageUpload(pkg, null, files, handle)); - Assert.Throws(() => m.NewPackageUpload(pkg, pkgsDir, null, handle)); - Assert.Throws(() => m.NewPackageUpload(pkg, pkgsDir, files, null)); + Assert.Throws(() => m.NewPackageUpload(null, pkgsDir, files, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageUpload(pkg, null, files, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageUpload(pkg, pkgsDir, null, Enumerable.Empty(), handle)); + Assert.Throws(() => m.NewPackageUpload(pkg, pkgsDir, files, Enumerable.Empty(), null)); } #endregion