@@ -103,20 +103,22 @@ public void RetrievingTheStatusOfADirectoryThrows()
103
103
}
104
104
}
105
105
106
- [ Fact ]
107
- public void CanRetrieveTheStatusOfTheWholeWorkingDirectory ( )
106
+ [ Theory ]
107
+ [ InlineData ( false , 0 ) ]
108
+ [ InlineData ( true , 5 ) ]
109
+ public void CanRetrieveTheStatusOfTheWholeWorkingDirectory ( bool includeUnaltered , int unalteredCount )
108
110
{
109
111
string path = SandboxStandardTestRepo ( ) ;
110
112
using ( var repo = new Repository ( path ) )
111
113
{
112
114
const string file = "modified_staged_file.txt" ;
113
115
114
- RepositoryStatus status = repo . RetrieveStatus ( ) ;
116
+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
115
117
116
118
Assert . Equal ( FileStatus . Staged , status [ file ] . State ) ;
117
119
118
120
Assert . NotNull ( status ) ;
119
- Assert . Equal ( 6 , status . Count ( ) ) ;
121
+ Assert . Equal ( 6 + unalteredCount , status . Count ( ) ) ;
120
122
Assert . True ( status . IsDirty ) ;
121
123
122
124
Assert . Equal ( "new_untracked_file.txt" , status . Untracked . Select ( s => s . FilePath ) . Single ( ) ) ;
@@ -131,11 +133,11 @@ public void CanRetrieveTheStatusOfTheWholeWorkingDirectory()
131
133
132
134
Assert . Equal ( FileStatus . Staged | FileStatus . Modified , repo . RetrieveStatus ( file ) ) ;
133
135
134
- RepositoryStatus status2 = repo . RetrieveStatus ( ) ;
136
+ RepositoryStatus status2 = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
135
137
Assert . Equal ( FileStatus . Staged | FileStatus . Modified , status2 [ file ] . State ) ;
136
138
137
139
Assert . NotNull ( status2 ) ;
138
- Assert . Equal ( 6 , status2 . Count ( ) ) ;
140
+ Assert . Equal ( 6 + unalteredCount , status2 . Count ( ) ) ;
139
141
Assert . True ( status2 . IsDirty ) ;
140
142
141
143
Assert . Equal ( "new_untracked_file.txt" , status2 . Untracked . Select ( s => s . FilePath ) . Single ( ) ) ;
@@ -242,14 +244,16 @@ public void CanDetectedVariousKindsOfRenaming()
242
244
}
243
245
}
244
246
245
- [ Fact ]
246
- public void CanRetrieveTheStatusOfANewRepository ( )
247
+ [ Theory ]
248
+ [ InlineData ( true ) ]
249
+ [ InlineData ( false ) ]
250
+ public void CanRetrieveTheStatusOfANewRepository ( bool includeUnaltered )
247
251
{
248
252
string repoPath = InitNewRepository ( ) ;
249
253
250
254
using ( var repo = new Repository ( repoPath ) )
251
255
{
252
- RepositoryStatus status = repo . RetrieveStatus ( ) ;
256
+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
253
257
Assert . NotNull ( status ) ;
254
258
Assert . Equal ( 0 , status . Count ( ) ) ;
255
259
Assert . False ( status . IsDirty ) ;
@@ -592,5 +596,43 @@ public void RetrievingTheStatusHonorsAssumedUnchangedMarkedIndexEntries()
592
596
Assert . Equal ( "hello.txt" , status . Modified . Single ( ) . FilePath ) ;
593
597
}
594
598
}
599
+
600
+ [ Fact ]
601
+ public void CanIncludeStatusOfUnalteredFiles ( )
602
+ {
603
+ var path = SandboxStandardTestRepo ( ) ;
604
+ string [ ] unalteredPaths = {
605
+ "1.txt" ,
606
+ "1" + Path . DirectorySeparatorChar + "branch_file.txt" ,
607
+ "branch_file.txt" ,
608
+ "new.txt" ,
609
+ "README" ,
610
+ } ;
611
+
612
+ using ( var repo = new Repository ( path ) )
613
+ {
614
+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = true } ) ;
615
+
616
+ Assert . Equal ( unalteredPaths . Length , status . Unaltered . Count ( ) ) ;
617
+ Assert . Equal ( unalteredPaths , status . Unaltered . OrderBy ( s => s . FilePath ) . Select ( s => s . FilePath ) . ToArray ( ) ) ;
618
+ }
619
+ }
620
+
621
+ [ Fact ]
622
+ public void UnalteredFilesDontMarkIndexAsDirty ( )
623
+ {
624
+ var path = SandboxStandardTestRepo ( ) ;
625
+
626
+ using ( var repo = new Repository ( path ) )
627
+ {
628
+ repo . Reset ( ResetMode . Hard ) ;
629
+ repo . RemoveUntrackedFiles ( ) ;
630
+
631
+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = true } ) ;
632
+
633
+ Assert . Equal ( false , status . IsDirty ) ;
634
+ Assert . Equal ( 9 , status . Count ( ) ) ;
635
+ }
636
+ }
595
637
}
596
638
}
0 commit comments