Skip to content

Commit 7eb06aa

Browse files
committed
analyzer fixes
1 parent 09295e1 commit 7eb06aa

27 files changed

+111
-299
lines changed

.editorconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,16 @@ dotnet_diagnostic.MA0112.severity = error
613613
# MA0165: Make interpolated string
614614
dotnet_diagnostic.MA0165.severity = none
615615

616+
#### MSTest rules ####
617+
618+
# MSTEST0015: Test method should not be ignored
619+
dotnet_diagnostic.MSTEST0015.severity = silent
620+
621+
# MSTEST0032: Assertion condition is always true
622+
#
623+
# Helpful in some places, not so much in others (too many to suppress)
624+
dotnet_diagnostic.MSTEST0032.severity = silent
625+
616626
#### .NET Compiler Platform code quality rules ####
617627

618628
# CA1002: Do not expose generic lists

src/Renci.SshNet/SshMessageFactory.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics;
34
using System.Globalization;
5+
using System.Linq;
6+
47
#if NET9_0_OR_GREATER
58
using System.Threading;
69
#endif
@@ -19,7 +22,7 @@ internal sealed class SshMessageFactory
1922
private readonly bool[] _activatedMessagesById;
2023
private readonly Lock _lock = new Lock();
2124

22-
internal static readonly MessageMetadata[] AllMessages = new MessageMetadata[]
25+
private static readonly MessageMetadata[] AllMessages = new MessageMetadata[]
2326
{
2427
new MessageMetadata<KeyExchangeInitMessage>(0, "SSH_MSG_KEXINIT", 20),
2528
new MessageMetadata<NewKeysMessage>(1, "SSH_MSG_NEWKEYS", 21),
@@ -55,24 +58,20 @@ internal sealed class SshMessageFactory
5558
new MessageMetadata<KeyExchangeEcdhReplyMessage>(31, "SSH_MSG_KEX_ECDH_REPLY", 31),
5659
new MessageMetadata<KeyExchangeHybridReplyMessage>(32, "SSH_MSG_KEX_HYBRID_REPLY", 31)
5760
};
61+
5862
private static readonly Dictionary<string, MessageMetadata> MessagesByName = CreateMessagesByNameMapping();
5963

6064
/// <summary>
6165
/// Defines the highest message number that is currently supported.
6266
/// </summary>
63-
internal const byte HighestMessageNumber = 100;
64-
65-
/// <summary>
66-
/// Defines the total number of supported messages.
67-
/// </summary>
68-
internal const int TotalMessageCount = 33;
67+
private static readonly byte HighestMessageNumber = AllMessages.Max(m => m.Number);
6968

7069
/// <summary>
7170
/// Initializes a new instance of the <see cref="SshMessageFactory"/> class.
7271
/// </summary>
7372
public SshMessageFactory()
7473
{
75-
_activatedMessagesById = new bool[TotalMessageCount];
74+
_activatedMessagesById = new bool[AllMessages.Length];
7675
_enabledMessagesByNumber = new MessageMetadata[HighestMessageNumber + 1];
7776
}
7877

@@ -289,7 +288,9 @@ public MessageMetadata(byte id, string name, byte number)
289288

290289
public override Message Create()
291290
{
292-
return new T();
291+
var message = new T();
292+
Debug.Assert(message.MessageNumber == Number);
293+
return message;
293294
}
294295
}
295296
}

test/Renci.SshNet.IntegrationTests/OldIntegrationTests/ForwardedPortLocalTest.cs

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -100,61 +100,12 @@ public void Test_PortForwarding_Local_Stop_Hangs_On_Wait()
100100
}
101101

