@@ -55,12 +55,13 @@ public override void AppendAllText(string path, string contents, Encoding encodi
55
55
if ( ! mockFileDataAccessor . FileExists ( path ) )
56
56
{
57
57
VerifyDirectoryExists ( path ) ;
58
- mockFileDataAccessor . AddFile ( path , new MockFileData ( contents , encoding ) ) ;
58
+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( new MockFileData ( contents , encoding ) , TimeAdjustments . All ) ) ;
59
59
}
60
60
else
61
61
{
62
62
var file = mockFileDataAccessor . GetFile ( path ) ;
63
63
file . CheckFileAccess ( path , FileAccess . Write ) ;
64
+ mockFileDataAccessor . AdjustTimes ( file , TimeAdjustments . LastAccessTime | TimeAdjustments . LastWriteTime ) ;
64
65
var bytesToAppend = encoding . GetBytes ( contents ) ;
65
66
file . Contents = file . Contents . Concat ( bytesToAppend ) . ToArray ( ) ;
66
67
}
@@ -124,7 +125,7 @@ public override void Copy(string sourceFileName, string destFileName, bool overw
124
125
var sourceFileData = mockFileDataAccessor . GetFile ( sourceFileName ) ;
125
126
sourceFileData . CheckFileAccess ( sourceFileName , FileAccess . Read ) ;
126
127
var destFileData = new MockFileData ( sourceFileData ) ;
127
- destFileData . CreationTime = destFileData . LastAccessTime = DateTime . Now ;
128
+ mockFileDataAccessor . AdjustTimes ( destFileData , TimeAdjustments . CreationTime | TimeAdjustments . LastAccessTime ) ;
128
129
mockFileDataAccessor . AddFile ( destFileName , destFileData ) ;
129
130
}
130
131
@@ -151,6 +152,7 @@ private Stream CreateInternal(string path, FileAccess access, FileOptions option
151
152
VerifyDirectoryExists ( path ) ;
152
153
153
154
var mockFileData = new MockFileData ( new byte [ 0 ] ) ;
155
+ mockFileDataAccessor . AdjustTimes ( mockFileData , TimeAdjustments . All ) ;
154
156
mockFileDataAccessor . AddFile ( path , mockFileData ) ;
155
157
return OpenInternal ( path , FileMode . Open , access , options ) ;
156
158
}
@@ -188,7 +190,7 @@ public override IFileSystemInfo CreateSymbolicLink(string path, string pathToTar
188
190
var sourceFileData = mockFileDataAccessor . GetFile ( pathToTarget ) ;
189
191
sourceFileData . CheckFileAccess ( pathToTarget , FileAccess . Read ) ;
190
192
var destFileData = new MockFileData ( new byte [ 0 ] ) ;
191
- destFileData . CreationTime = destFileData . LastAccessTime = DateTime . Now ;
193
+ mockFileDataAccessor . AdjustTimes ( destFileData , TimeAdjustments . CreationTime | TimeAdjustments . LastAccessTime ) ;
192
194
destFileData . LinkTarget = pathToTarget ;
193
195
mockFileDataAccessor . AddFile ( path , destFileData ) ;
194
196
@@ -436,7 +438,7 @@ public override void Move(string sourceFileName, string destFileName)
436
438
VerifyDirectoryExists ( destFileName ) ;
437
439
438
440
mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
439
- mockFileDataAccessor . AddFile ( destFileName , new MockFileData ( sourceFile ) ) ;
441
+ mockFileDataAccessor . AddFile ( destFileName , mockFileDataAccessor . AdjustTimes ( new MockFileData ( sourceFile ) , TimeAdjustments . LastAccessTime ) ) ;
440
442
}
441
443
442
444
#if FEATURE_FILE_MOVE_WITH_OVERWRITE
@@ -480,9 +482,9 @@ public override void Move(string sourceFileName, string destFileName, bool overw
480
482
throw CommonExceptions . ProcessCannotAccessFileInUse ( ) ;
481
483
}
482
484
VerifyDirectoryExists ( destFileName ) ;
483
-
485
+
484
486
mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
485
- mockFileDataAccessor . AddFile ( destFileName , new MockFileData ( sourceFile ) ) ;
487
+ mockFileDataAccessor . AddFile ( destFileName , mockFileDataAccessor . AdjustTimes ( new MockFileData ( sourceFile ) , TimeAdjustments . LastAccessTime ) ) ;
486
488
}
487
489
#endif
488
490
@@ -539,6 +541,12 @@ private Stream OpenInternal(
539
541
540
542
var mockFileData = mockFileDataAccessor . GetFile ( path ) ;
541
543
mockFileData . CheckFileAccess ( path , access ) ;
544
+ var timeAdjustments = TimeAdjustments . LastAccessTime ;
545
+ if ( access . HasFlag ( FileAccess . Write ) )
546
+ {
547
+ timeAdjustments |= TimeAdjustments . LastWriteTime ;
548
+ }
549
+ mockFileDataAccessor . AdjustTimes ( mockFileData , timeAdjustments ) ;
542
550
543
551
return new MockFileStream ( mockFileDataAccessor , path , mode , access , options ) ;
544
552
}
@@ -578,7 +586,9 @@ public override byte[] ReadAllBytes(string path)
578
586
throw CommonExceptions . FileNotFound ( path ) ;
579
587
}
580
588
mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
581
- return mockFileDataAccessor . GetFile ( path ) . Contents . ToArray ( ) ;
589
+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
590
+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
591
+ return fileData . Contents . ToArray ( ) ;
582
592
}
583
593
584
594
/// <inheritdoc />
@@ -590,10 +600,11 @@ public override string[] ReadAllLines(string path)
590
600
{
591
601
throw CommonExceptions . FileNotFound ( path ) ;
592
602
}
593
- mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
603
+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
604
+ fileData . CheckFileAccess ( path , FileAccess . Read ) ;
605
+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
594
606
595
- return mockFileDataAccessor
596
- . GetFile ( path )
607
+ return fileData
597
608
. TextContents
598
609
. SplitLines ( ) ;
599
610
}
@@ -613,9 +624,11 @@ public override string[] ReadAllLines(string path, Encoding encoding)
613
624
throw CommonExceptions . FileNotFound ( path ) ;
614
625
}
615
626
616
- mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
627
+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
628
+ fileData . CheckFileAccess ( path , FileAccess . Read ) ;
629
+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
617
630
618
- using ( var ms = new MemoryStream ( mockFileDataAccessor . GetFile ( path ) . Contents ) )
631
+ using ( var ms = new MemoryStream ( fileData . Contents ) )
619
632
using ( var sr = new StreamReader ( ms , encoding ) )
620
633
{
621
634
return sr . ReadToEnd ( ) . SplitLines ( ) ;
@@ -713,6 +726,7 @@ public override void SetAccessControl(string path, FileSecurity fileSecurity)
713
726
}
714
727
715
728
var fileData = mockFileDataAccessor . GetFile ( path ) ;
729
+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
716
730
fileData . AccessControl = fileSecurity ;
717
731
}
718
732
@@ -736,6 +750,7 @@ public override void SetAttributes(string path, FileAttributes fileAttributes)
736
750
}
737
751
else
738
752
{
753
+ mockFileDataAccessor . AdjustTimes ( possibleFileData , TimeAdjustments . LastAccessTime ) ;
739
754
possibleFileData . Attributes = fileAttributes ;
740
755
}
741
756
}
@@ -824,7 +839,7 @@ public override void WriteAllBytes(string path, byte[] bytes)
824
839
mockFileDataAccessor . PathVerifier . IsLegalAbsoluteOrRelative ( path , "path" ) ;
825
840
VerifyDirectoryExists ( path ) ;
826
841
827
- mockFileDataAccessor . AddFile ( path , new MockFileData ( bytes . ToArray ( ) ) ) ;
842
+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( new MockFileData ( bytes . ToArray ( ) ) , TimeAdjustments . All ) ) ;
828
843
}
829
844
830
845
/// <summary>
@@ -1094,7 +1109,7 @@ public override void WriteAllText(string path, string contents, Encoding encodin
1094
1109
VerifyDirectoryExists ( path ) ;
1095
1110
1096
1111
MockFileData data = contents == null ? new MockFileData ( new byte [ 0 ] ) : new MockFileData ( contents , encoding ) ;
1097
- mockFileDataAccessor . AddFile ( path , data ) ;
1112
+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( data , TimeAdjustments . All ) ) ;
1098
1113
}
1099
1114
1100
1115
internal static string ReadAllBytes ( byte [ ] contents , Encoding encoding )
@@ -1110,6 +1125,7 @@ private string ReadAllTextInternal(string path, Encoding encoding)
1110
1125
{
1111
1126
var mockFileData = mockFileDataAccessor . GetFile ( path ) ;
1112
1127
mockFileData . CheckFileAccess ( path , FileAccess . Read ) ;
1128
+ mockFileDataAccessor . AdjustTimes ( mockFileData , TimeAdjustments . LastAccessTime ) ;
1113
1129
return ReadAllBytes ( mockFileData . Contents , encoding ) ;
1114
1130
}
1115
1131
0 commit comments