mirror of
				https://github.com/velopack/velopack.git
				synced 2025-10-25 15:19:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			325 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //using System.CommandLine;
 | |
| //using System.CommandLine.Parsing;
 | |
| //using Xunit;
 | |
| 
 | |
| //namespace Squirrel.CommandLine.Tests.Commands
 | |
| //{
 | |
| //    public class PackCommandTests : BaseCommandTests<PackOsxCommand>
 | |
| //    {
 | |
| //        [Fact]
 | |
| //        public void Command_WithValidRequiredArguments_Parses()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            CreateTempFile(packDir);
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            ParseResult parseResult = command.Parse($"--packId Clowd.Squirrel -v 1.2.3 -p \"{packDir.FullName}\"");
 | |
| 
 | |
| //            Assert.Empty(parseResult.Errors);
 | |
| //            Assert.Equal("Clowd.Squirrel", command.PackId);
 | |
| //            Assert.Equal("1.2.3", command.PackVersion);
 | |
| //            Assert.Equal(packDir.FullName, command.PackDirectory?.FullName);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackId_WithInvalidNuGetId_ShowsError()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            CreateTempFile(packDir);
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            ParseResult parseResult = command.Parse($"--packId $42@ -v 1.0.0 -p \"{packDir.FullName}\"");
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.StartsWith("--packId is an invalid NuGet package id.", parseResult.Errors[0].Message);
 | |
| //            Assert.Contains("$42@", parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackVersion_WithInvalidVersion_ShowsError()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            CreateTempFile(packDir);
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            ParseResult parseResult = command.Parse($"-u Clowd.Squirrel --packVersion 1.a.c -p \"{packDir.FullName}\"");
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.StartsWith("--packVersion contains an invalid package version", parseResult.Errors[0].Message);
 | |
| //            Assert.Contains("1.a.c", parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackDirectory_WithEmptyFolder_ShowsError()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            ParseResult parseResult = command.Parse($"-u Clowd.Squirrel -v 1.0.0 --packDir \"{packDir.FullName}\"");
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.StartsWith("--packDir must a non-empty directory", parseResult.Errors[0].Message);
 | |
| //            Assert.Contains(packDir.FullName, parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackAuthors_WithMultipleAuthors_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + "--packAuthors Me,mysel,I";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("Me,mysel,I", command.PackAuthors);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackTitle_WithTitle_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + "--packTitle \"My Awesome Title\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("My Awesome Title", command.PackTitle);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void IncludePdb_BareOption_SetsFlag()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + "--includePdb";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.True(command.IncludePdb);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void ReleaseNotes_WithExistingFile_ParsesValue()
 | |
| //        {
 | |
| //            FileInfo releaseNotes = CreateTempFile();
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--releaseNotes \"{releaseNotes.FullName}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(releaseNotes.FullName, command.ReleaseNotes?.FullName);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void ReleaseNotes_WithoutFile_ShowsError()
 | |
| //        {
 | |
| //            string releaseNotes = Path.GetFullPath(Path.GetRandomFileName());
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--releaseNotes \"{releaseNotes}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.Equal(command.ReleaseNotes, parseResult.Errors[0].SymbolResult?.Symbol.Parents.Single());
 | |
| //            Assert.Contains(releaseNotes, parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SquirrelAwareExecutable_WithFileName_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--mainExe \"MyApp.exe\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("MyApp.exe", command.SquirrelAwareExecutable);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void Icon_WithValidFile_ParsesValue()
 | |
| //        {
 | |
| //            FileInfo fileInfo = CreateTempFile(name: Path.ChangeExtension(Path.GetRandomFileName(), ".ico"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--icon \"{fileInfo.FullName}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(fileInfo.FullName, command.Icon?.FullName);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void Icon_WithBadFileExtension_ShowsError()
 | |
| //        {
 | |
| //            FileInfo fileInfo = CreateTempFile(name: Path.ChangeExtension(Path.GetRandomFileName(), ".wrong"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--icon \"{fileInfo.FullName}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.Equal($"--icon does not have an .ico extension", parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void Icon_WithoutFile_ShowsError()
 | |
| //        {
 | |
| //            string file = Path.GetFullPath(Path.ChangeExtension(Path.GetRandomFileName(), ".ico"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--icon \"{file}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.Equal(command.Icon, parseResult.Errors[0].SymbolResult?.Symbol.Parents.Single());
 | |