102102
[TestMethod]
103-
[ExpectedException(typeof(SshConnectionException))]
104103
public void Test_PortForwarding_Local_Without_Connecting()
105104
{
106105
using (var client = new SshClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
107106
{
108107
using var port1 = new ForwardedPortLocal("localhost", 8084, "www.renci.org", 80);
109-
client.AddForwardedPort(port1);
110-
port1.Exception += delegate (object sender, ExceptionEventArgs e)
111-
{
112-
Assert.Fail(e.Exception.ToString());
113-
};
114-
port1.Start();
115-
116-
var test = Parallel.For(0,
117-
100,
118-
counter =>
119-
{
120-
var start = DateTime.Now;
121-
122-
#if NET6_0_OR_GREATER
123-
var httpClient = new HttpClient();
124-
using (var response = httpClient.GetAsync("http://localhost:8084").GetAwaiter().GetResult())
125-
{
126-
var data = ReadStream(response.Content.ReadAsStream());
127-
#else
128-
var request = (HttpWebRequest)WebRequest.Create("http://localhost:8084");
129-
using (var response = (HttpWebResponse)request.GetResponse())
130-
{
131-
var data = ReadStream(response.GetResponseStream());
132-
#endif // NET6_0_OR_GREATER
133-
var end = DateTime.Now;
134-
135-
Debug.WriteLine(string.Format("Request# {2}: Lenght: {0} Time: {1}", data.Length, end - start, counter));
136-
}
137-
});
138-
}
139-
}
140-
141-
private static byte[] ReadStream(Stream stream)
142-
{
143-
var buffer = new byte[1024];
144-
using (var ms = new MemoryStream())
145-
{
146-
while (true)
147-
{
148-
var read = stream.Read(buffer, 0, buffer.Length);
149-
if (read > 0)
150-
{
151-
ms.Write(buffer, 0, read);
152-
}
153-
else
154-
{
155-
return ms.ToArray();
156-
}
157-
}
108+
Assert.ThrowsException<SshConnectionException>(() => client.AddForwardedPort(port1));
158109
}
159110
}
160111
}

test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.ChangeDirectory.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,97 +9,97 @@ public partial class SftpClientTest : IntegrationTestBase
99
{
1010
[TestMethod]
1111
[TestCategory("Sftp")]
12-
[ExpectedException(typeof(SftpPathNotFoundException))]
1312
public void Test_Sftp_ChangeDirectory_Root_Dont_Exists()
1413
{
1514
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
1615
{
1716
sftp.Connect();
18-
sftp.ChangeDirectory("/asdasd");
17+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.ChangeDirectory("/asdasd"));
1918
}
2019
}
2120

2221
[TestMethod]
2322
[TestCategory("Sftp")]
24-
[ExpectedException(typeof(SftpPathNotFoundException))]
2523
public async Task Test_Sftp_ChangeDirectory_Root_Dont_ExistsAsync()
2624
{
2725
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
2826
{
2927
await sftp.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
30-
await sftp.ChangeDirectoryAsync("/asdasd", CancellationToken.None).ConfigureAwait(false);
28+
29+
await Assert.ThrowsExceptionAsync<SftpPathNotFoundException>(
30+
() => sftp.ChangeDirectoryAsync("/asdasd", CancellationToken.None));
3131
}
3232
}
3333

3434
[TestMethod]
3535
[TestCategory("Sftp")]
36-
[ExpectedException(typeof(SftpPathNotFoundException))]
3736
public void Test_Sftp_ChangeDirectory_Root_With_Slash_Dont_Exists()
3837
{
3938
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
4039
{
4140
sftp.Connect();
42-
sftp.ChangeDirectory("/asdasd/");
41+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.ChangeDirectory("/asdasd/"));
4342
}
4443
}
4544

4645
[TestMethod]
4746
[TestCategory("Sftp")]
48-
[ExpectedException(typeof(SftpPathNotFoundException))]
4947
public async Task Test_Sftp_ChangeDirectory_Root_With_Slash_Dont_ExistsAsync()
5048
{
5149
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
5250
{
5351
await sftp.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
54-
await sftp.ChangeDirectoryAsync("/asdasd/", CancellationToken.None).ConfigureAwait(false);
52+
53+
await Assert.ThrowsExceptionAsync<SftpPathNotFoundException>(
54+
() => sftp.ChangeDirectoryAsync("/asdasd/", CancellationToken.None));
5555
}
5656
}
5757

5858
[TestMethod]
5959
[TestCategory("Sftp")]
60-
[ExpectedException(typeof(SftpPathNotFoundException))]
6160
public void Test_Sftp_ChangeDirectory_Subfolder_Dont_Exists()
6261
{
6362
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
6463
{
6564
sftp.Connect();
66-
sftp.ChangeDirectory("/asdasd/sssddds");
65+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.ChangeDirectory("/asdasd/sssddds"));
6766
}
6867
}
6968

7069
[TestMethod]
7170
[TestCategory("Sftp")]
72-
[ExpectedException(typeof(SftpPathNotFoundException))]
7371
public async Task Test_Sftp_ChangeDirectory_Subfolder_Dont_ExistsAsync()
7472
{
7573
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
7674
{
7775
await sftp.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
78-
await sftp.ChangeDirectoryAsync("/asdasd/sssddds", CancellationToken.None).ConfigureAwait(false);
76+
77+
await Assert.ThrowsExceptionAsync<SftpPathNotFoundException>(
78+
() => sftp.ChangeDirectoryAsync("/asdasd/sssddds", CancellationToken.None));
7979
}
8080
}
8181

