Skip to content

Conversation

Copy link

Copilot AI commented Nov 29, 2025

Addresses code review feedback: TcpListener in ReadLineAsync_AfterDispose_ReturnsNull test was not wrapped in try-finally, risking resource leaks if assertions fail.

Changes

  • Added try-finally block to ensure TcpListener.Stop() is called on all code paths
  • Matches disposal pattern used by other tests in TcpClientNmeaStreamReaderTests
// Before: listener could leak if test fails
TcpListener listener = new(IPAddress.Loopback, 0);
listener.Start();
// ... test code ...
listener.Stop();

// After: listener always stopped
try
{
    // ... test code ...
}
finally
{
    await reader.DisposeAsync();
    listener.Stop();
}

Note: Double dispose of reader is safe—existing test DisposeAsync_CanBeCalledMultipleTimes verifies idempotency.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Add changes based on feedback for .NET 10 updates Fix TcpListener disposal in ReadLineAsync_AfterDispose_ReturnsNull test Nov 29, 2025
@HowardvanRooijen HowardvanRooijen marked this pull request as ready for review November 29, 2025 10:51
Copilot AI review requested due to automatic review settings November 29, 2025 10:51
@HowardvanRooijen HowardvanRooijen merged commit 76ec9b7 into feature/dotnet-10-update Nov 29, 2025
1 check passed
@HowardvanRooijen HowardvanRooijen deleted the copilot/sub-pr-267-another-one branch November 29, 2025 10:51
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a resource leak risk in the ReadLineAsync_AfterDispose_ReturnsNull test by adding proper resource disposal. The test previously lacked a try-finally block, which could leave the TcpListener running if test assertions failed.

  • Wraps test code in try-finally block to guarantee TcpListener.Stop() is called
  • Adds defensive reader.DisposeAsync() call in finally block for consistency
  • Aligns resource disposal pattern with all other tests in the class
Comments suppressed due to low confidence (11)

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:20

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:44

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:81

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:117

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:186

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:214

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:253

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:286

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:317

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:361

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

Solutions/Ais.Net.Receiver.Tests/TcpClientNmeaStreamReaderTests.cs:396

  • Disposable 'TcpListener' is created but not disposed.
        TcpListener listener = new(IPAddress.Loopback, 0);

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants