mirror of
				https://github.com/velopack/velopack.git
				synced 2025-10-25 15:19:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #nullable enable
 | |
| using System.Diagnostics;
 | |
| using Velopack.Core;
 | |
| using Velopack.Packaging.Unix.Commands;
 | |
| using Velopack.Packaging.Windows.Commands;
 | |
| using Velopack.Util;
 | |
| using Velopack.Vpk;
 | |
| using Velopack.Vpk.Logging;
 | |
| 
 | |
| namespace Velopack.Packaging.Tests;
 | |
| 
 | |
| public static class TestApp
 | |
| {
 | |
|     public static void PackTestApp(string id, string version, string testString, string releaseDir, ILogger logger,
 | |
|         string? releaseNotes = null, string? channel = null, RID? targetRid = null, string? packTitle = null, string? azureTrustedSignFile = null)
 | |
|     {
 | |
|         targetRid ??= RID.Parse(VelopackRuntimeInfo.SystemRid);
 | |
| 
 | |
|         var projDir = PathHelper.GetTestRootPath("TestApp");
 | |
|         var testStringFile = Path.Combine(projDir, "Const.cs");
 | |
|         var oldText = File.ReadAllText(testStringFile);
 | |
| 
 | |
|         try {
 | |
|             File.WriteAllText(testStringFile, $"class Const {{ public const string TEST_STRING = \"{testString}\"; }}");
 | |
| 
 | |
|             var args = new string[] { "publish", "--no-self-contained", "-c", "Release", "-r", targetRid.ToString(), "-o", "publish" };
 | |
| 
 | |
|             var psi = new ProcessStartInfo("dotnet");
 | |
|             psi.WorkingDirectory = projDir;
 | |
|             psi.AppendArgumentListSafe(args, out var debug);
 | |
| 
 | |
|             logger.Info($"TEST: Running {psi.FileName} {debug}");
 | |
| 
 | |
|             using var p = Process.Start(psi);
 | |
|             p!.WaitForExit();
 | |
| 
 | |
|             if (p.ExitCode != 0)
 | |
|                 throw new Exception($"dotnet publish failed with exit code {p.ExitCode}");
 | |
| 
 | |
|             var console = new BasicConsole(logger, new VelopackDefaults(false));
 | |
| 
 | |
|             if (targetRid.BaseRID == RuntimeOs.Windows) {
 | |
|                 var options = new WindowsPackOptions {
 | |
|                     EntryExecutableName = "TestApp.exe",
 | |
|                     ReleaseDir = new DirectoryInfo(releaseDir),
 | |
|                     PackTitle = packTitle,
 | |
|                     PackId = id,
 | |
|                     TargetRuntime = targetRid,
 | |
|                     PackVersion = version,
 | |
|                     PackDirectory = Path.Combine(projDir, "publish"),
 | |
|                     ReleaseNotes = releaseNotes,
 | |
|                     Channel = channel,
 | |
|                     AzureTrustedSignFile = azureTrustedSignFile
 | |
|                 };
 | |
|                 var runner = new WindowsPackCommandRunner(logger, console);
 | |
|                 runner.Run(options).GetAwaiterResult();
 | |
|             } else if (targetRid.BaseRID == RuntimeOs.OSX) {
 | |
|                 var options = new OsxPackOptions {
 | |
|                     EntryExecutableName = "TestApp",
 | |
|                     ReleaseDir = new DirectoryInfo(releaseDir),
 | |
|                     PackTitle = packTitle,
 | |
|                     PackId = id,
 | |
|                     TargetRuntime = targetRid,
 | |
|                     PackVersion = version,
 | |
|                     PackDirectory = Path.Combine(projDir, "publish"),
 | |
|                     ReleaseNotes = releaseNotes,
 | |
|                     Channel = channel,
 | |
|                 };
 | |
|                 if (VelopackRuntimeInfo.IsOSX) {
 | |
|                     var runner = new OsxPackCommandRunner(logger, console);
 | |
|                     runner.Run(options).GetAwaiterResult();
 | |
|                 } else {
 | |
|                     throw new PlatformNotSupportedException();
 | |
|                 }
 | |
|             } else if (targetRid.BaseRID == RuntimeOs.Linux) {
 | |
|                 var options = new LinuxPackOptions {
 | |
|                     EntryExecutableName = "TestApp",
 | |
|                     ReleaseDir = new DirectoryInfo(releaseDir),
 | |
|                     PackTitle = packTitle,
 | |
|                     PackId = id,
 | |
|                     TargetRuntime = targetRid,
 | |
|                     PackVersion = version,
 | |
|                     PackDirectory = Path.Combine(projDir, "publish"),
 | |
|                     ReleaseNotes = releaseNotes,
 | |
|                     Channel = channel
 | |
|                 };
 | |
|                 var runner = new LinuxPackCommandRunner(logger, console);
 | |
|                 runner.Run(options).GetAwaiterResult();
 | |
|             } else {
 | |
|                 throw new PlatformNotSupportedException();
 | |
|             }
 | |
|         } finally {
 | |
|             File.WriteAllText(testStringFile, oldText);
 | |
|         }
 | |
|     }
 | |
| }
 |