Skip to content

Commit 29a14f8

Browse files
committed
fix: Test and coverage for net462 TFM
* Update test project to `net481` * Update GitHub action for net481 unit tests with coverage report
1 parent 99d1941 commit 29a14f8

5 files changed

Lines changed: 31 additions & 44 deletions

File tree

.github/workflows/build.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,8 @@ jobs:
112112
- name: Build solution
113113
run: dotnet build MailMergeLib.slnx /verbosity:minimal /t:rebuild /p:configuration=release /p:IncludeSymbols=true /p:ContinuousIntegrationBuild=true /p:Version=${{ steps.version.outputs.VERSION }} /p:FileVersion=${{ steps.version.outputs.FILE_VERSION }}
114114

115-
- name: Run tests (net462)
116-
# AltCover fails on .NET Framework with stack overflow issue, so exclude coverage for now
117-
run: dotnet test --framework net462 --no-build --configuration release MailMergeLib.slnx
118-
115+
- name: Run tests (net481)
116+
run: dotnet test --framework net481 --no-build --configuration release MailMergeLib.slnx /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCoverStrongNameKey="..\MailMergeLib\MailMergeLib.snk" /p:AltCoverAssemblyFilter="MailMergeLib" /p:AltCoverLineCover="true" --test-adapter-path ".\MailMergeLib.Tests\bin\release\net481"
119117
- name: Run tests (net10.0)
120118
run: dotnet test --framework net10.0 --no-build --configuration release MailMergeLib.slnx /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCoverStrongNameKey="..\MailMergeLib\MailMergeLib.snk" /p:AltCoverAssemblyFilter="MailMergeLib" /p:AltCoverLineCover="true"
121119

Src/MailMergeLib.Tests/MailMergeLib.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<Description>Test project for MailMergeLib</Description>
55
<AssemblyTitle>MailMergeLib.UnitTest</AssemblyTitle>
6-
<TargetFrameworks>net462;net10.0</TargetFrameworks>
6+
<TargetFrameworks>net481;net10.0</TargetFrameworks>
77
<GenerateDocumentationFile>false</GenerateDocumentationFile>
88
<AssemblyName>MailMergeLib.Tests</AssemblyName>
99
<AssemblyOriginatorKeyFile>../MailMergeLib/MailMergeLib.snk</AssemblyOriginatorKeyFile>

Src/MailMergeLib.Tests/Sender_EventsAndSend.cs

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ namespace MailMergeLib.Tests;
1616
[TestFixture]
1717
public class Sender_EventsAndSend
1818
{
19+
#if NET10_0_OR_GREATER
20+
private static readonly System.Threading.Lock _locker = new();
21+
#else
1922
private static readonly object _locker = new();
23+
#endif
2024
private static SimpleSmtpServer? _server;
2125
private Settings _settings = new();
2226

@@ -123,7 +127,7 @@ public void CancelSendOperationWithDelay()
123127

124128
mms.SendCancel(500);
125129
Assert.ThrowsAsync<TaskCanceledException>(() => mms.SendAsync(mmm, anyData));
126-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
130+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
127131
}
128132

129133
[Test]
@@ -149,7 +153,7 @@ await Task.Factory.StartNew(async () => await mms.SendAsync(mmm, anyData)),
149153

150154
Assert.Throws<AggregateException>(() => { Task.WaitAll(tasks); });
151155

152-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
156+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
153157
}
154158

155159
[Test]
@@ -185,13 +189,13 @@ void OnSmtpDisconnected(object? sender, MailSenderSmtpClientEventArgs args)
185189

186190
SendMail(OnAfterSend, OnSmtpConnected, OnSmtpDisconnected);
187191

188-
Assert.Multiple(() =>
192+
using (Assert.EnterMultipleScope())
189193
{
190194
Assert.That(connectedCounter, Is.EqualTo(1));
191195
Assert.That(disconnectedCounter, Is.EqualTo(1));
192196
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(1));
193197
Assert.That(usedClientConfig?.Name, Is.EqualTo(_settings.SenderConfig.SmtpClientConfig[0].Name));
194-
});
198+
}
195199

196200
Console.WriteLine($"Sending mail with smtp config name '{usedClientConfig?.Name}' passed.\n\n");
197201
Console.WriteLine(_server?.ReceivedEmail[0].Data);
@@ -210,11 +214,11 @@ void OnAfterSend(object? sender, MailSenderAfterSendEventArgs args)
210214
_settings.SenderConfig.SmtpClientConfig[0]
211215
.SmtpPort++; // set wrong server port, so that backup config should be taken
212216
SendMail(OnAfterSend);
213-
Assert.Multiple(() =>
217+
using (Assert.EnterMultipleScope())
214218
{
215219
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(1));
216220
Assert.That(usedClientConfig?.Name, Is.EqualTo(_settings.SenderConfig.SmtpClientConfig[1].Name));
217-
});
221+
}
218222

