Skip to content

Commit 1c7166a

Browse files
authored
Update tests for SetLastAccessTime(Utc) to also verify the time component and the Kind of the DateTime value returned by GetLastAccessTime(Utc). (#1198)
1 parent 70f58b7 commit 1c7166a

File tree

4 files changed

+49
-22
lines changed

4 files changed

+49
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Renci.SshNet.IntegrationTests.Common
2+
{
3+
public static class DateTimeAssert
4+
{
5+
public static void AreEqual(DateTime expected, DateTime actual)
6+
{
7+
Assert.AreEqual(expected, actual, $"Expected {expected:o}, but was {actual:o}.");
8+
Assert.AreEqual(expected.Kind, actual.Kind);
9+
}
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Renci.SshNet.IntegrationTests.Common
2+
{
3+
public static class DateTimeExtensions
4+
{
5+
public static DateTime TruncateToWholeSeconds(this DateTime dateTime)
6+
{
7+
return dateTime.AddMilliseconds(-dateTime.Millisecond)
8+
.AddMicroseconds(-dateTime.Microsecond)
9+
.AddTicks(-(dateTime.Nanosecond / 100));
10+
}
11+
}
12+
}

src/Renci.SshNet.IntegrationTests/SftpTests.cs

+20-22
Original file line numberDiff line numberDiff line change
@@ -6153,15 +6153,15 @@ public void Sftp_SetLastAccessTime()
61536153
try
61546154
{
61556155
var time = client.GetLastAccessTime(testFilePath);
6156-
Assert.AreEqual(currentTime.Year, time.Year);
6157-
Assert.AreEqual(currentTime.Month, time.Month);
6158-
Assert.AreEqual(currentTime.Day, time.Day);
61596156

6160-
var newTime = new DateTime(1986, 03, 15, 01, 02, 03);
6157+
DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time);
6158+
6159+
var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local);
61616160

61626161
client.SetLastAccessTime(testFilePath, newTime);
61636162
time = client.GetLastAccessTime(testFilePath);
6164-
Assert.AreEqual(newTime, time);
6163+
6164+
DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time);
61656165
}
61666166
finally
61676167
{
@@ -6185,16 +6185,15 @@ public void Sftp_SetLastAccessTimeUtc()
61856185
try
61866186
{
61876187
var time = client.GetLastAccessTimeUtc(testFilePath);
6188-
Assert.AreEqual(currentTime.Year, time.Year);
6189-
Assert.AreEqual(currentTime.Month, time.Month);
6190-
Assert.AreEqual(currentTime.Day, time.Day);
61916188

6192-
var newTime = new DateTime(1986, 03, 15, 01, 02, 03);
6193-
DateTime.SpecifyKind(newTime, DateTimeKind.Utc);
6189+
DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time);
6190+
6191+
var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Utc);
61946192

61956193
client.SetLastAccessTimeUtc(testFilePath, newTime);
61966194
time = client.GetLastAccessTimeUtc(testFilePath);
6197-
Assert.AreEqual(newTime, time);
6195+
6196+
DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time);
61986197
}
61996198
finally
62006199
{
@@ -6217,15 +6216,15 @@ public void Sftp_SetLastWriteTime()
62176216
try
62186217
{
62196218
var time = client.GetLastWriteTime(testFilePath);
6220-
Assert.AreEqual(currentTime.Year, time.Year);
6221-
Assert.AreEqual(currentTime.Month, time.Month);
6222-
Assert.AreEqual(currentTime.Day, time.Day);
62236219

6224-
var newTime = new DateTime(1986, 03, 15, 01, 02, 03);
6220+
DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time);
6221+
6222+
var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local);
62256223

62266224
client.SetLastWriteTime(testFilePath, newTime);
62276225
time = client.GetLastWriteTime(testFilePath);
6228-
Assert.AreEqual(newTime, time);
6226+
6227+
DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time);
62296228
}
62306229
finally
62316230
{
@@ -6248,16 +6247,15 @@ public void Sftp_SetLastWriteTimeUtc()
62486247
try
62496248
{
62506249
var time = client.GetLastWriteTimeUtc(testFilePath);
6251-
Assert.AreEqual(currentTime.Year, time.Year);
6252-
Assert.AreEqual(currentTime.Month, time.Month);
6253-
Assert.AreEqual(currentTime.Day, time.Day);
62546250

6255-
var newTime = new DateTime(1986, 03, 15, 01, 02, 03);
6256-
DateTime.SpecifyKind(newTime, DateTimeKind.Utc);
6251+
DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time);
6252+
6253+
var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Utc);
62576254

62586255
client.SetLastWriteTimeUtc(testFilePath, newTime);
62596256
time = client.GetLastWriteTimeUtc(testFilePath);
6260-
Assert.AreEqual(newTime, time);
6257+
6258+
DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time);
62616259
}
62626260
finally
62636261
{

src/Renci.SshNet.sln

+6
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Renci.SshNet.IntegrationTes
4848
EndProject
4949
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Renci.SshNet.TestTools.OpenSSH", "Renci.SshNet.TestTools.OpenSSH\Renci.SshNet.TestTools.OpenSSH.csproj", "{78239046-2019-494E-B6EC-240AF787E4D0}"
5050
EndProject
51+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E8A42832-1183-4E66-9141-DEBA662374DF}"
52+
ProjectSection(SolutionItems) = preProject
53+
global.json = global.json
54+
EndProjectSection
55+
EndProject
5156
Global
5257
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5358
Debug|Any CPU = Debug|Any CPU
@@ -158,6 +163,7 @@ Global
158163
{94EE3919-19FA-4D9B-8DA9-249050B15232} = {2D6CAE62-D053-476F-9BDD-2B1F27FA9C5D}
159164
{A6C3FFD3-16A5-44D3-8C1F-3613D6DD17D1} = {2D6CAE62-D053-476F-9BDD-2B1F27FA9C5D}
160165
{D21A4D03-0AC2-4613-BB6D-74D2D16A72CC} = {04E8CC26-116E-4116-9558-7ED542548E70}
166+
{E8A42832-1183-4E66-9141-DEBA662374DF} = {04E8CC26-116E-4116-9558-7ED542548E70}
161167
EndGlobalSection
162168
GlobalSection(ExtensibilityGlobals) = postSolution
163169
SolutionGuid = {BAD6019D-4AF7-4E15-99A0-8036E16FC0E5}

0 commit comments

Comments
 (0)