8282
[TestMethod]
8383
[TestCategory("Sftp")]
84-
[ExpectedException(typeof(SftpPathNotFoundException))]
8584
public void Test_Sftp_ChangeDirectory_Subfolder_With_Slash_Dont_Exists()
8685
{
8786
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
8887
{
8988
sftp.Connect();
90-
sftp.ChangeDirectory("/asdasd/sssddds/");
89+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.ChangeDirectory("/asdasd/sssddds/"));
9190
}
9291
}
9392

9493
[TestMethod]
9594
[TestCategory("Sftp")]
96-
[ExpectedException(typeof(SftpPathNotFoundException))]
9795
public async Task Test_Sftp_ChangeDirectory_Subfolder_With_Slash_Dont_ExistsAsync()
9896
{
9997
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
10098
{
10199
await sftp.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
102-
await sftp.ChangeDirectoryAsync("/asdasd/sssddds/", CancellationToken.None).ConfigureAwait(false);
100+
101+
await Assert.ThrowsExceptionAsync<SftpPathNotFoundException>(
102+
() => sftp.ChangeDirectoryAsync("/asdasd/sssddds/", CancellationToken.None));
103103
}
104104
}
105105

test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.CreateDirectory.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,30 @@ public void Test_Sftp_CreateDirectory_In_Current_Location()
2424

2525
[TestMethod]
2626
[TestCategory("Sftp")]
27-
[ExpectedException(typeof(SftpPermissionDeniedException))]
2827
public void Test_Sftp_CreateDirectory_In_Forbidden_Directory()
2928
{
3029
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, AdminUser.UserName, AdminUser.Password))
3130
{
3231
sftp.Connect();
3332

34-
sftp.CreateDirectory("/sbin/test");
35-
36-
sftp.Disconnect();
33+
Assert.ThrowsException<SftpPermissionDeniedException>(() => sftp.CreateDirectory("/sbin/test"));
3734
}
3835
}
3936

4037
[TestMethod]
4138
[TestCategory("Sftp")]
42-
[ExpectedException(typeof(SftpPathNotFoundException))]
4339
public void Test_Sftp_CreateDirectory_Invalid_Path()
4440
{
4541
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
4642
{
4743
sftp.Connect();
4844

49-
sftp.CreateDirectory("/abcdefg/abcefg");
50-
51-
sftp.Disconnect();
45+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.CreateDirectory("/abcdefg/abcefg"));
5246
}
5347
}
5448

5549
[TestMethod]
5650
[TestCategory("Sftp")]
57-
[ExpectedException(typeof(SshException))]
5851
public void Test_Sftp_CreateDirectory_Already_Exists()
5952
{
6053
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
@@ -63,9 +56,7 @@ public void Test_Sftp_CreateDirectory_Already_Exists()
6356

6457
sftp.CreateDirectory("test");
6558

66-
sftp.CreateDirectory("test");
67-
68-
sftp.Disconnect();
59+
Assert.ThrowsException<SshException>(() => sftp.CreateDirectory("test"));
6960
}
7061
}
7162
}

test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.DeleteDirectory.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,25 @@ public partial class SftpClientTest : IntegrationTestBase
99
{
1010
[TestMethod]
1111
[TestCategory("Sftp")]
12-
[ExpectedException(typeof(SftpPathNotFoundException))]
1312
public void Test_Sftp_DeleteDirectory_Which_Doesnt_Exists()
1413
{
1514
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
1615
{
1716
sftp.Connect();
1817

19-
sftp.DeleteDirectory("abcdef");
20-
21-
sftp.Disconnect();
18+
Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.DeleteDirectory("abcdef"));
2219
}
2320
}
2421

2522
[TestMethod]
2623
[TestCategory("Sftp")]
27-
[ExpectedException(typeof(SftpPermissionDeniedException))]
2824
public void Test_Sftp_DeleteDirectory_Which_No_Permissions()
2925
{
3026
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, AdminUser.UserName, AdminUser.Password))
3127
{
3228
sftp.Connect();
3329

34-
sftp.DeleteDirectory("/usr");
35-
36-
sftp.Disconnect();
30+
Assert.ThrowsException<SftpPermissionDeniedException>(() => sftp.DeleteDirectory("/usr"));
3731
}
3832
}
3933

@@ -55,16 +49,13 @@ public void Test_Sftp_DeleteDirectory()
5549
[TestMethod]
5650
[TestCategory("Sftp")]
5751
[Description("Test passing null to DeleteDirectory.")]
58-
[ExpectedException(typeof(ArgumentNullException))]
5952
public void Test_Sftp_DeleteDirectory_Null()
6053
{
6154
using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
6255
{
6356
sftp.Connect();
6457

65-
sftp.DeleteDirectory(null);
66-
67-
sftp.Disconnect();
58+
Assert.ThrowsException<ArgumentNullException>(() => sftp.DeleteDirectory(null));
6859
}
6960
}
7061
}

0 commit comments

Comments
 (0)