219223
Console.WriteLine($"Sending mail with smtp config name '{usedClientConfig?.Name}' passed.\n\n");
220224
Console.WriteLine(_server?.ReceivedEmail[0].Data);
@@ -239,11 +243,11 @@ void OnSendFailure(object? sender, MailSenderSendFailureEventArgs args)
239243
.SmtpPort++; // set wrong server port, so that backup config should be taken
240244
_settings.SenderConfig.SmtpClientConfig[1].SmtpPort++; // set wrong server port, so that send will fail
241245
Assert.Catch(() => SendMail(onSendFailure: OnSendFailure));
242-
Assert.Multiple(() =>
246+
using (Assert.EnterMultipleScope())
243247
{
244248
Assert.That(usedClientConfig?.Name, Is.EqualTo(_settings.SenderConfig.SmtpClientConfig[1].Name));
245-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
246-
});
249+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
250+
}
247251
}
248252

249253
private class Recipient
@@ -336,7 +340,7 @@ public async Task AllSenderEventsSingleMail(string somePlaceholder, bool withPar
336340

337341
Assert.That(actualEvents, Has.Count.EqualTo(expectedEvents.Count));
338342
// sequence of sync sending is predefined
339-
while (actualEvents.Count > 0)
343+
while (actualEvents.IsEmpty)
340344
{
341345
expectedEvents.TryPop(out var expected);
342346
actualEvents.TryPop(out var actual);
@@ -476,7 +480,7 @@ public async Task AllSenderEventsMailMerge(string somePlaceholder, bool withPars
476480

477481
Assert.That(actualEvents, Has.Count.EqualTo(expectedEvents.Count));
478482
// sequence of sync sending is predefined
479-
while (actualEvents.Count > 0)
483+
while (actualEvents.IsEmpty)
480484
{
481485
expectedEvents.TryPop(out var expected);
482486
actualEvents.TryPop(out var actual);
@@ -596,13 +600,13 @@ public void Send_With_And_Without_MailMergeMessageException(bool throwException,
596600

597601
if (throwException)
598602
{
599-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
603+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
600604
}
601605
else
602606
{
603607
if (setMimeMessageToNull)
604608
{
605-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
609+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
606610
}
607611
else
608612
{
@@ -639,13 +643,13 @@ public void Send_With_And_Without_MailMergeMessageException(bool throwException,
639643

640644
if (throwException)
641645
{
642-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
646+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
643647
}
644648
else
645649
{
646650
if (setMimeMessageToNull)
647651
{
648-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
652+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
649653
}
650654
else
651655
{
@@ -688,13 +692,13 @@ public void Send_With_And_Without_MailMergeMessageException(bool throwException,
688692

689693
if (throwException)
690694
{
691-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
695+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
692696
}
693697
else
694698
{
695699
if (setMimeMessageToNull)
696700
{
697-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
701+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
698702
}
699703
else
700704
{
@@ -733,13 +737,13 @@ public void Send_With_And_Without_MailMergeMessageException(bool throwException,
733737

734738
if (throwException)
735739
{
736-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
740+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
737741
}
738742
else
739743
{
740744
if (setMimeMessageToNull)
741745
{
742-
Assert.That(_server?.ReceivedEmailCount, Is.EqualTo(0));
746+
Assert.That(_server?.ReceivedEmailCount, Is.Zero);
743747
}
744748
else
745749
{
@@ -776,11 +780,11 @@ public async Task SendSyncAndAsyncPerformance(int numOfRecipients)
776780
sw.Stop();
777781
Console.WriteLine($"Time to send {recipients.Count} messages sync: {sw.ElapsedMilliseconds} milliseconds.");
778782
Console.WriteLine();
779-
Assert.Multiple(() =>
783+
using (Assert.EnterMultipleScope())
780784
{
781785
Assert.That(_server?.ReceivedEmail.Length, Is.EqualTo(recipients.Count));
782786
Assert.That(mms.IsBusy, Is.False);
783-
});
787+
}
784788

785789
sw.Reset();
786790
_server?.ClearReceivedEmail();
@@ -799,11 +803,11 @@ public async Task SendSyncAndAsyncPerformance(int numOfRecipients)
799803
Console.WriteLine(
800804
$"{numOfSmtpClientsUsed} tasks (and SmtpClients) used for sending async\n(max {mms.Config.MaxNumOfSmtpClients} were configured).");
801805

802-
Assert.Multiple(() =>
806+
using (Assert.EnterMultipleScope())
803807
{
804808
Assert.That(_server?.ReceivedEmail.Length, Is.EqualTo(recipients.Count));
805809
Assert.That(mms.IsBusy, Is.False);
806-
});
810+
}
807811
}
808812

809813
#region *** Test setup ***

Src/MailMergeLib.Tests/app.config

Lines changed: 0 additions & 15 deletions
This file was deleted.

Src/MailMergeLib/MailMergeSender.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ await Task.Run(async () =>
255255

256256
await SendMimeMessageAsync(smtpClient, mimeMessage, smtpClientConfig).ConfigureAwait(false);
257257
smtpClient.ProtocolLogger?.Dispose();
258-
smtpClient.Disconnect(true, _cancellationTokenSource.Token);
258+
await smtpClient.DisconnectAsync(true, _cancellationTokenSource.Token);
259259

260260
}, _cancellationTokenSource.Token).ConfigureAwait(false);
261261
}

0 commit comments

Comments
 (0)