mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
Refactor code and add tests
This commit is contained in:
@@ -111,7 +111,7 @@ namespace Velopack.Sources
|
|||||||
protected abstract string GetAssetUrlFromName(T release, string assetName);
|
protected abstract string GetAssetUrlFromName(T release, string assetName);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides a wrapper around <see cref="ReleaseEntry"/> which also contains a Git Release.
|
/// Provides a wrapper around <see cref="VelopackAsset"/> which also contains a Git Release.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected internal record GitBaseAsset : VelopackAsset
|
protected internal record GitBaseAsset : VelopackAsset
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace Velopack.Sources
|
|||||||
/// metadata from this package may be provided to the remote server (such as package id,
|
/// metadata from this package may be provided to the remote server (such as package id,
|
||||||
/// or cpu architecture) to ensure that the correct package is downloaded for this user.
|
/// or cpu architecture) to ensure that the correct package is downloaded for this user.
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <returns>An array of <see cref="ReleaseEntry"/> objects that are available for download
|
/// <returns>An array of <see cref="VelopackAsset"/> objects that are available for download
|
||||||
/// and are applicable to this user.</returns>
|
/// and are applicable to this user.</returns>
|
||||||
Task<VelopackAssetFeed> GetReleaseFeed(IVelopackLogger logger, string? appId, string channel, Guid? stagingId = null, VelopackAsset? latestLocalRelease = null);
|
Task<VelopackAssetFeed> GetReleaseFeed(IVelopackLogger logger, string? appId, string channel, Guid? stagingId = null, VelopackAsset? latestLocalRelease = null);
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,6 @@ namespace Velopack
|
|||||||
}
|
}
|
||||||
|
|
||||||
EnsureInstalled();
|
EnsureInstalled();
|
||||||
var installedVer = CurrentVersion!;
|
|
||||||
|
|
||||||
var matchingRemoteDelta = feed.Where(r => r.Type == VelopackAssetType.Delta && r.Version == latestRemoteFull.Version).FirstOrDefault();
|
var matchingRemoteDelta = feed.Where(r => r.Type == VelopackAssetType.Delta && r.Version == latestRemoteFull.Version).FirstOrDefault();
|
||||||
if (matchingRemoteDelta == null) {
|
if (matchingRemoteDelta == null) {
|
||||||
@@ -328,7 +327,7 @@ namespace Velopack
|
|||||||
async x => {
|
async x => {
|
||||||
var targetFile = Locator.GetLocalPackagePath(x);
|
var targetFile = Locator.GetLocalPackagePath(x);
|
||||||
double component = 0;
|
double component = 0;
|
||||||
Log.Debug($"Downloading delta version {x.Version}");
|
Log.Info($"Downloading delta {x.Version}");
|
||||||
await Source.DownloadReleaseEntry(
|
await Source.DownloadReleaseEntry(
|
||||||
Log,
|
Log,
|
||||||
x,
|
x,
|
||||||
@@ -347,7 +346,8 @@ namespace Velopack
|
|||||||
Log.Debug($"Download complete for delta version {x.Version}");
|
Log.Debug($"Download complete for delta version {x.Version}");
|
||||||
}).ConfigureAwait(false);
|
}).ConfigureAwait(false);
|
||||||
|
|
||||||
Log.Info("All delta packages downloaded and verified, applying them to the base now.");
|
Log.Info("All delta packages downloaded and verified.");
|
||||||
|
Log.Info($"Applying {releasesToDownload.Length} patches to {updates.BaseRelease?.FileName}.");
|
||||||
|
|
||||||
// applying deltas accounts for 70%-100% of progress
|
// applying deltas accounts for 70%-100% of progress
|
||||||
var baseFile = Locator.GetLocalPackagePath(updates.BaseRelease!);
|
var baseFile = Locator.GetLocalPackagePath(updates.BaseRelease!);
|
||||||
@@ -365,10 +365,10 @@ namespace Velopack
|
|||||||
}
|
}
|
||||||
|
|
||||||
var psi = new ProcessStartInfo(updateExe);
|
var psi = new ProcessStartInfo(updateExe);
|
||||||
psi.AppendArgumentListSafe(args, out var _);
|
psi.AppendArgumentListSafe(args, out _);
|
||||||
psi.CreateNoWindow = true;
|
psi.CreateNoWindow = true;
|
||||||
var p = psi.StartRedirectOutputToILogger(Log, VelopackLogLevel.Debug);
|
var p = psi.StartRedirectOutputToILogger(Log, VelopackLogLevel.Debug);
|
||||||
if (!p.WaitForExit((int)TimeSpan.FromMinutes(5).TotalMilliseconds)) {
|
if (!p.WaitForExit((int) TimeSpan.FromMinutes(5).TotalMilliseconds)) {
|
||||||
p.Kill();
|
p.Kill();
|
||||||
throw new TimeoutException("patch process timed out (5min).");
|
throw new TimeoutException("patch process timed out (5min).");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ using Task = System.Threading.Tasks.Task;
|
|||||||
|
|
||||||
namespace Velopack.Build;
|
namespace Velopack.Build;
|
||||||
|
|
||||||
public class MSBuildLogger(TaskLoggingHelper loggingHelper) : ILogger, IFancyConsole, IFancyConsoleProgress
|
public class MSBuildLogger(TaskLoggingHelper loggingHelper) : ILogger
|
||||||
{
|
{
|
||||||
private TaskLoggingHelper LoggingHelper { get; } = loggingHelper;
|
private TaskLoggingHelper LoggingHelper { get; } = loggingHelper;
|
||||||
|
|
||||||
@@ -19,31 +19,6 @@ public class MSBuildLogger(TaskLoggingHelper loggingHelper) : ILogger, IFancyCon
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task ExecuteProgressAsync(Func<IFancyConsoleProgress, Task> action)
|
|
||||||
{
|
|
||||||
await action(this).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task RunTask(string name, Func<Action<int>, Task> fn)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
await fn(x => { }).ConfigureAwait(false);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
this.LogError(ex, "Error running task {taskName}", name);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<T> RunTask<T>(string name, Func<Action<int>, Task<T>> fn)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
return await fn(x => { }).ConfigureAwait(false);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
this.LogError(ex, "Error running task {taskName}", name);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsEnabled(LogLevel logLevel)
|
public bool IsEnabled(LogLevel logLevel)
|
||||||
{
|
{
|
||||||
return logLevel switch {
|
return logLevel switch {
|
||||||
@@ -60,6 +35,7 @@ public class MSBuildLogger(TaskLoggingHelper loggingHelper) : ILogger, IFancyCon
|
|||||||
if (exception != null) {
|
if (exception != null) {
|
||||||
message += " " + exception.Message;
|
message += " " + exception.Message;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (logLevel) {
|
switch (logLevel) {
|
||||||
case LogLevel.Trace:
|
case LogLevel.Trace:
|
||||||
LoggingHelper.LogMessage(MessageImportance.Low, message);
|
LoggingHelper.LogMessage(MessageImportance.Low, message);
|
||||||
@@ -79,27 +55,4 @@ public class MSBuildLogger(TaskLoggingHelper loggingHelper) : ILogger, IFancyCon
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public void WriteTable(string tableName, IEnumerable<IEnumerable<string>> rows, bool hasHeaderRow = true)
|
|
||||||
{
|
|
||||||
LoggingHelper.LogMessage(tableName);
|
|
||||||
foreach (var row in rows) {
|
|
||||||
LoggingHelper.LogMessage(" " + String.Join(" ", row));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public System.Threading.Tasks.Task<bool> PromptYesNo(string prompt, bool? defaultValue = null, TimeSpan? timeout = null)
|
|
||||||
{
|
|
||||||
return Task.FromResult(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void WriteLine(string text = "")
|
|
||||||
{
|
|
||||||
Log(LogLevel.Information, 0, null, null, (object? state, Exception? exception) => text);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string EscapeMarkup(string text)
|
|
||||||
{
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,7 @@ using System.Reflection;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
|
using Velopack.Core;
|
||||||
using Velopack.Packaging;
|
using Velopack.Packaging;
|
||||||
using Velopack.Packaging.Unix.Commands;
|
using Velopack.Packaging.Unix.Commands;
|
||||||
using Velopack.Packaging.Windows.Commands;
|
using Velopack.Packaging.Windows.Commands;
|
||||||
@@ -105,6 +106,7 @@ public class PackTask : MSBuildAsyncTask
|
|||||||
{
|
{
|
||||||
//System.Diagnostics.Debugger.Launch();
|
//System.Diagnostics.Debugger.Launch();
|
||||||
try {
|
try {
|
||||||
|
var console = new LoggerConsole(Logger);
|
||||||
HelperFile.ClearSearchPaths();
|
HelperFile.ClearSearchPaths();
|
||||||
var searchPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "..", "..", "vendor"));
|
var searchPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "..", "..", "vendor"));
|
||||||
HelperFile.AddSearchPath(searchPath);
|
HelperFile.AddSearchPath(searchPath);
|
||||||
@@ -132,15 +134,15 @@ public class PackTask : MSBuildAsyncTask
|
|||||||
#pragma warning restore CS0618 // Type or member is obsolete
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
}
|
}
|
||||||
|
|
||||||
var runner = new WindowsPackCommandRunner(Logger, Logger);
|
var runner = new WindowsPackCommandRunner(Logger, console);
|
||||||
await runner.Run(options).ConfigureAwait(false);
|
await runner.Run(options).ConfigureAwait(false);
|
||||||
} else if (VelopackRuntimeInfo.IsOSX) {
|
} else if (VelopackRuntimeInfo.IsOSX) {
|
||||||
var options = this.ToOsxPackOptions();
|
var options = this.ToOsxPackOptions();
|
||||||
var runner = new OsxPackCommandRunner(Logger, Logger);
|
var runner = new OsxPackCommandRunner(Logger, console);
|
||||||
await runner.Run(options).ConfigureAwait(false);
|
await runner.Run(options).ConfigureAwait(false);
|
||||||
} else if (VelopackRuntimeInfo.IsLinux) {
|
} else if (VelopackRuntimeInfo.IsLinux) {
|
||||||
var options = this.ToLinuxPackOptions();
|
var options = this.ToLinuxPackOptions();
|
||||||
var runner = new LinuxPackCommandRunner(Logger, Logger);
|
var runner = new LinuxPackCommandRunner(Logger, console);
|
||||||
await runner.Run(options).ConfigureAwait(false);
|
await runner.Run(options).ConfigureAwait(false);
|
||||||
} else {
|
} else {
|
||||||
throw new NotSupportedException("Unsupported OS platform: " + VelopackRuntimeInfo.SystemOs.GetOsLongName());
|
throw new NotSupportedException("Unsupported OS platform: " + VelopackRuntimeInfo.SystemOs.GetOsLongName());
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Threading;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Velopack.Core;
|
||||||
using Velopack.Flow;
|
using Velopack.Flow;
|
||||||
|
|
||||||
namespace Velopack.Build;
|
namespace Velopack.Build;
|
||||||
@@ -44,7 +45,8 @@ public class PublishTask : MSBuildAsyncTask
|
|||||||
AllowInteractiveLogin = false,
|
AllowInteractiveLogin = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
var client = new VelopackFlowServiceClient(options, Logger, Logger);
|
var console = new LoggerConsole(Logger);
|
||||||
|
var client = new VelopackFlowServiceClient(options, Logger, console);
|
||||||
if (!await client.LoginAsync(loginOptions, false, cancellationToken).ConfigureAwait(false)) {
|
if (!await client.LoginAsync(loginOptions, false, cancellationToken).ConfigureAwait(false)) {
|
||||||
Logger.LogWarning("Not logged into Velopack Flow service, skipping publish. Please run vpk login.");
|
Logger.LogWarning("Not logged into Velopack Flow service, skipping publish. Please run vpk login.");
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
55
src/vpk/Velopack.Core/LoggerConsole.cs
Normal file
55
src/vpk/Velopack.Core/LoggerConsole.cs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Velopack.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace Velopack.Core;
|
||||||
|
|
||||||
|
public class LoggerConsole(ILogger log) : IFancyConsole, IFancyConsoleProgress
|
||||||
|
{
|
||||||
|
public async Task ExecuteProgressAsync(Func<IFancyConsoleProgress, Task> action)
|
||||||
|
{
|
||||||
|
await action(this).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RunTask(string name, Func<Action<int>, Task> fn)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
await fn(x => { }).ConfigureAwait(false);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.LogError(ex, "Error running task {taskName}", name);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<T> RunTask<T>(string name, Func<Action<int>, Task<T>> fn)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return await fn(x => { }).ConfigureAwait(false);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.LogError(ex, "Error running task {taskName}", name);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteTable(string tableName, IEnumerable<IEnumerable<string>> rows, bool hasHeaderRow = true)
|
||||||
|
{
|
||||||
|
log.LogInformation(tableName);
|
||||||
|
foreach (var row in rows) {
|
||||||
|
log.LogInformation(" " + String.Join(" ", row));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<bool> PromptYesNo(string prompt, bool? defaultValue = null, TimeSpan? timeout = null)
|
||||||
|
{
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteLine(string text = "")
|
||||||
|
{
|
||||||
|
log.LogInformation(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string EscapeMarkup(string text)
|
||||||
|
{
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ using System.Threading.Tasks;
|
|||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
using Velopack.Util;
|
using Velopack.Util;
|
||||||
|
|
||||||
namespace Velopack
|
namespace Velopack.Core
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes the requested release notes text format.
|
/// Describes the requested release notes text format.
|
||||||
@@ -146,7 +146,7 @@ namespace Velopack
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new instance of <see cref="ReleaseEntry"/>.
|
/// Create a new instance of <see cref="ReleaseEntry"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected internal ReleaseEntry(string sha1, string filename, long filesize, string baseUrl = null, string query = null, float? stagingPercentage = null)
|
public ReleaseEntry(string sha1, string filename, long filesize, string baseUrl = null, string query = null, float? stagingPercentage = null)
|
||||||
{
|
{
|
||||||
Contract.Requires(sha1 != null && sha1.Length == 40);
|
Contract.Requires(sha1 != null && sha1.Length == 40);
|
||||||
Contract.Requires(filename != null);
|
Contract.Requires(filename != null);
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#nullable enable
|
#nullable enable
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using Velopack.Core;
|
||||||
using Velopack.Exceptions;
|
using Velopack.Exceptions;
|
||||||
using Velopack.Logging;
|
using Velopack.Logging;
|
||||||
using Velopack.Util;
|
using Velopack.Util;
|
||||||
|
|||||||
@@ -1,347 +1,327 @@
|
|||||||
//using System;
|
using Velopack.Core;
|
||||||
//using System.Collections.Generic;
|
using Velopack.Packaging.Commands;
|
||||||
//using System.IO;
|
using Velopack.Util;
|
||||||
//using System.Linq;
|
|
||||||
//using System.Threading.Tasks;
|
namespace Velopack.Packaging.Tests;
|
||||||
//using Squirrel.NuGet;
|
|
||||||
//using Squirrel;
|
public class ApplyDeltaPackageTests(ITestOutputHelper output)
|
||||||
//using Squirrel.SimpleSplat;
|
{
|
||||||
//using Squirrel.Tests.TestHelpers;
|
// [Fact]
|
||||||
//using Xunit;
|
// public void ApplyDeltaPackageSmokeTest()
|
||||||
//using Xunit.Abstractions;
|
// {
|
||||||
//using NuGet.Versioning;
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.0.0.0-full.nupkg");
|
||||||
//using Squirrel.CommandLine;
|
// var deltaPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0-delta.nupkg");
|
||||||
|
// var expectedPackageFile = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0-full.nupkg");
|
||||||
//namespace Squirrel.Tests
|
// var outFile = Path.GetTempFileName() + ".nupkg";
|
||||||
//{
|
//
|
||||||
// public class ApplyDeltaPackageTests : TestLoggingBase
|
// try {
|
||||||
// {
|
// var deltaBuilder = new DeltaPackage();
|
||||||
// public ApplyDeltaPackageTests(ITestOutputHelper log) : base(log)
|
// deltaBuilder.ApplyDeltaPackage(basePackage, deltaPackage, outFile);
|
||||||
// {
|
//
|
||||||
// }
|
// var result = new ZipPackage(outFile);
|
||||||
|
// var expected = new ZipPackage(expectedPackageFile);
|
||||||
// [Fact]
|
//
|
||||||
// public void ApplyDeltaPackageSmokeTest()
|
// result.Id.ShouldEqual(expected.Id);
|
||||||
// {
|
// result.Version.ShouldEqual(expected.Version);
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.0.0.0-full.nupkg");
|
//
|
||||||
// var deltaPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0-delta.nupkg");
|
// this.Log().Info("Expected file list:");
|
||||||
// var expectedPackageFile = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0-full.nupkg");
|
// var expectedList = expected.Files.Select(x => x.Path).OrderBy(x => x).ToList();
|
||||||
// var outFile = Path.GetTempFileName() + ".nupkg";
|
// expectedList.ForEach(x => this.Log().Info(x));
|
||||||
|
//
|
||||||
// try {
|
// this.Log().Info("Actual file list:");
|
||||||
// var deltaBuilder = new DeltaPackage();
|
// var actualList = result.Files.Select(x => x.Path).OrderBy(x => x).ToList();
|
||||||
// deltaBuilder.ApplyDeltaPackage(basePackage, deltaPackage, outFile);
|
// actualList.ForEach(x => this.Log().Info(x));
|
||||||
|
//
|
||||||
// var result = new ZipPackage(outFile);
|
// Enumerable.Zip(expectedList, actualList, (e, a) => e == a)
|
||||||
// var expected = new ZipPackage(expectedPackageFile);
|
// .All(x => x != false)
|
||||||
|
// .ShouldBeTrue();
|
||||||
// result.Id.ShouldEqual(expected.Id);
|
// } finally {
|
||||||
// result.Version.ShouldEqual(expected.Version);
|
// if (File.Exists(outFile)) {
|
||||||
|
// File.Delete(outFile);
|
||||||
// this.Log().Info("Expected file list:");
|
// }
|
||||||
// var expectedList = expected.Files.Select(x => x.Path).OrderBy(x => x).ToList();
|
// }
|
||||||
// expectedList.ForEach(x => this.Log().Info(x));
|
// }
|
||||||
|
//
|
||||||
// this.Log().Info("Actual file list:");
|
// [Fact]
|
||||||
// var actualList = result.Files.Select(x => x.Path).OrderBy(x => x).ToList();
|
// public void ApplyDeltaWithBothBsdiffAndNormalDiffDoesntFail()
|
||||||
// actualList.ForEach(x => this.Log().Info(x));
|
// {
|
||||||
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "slack-1.1.8-full.nupkg");
|
||||||
// Enumerable.Zip(expectedList, actualList, (e, a) => e == a)
|
// var deltaPackage = IntegrationTestHelper.GetPath("fixtures", "slack-1.2.0-delta.nupkg");
|
||||||
// .All(x => x != false)
|
// var outFile = Path.GetTempFileName() + ".nupkg";
|
||||||
// .ShouldBeTrue();
|
//
|
||||||
// } finally {
|
// try {
|
||||||
// if (File.Exists(outFile)) {
|
// var deltaBuilder = new DeltaPackage();
|
||||||
// File.Delete(outFile);
|
// deltaBuilder.ApplyDeltaPackage(basePackage, deltaPackage, outFile);
|
||||||
// }
|
//
|
||||||
// }
|
// var result = new ZipPackage(outFile);
|
||||||
// }
|
//
|
||||||
|
// result.Id.ShouldEqual("slack");
|
||||||
// [Fact]
|
// result.Version.ShouldEqual(SemanticVersion.Parse("1.2.0"));
|
||||||
// public void ApplyDeltaWithBothBsdiffAndNormalDiffDoesntFail()
|
// } finally {
|
||||||
// {
|
// if (File.Exists(outFile)) {
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "slack-1.1.8-full.nupkg");
|
// File.Delete(outFile);
|
||||||
// var deltaPackage = IntegrationTestHelper.GetPath("fixtures", "slack-1.2.0-delta.nupkg");
|
// }
|
||||||
// var outFile = Path.GetTempFileName() + ".nupkg";
|
// }
|
||||||
|
// }
|
||||||
// try {
|
|
||||||
// var deltaBuilder = new DeltaPackage();
|
[Fact]
|
||||||
// deltaBuilder.ApplyDeltaPackage(basePackage, deltaPackage, outFile);
|
public async Task ApplyMultipleDeltasFast()
|
||||||
|
{
|
||||||
// var result = new ZipPackage(outFile);
|
var basePackage = PathHelper.GetFixture("Clowd-3.4.287-full.nupkg");
|
||||||
|
var deltaPackage1 = PathHelper.GetFixture("Clowd-3.4.288-delta.nupkg");
|
||||||
// result.Id.ShouldEqual("slack");
|
var deltaPackage2 = PathHelper.GetFixture("Clowd-3.4.291-delta.nupkg");
|
||||||
// result.Version.ShouldEqual(SemanticVersion.Parse("1.2.0"));
|
var deltaPackage3 = PathHelper.GetFixture("Clowd-3.4.292-delta.nupkg");
|
||||||
// } finally {
|
|
||||||
// if (File.Exists(outFile)) {
|
using var t2 = TempUtil.GetTempDirectory(out var temp);
|
||||||
// File.Delete(outFile);
|
using var logger = output.BuildLoggerFor<GithubDeploymentTests>();
|
||||||
// }
|
var console = new LoggerConsole(logger);
|
||||||
// }
|
|
||||||
// }
|
var runner = new DeltaPatchCommandRunner(logger, console);
|
||||||
|
await runner.Run(
|
||||||
// [Fact]
|
new DeltaPatchOptions() {
|
||||||
// public void ApplyMultipleDeltasFast()
|
BasePackage = basePackage,
|
||||||
// {
|
OutputFile = Path.Combine(temp, "Clowd-3.4.292-full.nupkg"),
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Clowd-3.4.287-full.nupkg");
|
PatchFiles = [
|
||||||
// var deltaPackage1 = IntegrationTestHelper.GetPath("fixtures", "Clowd-3.4.288-delta.nupkg");
|
new FileInfo(deltaPackage1),
|
||||||
// var deltaPackage2 = IntegrationTestHelper.GetPath("fixtures", "Clowd-3.4.291-delta.nupkg");
|
new FileInfo(deltaPackage2),
|
||||||
// var deltaPackage3 = IntegrationTestHelper.GetPath("fixtures", "Clowd-3.4.292-delta.nupkg");
|
new FileInfo(deltaPackage3),
|
||||||
|
]
|
||||||
// using var t1 = Utility.GetTempDirectory(out var appDir);
|
});
|
||||||
// using var t2 = Utility.GetTempDirectory(out var updateDir);
|
|
||||||
|
// var newEntry = um.createFullPackagesFromDeltas(toApply, baseEntry, progress.Add);
|
||||||
// using var um = UpdateManagerTestImpl.FromLocalPackageTempDir(updateDir, "theApp", appDir);
|
//
|
||||||
// var pkgDir = um.Config.PackagesDir;
|
// var outFile = Path.Combine(pkgDir, newEntry.Filename);
|
||||||
|
// var result = new ZipPackage(outFile);
|
||||||
// File.Copy(basePackage, Path.Combine(pkgDir, Path.GetFileName(basePackage)));
|
// result.Id.ShouldEqual("Clowd");
|
||||||
// File.Copy(deltaPackage1, Path.Combine(pkgDir, Path.GetFileName(deltaPackage1)));
|
// result.Version.ShouldEqual(SemanticVersion.Parse("3.4.292"));
|
||||||
// File.Copy(deltaPackage2, Path.Combine(pkgDir, Path.GetFileName(deltaPackage2)));
|
}
|
||||||
// File.Copy(deltaPackage3, Path.Combine(pkgDir, Path.GetFileName(deltaPackage3)));
|
|
||||||
|
// [Fact(Skip = "Rewrite this test, the original uses too many heavyweight fixtures")]
|
||||||
// var baseEntry = ReleaseEntry.GenerateFromFile(basePackage);
|
// public void ApplyMultipleDeltaPackagesGeneratesCorrectHash()
|
||||||
|
// {
|
||||||
// var toApply = new [] {
|
// Assert.Fail("Rewrite this test, the original uses too many heavyweight fixtures");
|
||||||
// ReleaseEntry.GenerateFromFile(deltaPackage1),
|
// }
|
||||||
// ReleaseEntry.GenerateFromFile(deltaPackage2),
|
}
|
||||||
// ReleaseEntry.GenerateFromFile(deltaPackage3),
|
|
||||||
// };
|
// public class CreateDeltaPackageTests : IEnableLogger
|
||||||
|
// {
|
||||||
// List<int> progress = new List<int>();
|
// [Fact]
|
||||||
|
// public void CreateDeltaPackageIntegrationTest()
|
||||||
// var newEntry = um.createFullPackagesFromDeltas(toApply, baseEntry, progress.Add);
|
// {
|
||||||
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
||||||
// var outFile = Path.Combine(pkgDir, newEntry.Filename);
|
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
||||||
// var result = new ZipPackage(outFile);
|
//
|
||||||
// result.Id.ShouldEqual("Clowd");
|
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
||||||
// result.Version.ShouldEqual(SemanticVersion.Parse("3.4.292"));
|
// var fixture = new ReleasePackageBuilder(newPackage);
|
||||||
// }
|
//
|
||||||
|
// var tempFiles = Enumerable.Range(0, 3)
|
||||||
// [Fact(Skip = "Rewrite this test, the original uses too many heavyweight fixtures")]
|
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
||||||
// public void ApplyMultipleDeltaPackagesGeneratesCorrectHash()
|
// .ToArray();
|
||||||
// {
|
//
|
||||||
// Assert.Fail("Rewrite this test, the original uses too many heavyweight fixtures");
|
// try {
|
||||||
// }
|
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
||||||
// }
|
// fixture.CreateReleasePackage(tempFiles[1]);
|
||||||
|
//
|
||||||
// public class CreateDeltaPackageTests : IEnableLogger
|
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
// {
|
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
// [Fact]
|
//
|
||||||
// public void CreateDeltaPackageIntegrationTest()
|
// var deltaBuilder = new DeltaPackageBuilder();
|
||||||
// {
|
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
//
|
||||||
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
// var fullPkg = new ZipPackage(tempFiles[1]);
|
||||||
|
// var deltaPkg = new ZipPackage(tempFiles[2]);
|
||||||
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
//
|
||||||
// var fixture = new ReleasePackageBuilder(newPackage);
|
// //
|
||||||
|
// // Package Checks
|
||||||
// var tempFiles = Enumerable.Range(0, 3)
|
// //
|
||||||
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
//
|
||||||
// .ToArray();
|
// fullPkg.Id.ShouldEqual(deltaPkg.Id);
|
||||||
|
// fullPkg.Version.CompareTo(deltaPkg.Version).ShouldEqual(0);
|
||||||
// try {
|
//
|
||||||
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
// // Delta packages should be smaller than the original!
|
||||||
// fixture.CreateReleasePackage(tempFiles[1]);
|
// var fileInfos = tempFiles.Select(x => new FileInfo(x)).ToArray();
|
||||||
|
// this.Log().Info("Base Size: {0}, Current Size: {1}, Delta Size: {2}",
|
||||||
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
// fileInfos[0].Length, fileInfos[1].Length, fileInfos[2].Length);
|
||||||
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
//
|
||||||
|
// (fileInfos[2].Length - fileInfos[1].Length).ShouldBeLessThan(0);
|
||||||
// var deltaBuilder = new DeltaPackageBuilder();
|
//
|
||||||
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
// //
|
||||||
|
// // File Checks
|
||||||
// var fullPkg = new ZipPackage(tempFiles[1]);
|
// ///
|
||||||
// var deltaPkg = new ZipPackage(tempFiles[2]);
|
//
|
||||||
|
// var deltaPkgFiles = deltaPkg.Files.ToList();
|
||||||
// //
|
// deltaPkgFiles.Count.ShouldBeGreaterThan(0);
|
||||||
// // Package Checks
|
//
|
||||||
// //
|
// this.Log().Info("Files in delta package:");
|
||||||
|
// deltaPkgFiles.ForEach(x => this.Log().Info(x.Path));
|
||||||
// fullPkg.Id.ShouldEqual(deltaPkg.Id);
|
//
|
||||||
// fullPkg.Version.CompareTo(deltaPkg.Version).ShouldEqual(0);
|
// var newFilesAdded = new[] {
|
||||||
|
// "Newtonsoft.Json.dll",
|
||||||
// // Delta packages should be smaller than the original!
|
// //"Refit.dll",
|
||||||
// var fileInfos = tempFiles.Select(x => new FileInfo(x)).ToArray();
|
// //"Refit-Portable.dll",
|
||||||
// this.Log().Info("Base Size: {0}, Current Size: {1}, Delta Size: {2}",
|
// //"Castle.Core.dll",
|
||||||
// fileInfos[0].Length, fileInfos[1].Length, fileInfos[2].Length);
|
// }.Select(x => x.ToLowerInvariant());
|
||||||
|
//
|
||||||
// (fileInfos[2].Length - fileInfos[1].Length).ShouldBeLessThan(0);
|
// // vNext adds a dependency on Refit
|
||||||
|
// newFilesAdded
|
||||||
// //
|
// .All(x => deltaPkgFiles.Any(y => y.Path.ToLowerInvariant().Contains(x)))
|
||||||
// // File Checks
|
// .ShouldBeTrue();
|
||||||
// ///
|
//
|
||||||
|
// // All the other files should be diffs and shasums
|
||||||
// var deltaPkgFiles = deltaPkg.Files.ToList();
|
// deltaPkgFiles
|
||||||
// deltaPkgFiles.Count.ShouldBeGreaterThan(0);
|
// .Where(x => !newFilesAdded.Any(y => x.Path.ToLowerInvariant().Contains(y)))
|
||||||
|
// .All(x => x.Path.ToLowerInvariant().EndsWith("bsdiff") || x.Path.ToLowerInvariant().EndsWith("shasum"))
|
||||||
// this.Log().Info("Files in delta package:");
|
// .ShouldBeTrue();
|
||||||
// deltaPkgFiles.ForEach(x => this.Log().Info(x.Path));
|
//
|
||||||
|
// // Every .diff file should have a shasum file
|
||||||
// var newFilesAdded = new[] {
|
// deltaPkg.Files.Any(x => x.Path.ToLowerInvariant().EndsWith(".bsdiff")).ShouldBeTrue();
|
||||||
// "Newtonsoft.Json.dll",
|
// deltaPkg.Files
|
||||||
// //"Refit.dll",
|
// .Where(x => x.Path.ToLowerInvariant().EndsWith(".bsdiff"))
|
||||||
// //"Refit-Portable.dll",
|
// .ForEach(x => {
|
||||||
// //"Castle.Core.dll",
|
// var lookingFor = x.Path.Replace(".bsdiff", ".shasum");
|
||||||
// }.Select(x => x.ToLowerInvariant());
|
// this.Log().Info("Looking for corresponding shasum file: {0}", lookingFor);
|
||||||
|
// deltaPkg.Files.Any(y => y.Path == lookingFor).ShouldBeTrue();
|
||||||
// // vNext adds a dependency on Refit
|
// });
|
||||||
// newFilesAdded
|
// } finally {
|
||||||
// .All(x => deltaPkgFiles.Any(y => y.Path.ToLowerInvariant().Contains(x)))
|
// tempFiles.ForEach(File.Delete);
|
||||||
// .ShouldBeTrue();
|
// }
|
||||||
|
// }
|
||||||
// // All the other files should be diffs and shasums
|
//
|
||||||
// deltaPkgFiles
|
// [Fact]
|
||||||
// .Where(x => !newFilesAdded.Any(y => x.Path.ToLowerInvariant().Contains(y)))
|
// public void WhenBasePackageIsNewerThanNewPackageThrowException()
|
||||||
// .All(x => x.Path.ToLowerInvariant().EndsWith("bsdiff") || x.Path.ToLowerInvariant().EndsWith("shasum"))
|
// {
|
||||||
// .ShouldBeTrue();
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
||||||
|
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
||||||
// // Every .diff file should have a shasum file
|
//
|
||||||
// deltaPkg.Files.Any(x => x.Path.ToLowerInvariant().EndsWith(".bsdiff")).ShouldBeTrue();
|
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
||||||
// deltaPkg.Files
|
// var fixture = new ReleasePackageBuilder(newPackage);
|
||||||
// .Where(x => x.Path.ToLowerInvariant().EndsWith(".bsdiff"))
|
//
|
||||||
// .ForEach(x => {
|
// var tempFiles = Enumerable.Range(0, 3)
|
||||||
// var lookingFor = x.Path.Replace(".bsdiff", ".shasum");
|
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
||||||
// this.Log().Info("Looking for corresponding shasum file: {0}", lookingFor);
|
// .ToArray();
|
||||||
// deltaPkg.Files.Any(y => y.Path == lookingFor).ShouldBeTrue();
|
//
|
||||||
// });
|
// try {
|
||||||
// } finally {
|
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
||||||
// tempFiles.ForEach(File.Delete);
|
// fixture.CreateReleasePackage(tempFiles[1]);
|
||||||
// }
|
//
|
||||||
// }
|
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
|
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
// [Fact]
|
//
|
||||||
// public void WhenBasePackageIsNewerThanNewPackageThrowException()
|
// Assert.Throws<InvalidOperationException>(() => {
|
||||||
// {
|
// var deltaBuilder = new DeltaPackageBuilder();
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
||||||
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
// });
|
||||||
|
// } finally {
|
||||||
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
// tempFiles.ForEach(File.Delete);
|
||||||
// var fixture = new ReleasePackageBuilder(newPackage);
|
// }
|
||||||
|
// }
|
||||||
// var tempFiles = Enumerable.Range(0, 3)
|
//
|
||||||
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
// [Fact]
|
||||||
// .ToArray();
|
// public void WhenBasePackageReleaseIsNullThrowsException()
|
||||||
|
// {
|
||||||
// try {
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.0.0.0.nupkg");
|
||||||
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0.nupkg");
|
||||||
// fixture.CreateReleasePackage(tempFiles[1]);
|
//
|
||||||
|
// var sourceDir = IntegrationTestHelper.GetPath("fixtures", "packages");
|
||||||
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
// (new DirectoryInfo(sourceDir)).Exists.ShouldBeTrue();
|
||||||
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
//
|
||||||
|
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
||||||
// Assert.Throws<InvalidOperationException>(() => {
|
// var fixture = new ReleasePackageBuilder(newPackage);
|
||||||
// var deltaBuilder = new DeltaPackageBuilder();
|
//
|
||||||
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
// var tempFile = Path.GetTempPath() + Guid.NewGuid() + ".nupkg";
|
||||||
// });
|
//
|
||||||
// } finally {
|
// try {
|
||||||
// tempFiles.ForEach(File.Delete);
|
// Assert.Throws<ArgumentException>(() => {
|
||||||
// }
|
// var deltaBuilder = new DeltaPackageBuilder();
|
||||||
// }
|
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFile);
|
||||||
|
// });
|
||||||
// [Fact]
|
// } finally {
|
||||||
// public void WhenBasePackageReleaseIsNullThrowsException()
|
// File.Delete(tempFile);
|
||||||
// {
|
// }
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.0.0.0.nupkg");
|
// }
|
||||||
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Core.1.1.0.0.nupkg");
|
//
|
||||||
|
// [Fact]
|
||||||
// var sourceDir = IntegrationTestHelper.GetPath("fixtures", "packages");
|
// public void WhenBasePackageDoesNotExistThrowException()
|
||||||
// (new DirectoryInfo(sourceDir)).Exists.ShouldBeTrue();
|
// {
|
||||||
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
||||||
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
||||||
// var fixture = new ReleasePackageBuilder(newPackage);
|
//
|
||||||
|
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
||||||
// var tempFile = Path.GetTempPath() + Guid.NewGuid() + ".nupkg";
|
// var fixture = new ReleasePackageBuilder(newPackage);
|
||||||
|
//
|
||||||
// try {
|
// var tempFiles = Enumerable.Range(0, 3)
|
||||||
// Assert.Throws<ArgumentException>(() => {
|
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
||||||
// var deltaBuilder = new DeltaPackageBuilder();
|
// .ToArray();
|
||||||
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFile);
|
//
|
||||||
// });
|
// try {
|
||||||
// } finally {
|
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
||||||
// File.Delete(tempFile);
|
// fixture.CreateReleasePackage(tempFiles[1]);
|
||||||
// }
|
//
|
||||||
// }
|
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
|
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
// [Fact]
|
//
|
||||||
// public void WhenBasePackageDoesNotExistThrowException()
|
// // NOW WATCH AS THE FILE DISAPPEARS
|
||||||
// {
|
// File.Delete(baseFixture.ReleasePackageFile);
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
//
|
||||||
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
// Assert.Throws<FileNotFoundException>(() => {
|
||||||
|
// var deltaBuilder = new DeltaPackageBuilder();
|
||||||
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
||||||
// var fixture = new ReleasePackageBuilder(newPackage);
|
// });
|
||||||
|
// } finally {
|
||||||
// var tempFiles = Enumerable.Range(0, 3)
|
// tempFiles.ForEach(File.Delete);
|
||||||
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
// }
|
||||||
// .ToArray();
|
// }
|
||||||
|
//
|
||||||
// try {
|
// [Fact]
|
||||||
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
// public void WhenNewPackageDoesNotExistThrowException()
|
||||||
// fixture.CreateReleasePackage(tempFiles[1]);
|
// {
|
||||||
|
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
||||||
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
||||||
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
//
|
||||||
|
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
||||||
// // NOW WATCH AS THE FILE DISAPPEARS
|
// var fixture = new ReleasePackageBuilder(newPackage);
|
||||||
// File.Delete(baseFixture.ReleasePackageFile);
|
//
|
||||||
|
// var tempFiles = Enumerable.Range(0, 3)
|
||||||
// Assert.Throws<FileNotFoundException>(() => {
|
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
||||||
// var deltaBuilder = new DeltaPackageBuilder();
|
// .ToArray();
|
||||||
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
//
|
||||||
// });
|
// try {
|
||||||
// } finally {
|
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
||||||
// tempFiles.ForEach(File.Delete);
|
// fixture.CreateReleasePackage(tempFiles[1]);
|
||||||
// }
|
//
|
||||||
// }
|
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
|
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
||||||
// [Fact]
|
//
|
||||||
// public void WhenNewPackageDoesNotExistThrowException()
|
// // NOW WATCH AS THE FILE DISAPPEARS
|
||||||
// {
|
// File.Delete(fixture.ReleasePackageFile);
|
||||||
// var basePackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.1.0-pre.nupkg");
|
//
|
||||||
// var newPackage = IntegrationTestHelper.GetPath("fixtures", "Squirrel.Tests.0.2.0-pre.nupkg");
|
// Assert.Throws<FileNotFoundException>(() => {
|
||||||
|
// var deltaBuilder = new DeltaPackageBuilder();
|
||||||
// var baseFixture = new ReleasePackageBuilder(basePackage);
|
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
||||||
// var fixture = new ReleasePackageBuilder(newPackage);
|
// });
|
||||||
|
// } finally {
|
||||||
// var tempFiles = Enumerable.Range(0, 3)
|
// tempFiles.ForEach(File.Delete);
|
||||||
// .Select(_ => Path.GetTempPath() + Guid.NewGuid().ToString() + ".nupkg")
|
// }
|
||||||
// .ToArray();
|
// }
|
||||||
|
//
|
||||||
// try {
|
// [Fact]
|
||||||
// baseFixture.CreateReleasePackage(tempFiles[0]);
|
// public void HandleBsDiffWithoutExtraData()
|
||||||
// fixture.CreateReleasePackage(tempFiles[1]);
|
// {
|
||||||
|
// var baseFileData = new byte[] { 1, 1, 1, 1 };
|
||||||
// (new FileInfo(baseFixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
// var newFileData = new byte[] { 2, 1, 1, 1 };
|
||||||
// (new FileInfo(fixture.ReleasePackageFile)).Exists.ShouldBeTrue();
|
//
|
||||||
|
// byte[] patchData;
|
||||||
// // NOW WATCH AS THE FILE DISAPPEARS
|
//
|
||||||
// File.Delete(fixture.ReleasePackageFile);
|
// using (var patchOut = new MemoryStream()) {
|
||||||
|
// Bsdiff.BinaryPatchUtility.Create(baseFileData, newFileData, patchOut);
|
||||||
// Assert.Throws<FileNotFoundException>(() => {
|
// patchData = patchOut.ToArray();
|
||||||
// var deltaBuilder = new DeltaPackageBuilder();
|
// }
|
||||||
// deltaBuilder.CreateDeltaPackage(baseFixture, fixture, tempFiles[2]);
|
//
|
||||||
// });
|
// using (var toPatch = new MemoryStream(baseFileData))
|
||||||
// } finally {
|
// using (var patched = new MemoryStream()) {
|
||||||
// tempFiles.ForEach(File.Delete);
|
// Bsdiff.BinaryPatchUtility.Apply(toPatch, () => new MemoryStream(patchData), patched);
|
||||||
// }
|
//
|
||||||
// }
|
// Assert.Equal(newFileData, patched.ToArray());
|
||||||
|
// }
|
||||||
// [Fact]
|
// }
|
||||||
// public void HandleBsDiffWithoutExtraData()
|
// }
|
||||||
// {
|
|
||||||
// var baseFileData = new byte[] { 1, 1, 1, 1 };
|
|
||||||
// var newFileData = new byte[] { 2, 1, 1, 1 };
|
|
||||||
|
|
||||||
// byte[] patchData;
|
|
||||||
|
|
||||||
// using (var patchOut = new MemoryStream()) {
|
|
||||||
// Bsdiff.BinaryPatchUtility.Create(baseFileData, newFileData, patchOut);
|
|
||||||
// patchData = patchOut.ToArray();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// using (var toPatch = new MemoryStream(baseFileData))
|
|
||||||
// using (var patched = new MemoryStream()) {
|
|
||||||
// Bsdiff.BinaryPatchUtility.Apply(toPatch, () => new MemoryStream(patchData), patched);
|
|
||||||
|
|
||||||
// Assert.Equal(newFileData, patched.ToArray());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma warning disable CS0618 // Type or member is obsolete
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
|
using Velopack.Core;
|
||||||
using OldReleaseEntry = Velopack.Tests.OldSquirrel.ReleaseEntry;
|
using OldReleaseEntry = Velopack.Tests.OldSquirrel.ReleaseEntry;
|
||||||
using OldSemanticVersion = Velopack.Tests.OldSquirrel.SemanticVersion;
|
using OldSemanticVersion = Velopack.Tests.OldSquirrel.SemanticVersion;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user