| //            Assert.Contains(file, parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void BundleId_WithValue_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--bundleId \"some id\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("some id", command.BundleId);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void NoDelta_BareOption_SetsFlag()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + "--noDelta";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.True(command.NoDelta);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void NoPackage_BareOption_SetsFlag()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + "--noPkg";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.True(command.NoPackage);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackageContent_CanSpecifyMultipleValues()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            FileInfo testFile1 = CreateTempFile(packDir);
 | |
| //            FileInfo testFile2 = CreateTempFile(packDir);
 | |
| //            PackCommand command = new PackCommand();
 | |
| //            string cli = $"-u clowd.squirrel -v 1.0.0 -p \"{packDir.FullName}\"";
 | |
| //            cli += $" --pkgContent welcome={testFile1.FullName}";
 | |
| //            cli += $" --pkgContent license={testFile2.FullName}";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Empty(parseResult.Errors);
 | |
| //            var packageContent = command.PackageContent;
 | |
| //            Assert.Equal(2, packageContent?.Length);
 | |
| 
 | |
| //            Assert.Equal("welcome", packageContent![0].Key);
 | |
| //            Assert.Equal(testFile1.FullName, packageContent![0].Value.FullName);
 | |
| 
 | |
| //            Assert.Equal("license", packageContent![1].Key);
 | |
| //            Assert.Equal(testFile2.FullName, packageContent![1].Value.FullName);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void PackageContent_WihtInvalidKey_DisplaysError()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            FileInfo testFile1 = CreateTempFile(packDir);
 | |
| //            PackCommand command = new PackCommand();
 | |
| //            string cli = $"-u clowd.squirrel -v 1.0.0 -p \"{packDir.FullName}\"";
 | |
| //            cli += $" --pkgContent unknown={testFile1.FullName}";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            ParseError error = parseResult.Errors.Single();
 | |
| //            Assert.Equal("Invalid pkgContent key: unknown. Must be one of: welcome, readme, license, conclusion", error.Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SigningAppIdentity_WithSubject_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--signAppIdentity \"Mac Developer\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("Mac Developer", command.SigningAppIdentity);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SigningInstallIdentity_WithSubject_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--signInstallIdentity \"Mac Developer\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("Mac Developer", command.SigningInstallIdentity);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SigningEntitlements_WithValidFile_ParsesValue()
 | |
| //        {
 | |
| //            FileInfo fileInfo = CreateTempFile(name: Path.ChangeExtension(Path.GetRandomFileName(), ".entitlements"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--signEntitlements \"{fileInfo.FullName}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(fileInfo.FullName, command.SigningEntitlements?.FullName);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SigningEntitlements_WithBadFileExtension_ShowsError()
 | |
| //        {
 | |
| //            FileInfo fileInfo = CreateTempFile(name: Path.ChangeExtension(Path.GetRandomFileName(), ".wrong"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--signEntitlements \"{fileInfo.FullName}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.Equal($"--signEntitlements does not have an .entitlements extension", parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void SigningEntitlements_WithoutFile_ShowsError()
 | |
| //        {
 | |
| //            string file = Path.GetFullPath(Path.ChangeExtension(Path.GetRandomFileName(), ".entitlements"));
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--signEntitlements \"{file}\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal(1, parseResult.Errors.Count);
 | |
| //            Assert.Equal(command.SigningEntitlements, parseResult.Errors[0].SymbolResult?.Symbol.Parents.Single());
 | |
| //            Assert.Contains(file, parseResult.Errors[0].Message);
 | |
| //        }
 | |
| 
 | |
| //        [Fact]
 | |
| //        public void NotaryProfile_WithName_ParsesValue()
 | |
| //        {
 | |
| //            var command = new PackCommand();
 | |
| 
 | |
| //            string cli = GetRequiredDefaultOptions() + $"--notaryProfile \"profile name\"";
 | |
| //            ParseResult parseResult = command.Parse(cli);
 | |
| 
 | |
| //            Assert.Equal("profile name", command.NotaryProfile);
 | |
| //        }
 | |
| 
 | |
| //        protected override string GetRequiredDefaultOptions()
 | |
| //        {
 | |
| //            DirectoryInfo packDir = CreateTempDirectory();
 | |
| //            CreateTempFile(packDir);
 | |
| 
 | |
| //            return $"-u Clowd.Squirrel -v 1.0.0 -p \"{packDir.FullName}\" ";
 | |
| //        }
 | |
| //    }
 | |
| //}
 |