diff --git a/Remotely.sln b/Remotely.sln
index 2c433d93..b762e834 100644
--- a/Remotely.sln
+++ b/Remotely.sln
@@ -53,6 +53,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Desktop.Win.Tests", "Tests\
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0754E195-7080-4AAC-B5A3-A9923B1283CE}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Tests", "Tests\Shared.Tests\Shared.Tests.csproj", "{B6C1030D-1F74-4143-BB70-FC79C0274653}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -195,6 +197,18 @@ Global
{162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x64.Build.0 = Release|Any CPU
{162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x86.ActiveCfg = Release|Any CPU
{162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x86.Build.0 = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x64.Build.0 = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x86.Build.0 = Debug|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x64.ActiveCfg = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x64.Build.0 = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x86.ActiveCfg = Release|Any CPU
+ {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -203,6 +217,7 @@ Global
{48D9D0E6-5781-44A9-84C0-56F56C2A1193} = {0754E195-7080-4AAC-B5A3-A9923B1283CE}
{6C25240C-613D-4A86-A04E-784BA6726094} = {0754E195-7080-4AAC-B5A3-A9923B1283CE}
{162C54FB-FEEC-490B-9105-103AD30A10F7} = {0754E195-7080-4AAC-B5A3-A9923B1283CE}
+ {B6C1030D-1F74-4143-BB70-FC79C0274653} = {0754E195-7080-4AAC-B5A3-A9923B1283CE}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EAE10B28-119B-437C-9E68-06F0EE3F968A}
diff --git a/Server.Installer/Services/ServerInstaller.cs b/Server.Installer/Services/ServerInstaller.cs
index 46c0c7b4..4a875f89 100644
--- a/Server.Installer/Services/ServerInstaller.cs
+++ b/Server.Installer/Services/ServerInstaller.cs
@@ -43,7 +43,7 @@ namespace Server.Installer.Services
using var httpClient = new HttpClient();
var response = await httpClient.GetAsync(releaseFile);
- var contentLength = (double?)response.Content.Headers.ContentLength;
+ var contentLength = response.Content.Headers.ContentLength;
using var webStream = await response.Content.ReadAsStreamAsync();
using var fileStream = new FileStream(zipPath, FileMode.Create);
@@ -59,7 +59,7 @@ namespace Server.Installer.Services
}
- var newProgress = bytesRead / contentLength * 100;
+ var newProgress = (double)bytesRead / contentLength * 100;
if (newProgress == 100 ||
newProgress - progress > 5)
diff --git a/Tests/Shared.Tests/Shared.Tests.csproj b/Tests/Shared.Tests/Shared.Tests.csproj
new file mode 100644
index 00000000..4d2bac6f
--- /dev/null
+++ b/Tests/Shared.Tests/Shared.Tests.csproj
@@ -0,0 +1,26 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+ false
+
+ Remotely.Shared.Tests
+
+ Remotely.Shared.Tests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Shared.Tests/StreamExtensionsTests.cs b/Tests/Shared.Tests/StreamExtensionsTests.cs
new file mode 100644
index 00000000..3b2559ce
--- /dev/null
+++ b/Tests/Shared.Tests/StreamExtensionsTests.cs
@@ -0,0 +1,30 @@
+using System.Security.Cryptography;
+using Remotely.Shared.Extensions;
+
+namespace Remotely.Shared.Tests
+{
+ [TestClass]
+ public class StreamExtensionsTests
+ {
+ [TestMethod]
+ public async Task CopyToAsyncTest()
+ {
+ var bufferSize = 500_000;
+ var srcBuffer = new byte[bufferSize];
+ RandomNumberGenerator.Fill(srcBuffer);
+
+ using var src = new MemoryStream(srcBuffer);
+ using var dst = new MemoryStream();
+
+ var amounts = new List();
+
+ await src.CopyToAsync(dst, bytesRead =>
+ {
+ amounts.Add(bytesRead);
+ });
+
+ Assert.IsTrue(amounts.Any());
+ Assert.AreEqual(bufferSize, amounts.Last());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tests/Shared.Tests/Usings.cs b/Tests/Shared.Tests/Usings.cs
new file mode 100644
index 00000000..ab67c7ea
--- /dev/null
+++ b/Tests/Shared.Tests/Usings.cs
@@ -0,0 +1 @@
+global using Microsoft.VisualStudio.TestTools.UnitTesting;
\ No newline at end of file