@@ -103,20 +103,22 @@ public void RetrievingTheStatusOfADirectoryThrows()
103103 }
104104 }
105105
106- [ Fact ]
107- public void CanRetrieveTheStatusOfTheWholeWorkingDirectory ( )
106+ [ Theory ]
107+ [ InlineData ( false , 0 ) ]
108+ [ InlineData ( true , 5 ) ]
109+ public void CanRetrieveTheStatusOfTheWholeWorkingDirectory ( bool includeUnaltered , int unalteredCount )
108110 {
109111 string path = SandboxStandardTestRepo ( ) ;
110112 using ( var repo = new Repository ( path ) )
111113 {
112114 const string file = "modified_staged_file.txt" ;
113115
114- RepositoryStatus status = repo . RetrieveStatus ( ) ;
116+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
115117
116118 Assert . Equal ( FileStatus . Staged , status [ file ] . State ) ;
117119
118120 Assert . NotNull ( status ) ;
119- Assert . Equal ( 6 , status . Count ( ) ) ;
121+ Assert . Equal ( 6 + unalteredCount , status . Count ( ) ) ;
120122 Assert . True ( status . IsDirty ) ;
121123
122124 Assert . Equal ( "new_untracked_file.txt" , status . Untracked . Select ( s => s . FilePath ) . Single ( ) ) ;
@@ -131,11 +133,11 @@ public void CanRetrieveTheStatusOfTheWholeWorkingDirectory()
131133
132134 Assert . Equal ( FileStatus . Staged | FileStatus . Modified , repo . RetrieveStatus ( file ) ) ;
133135
134- RepositoryStatus status2 = repo . RetrieveStatus ( ) ;
136+ RepositoryStatus status2 = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
135137 Assert . Equal ( FileStatus . Staged | FileStatus . Modified , status2 [ file ] . State ) ;
136138
137139 Assert . NotNull ( status2 ) ;
138- Assert . Equal ( 6 , status2 . Count ( ) ) ;
140+ Assert . Equal ( 6 + unalteredCount , status2 . Count ( ) ) ;
139141 Assert . True ( status2 . IsDirty ) ;
140142
141143 Assert . Equal ( "new_untracked_file.txt" , status2 . Untracked . Select ( s => s . FilePath ) . Single ( ) ) ;
@@ -242,14 +244,16 @@ public void CanDetectedVariousKindsOfRenaming()
242244 }
243245 }
244246
245- [ Fact ]
246- public void CanRetrieveTheStatusOfANewRepository ( )
247+ [ Theory ]
248+ [ InlineData ( true ) ]
249+ [ InlineData ( false ) ]
250+ public void CanRetrieveTheStatusOfANewRepository ( bool includeUnaltered )
247251 {
248252 string repoPath = InitNewRepository ( ) ;
249253
250254 using ( var repo = new Repository ( repoPath ) )
251255 {
252- RepositoryStatus status = repo . RetrieveStatus ( ) ;
256+ RepositoryStatus status = repo . RetrieveStatus ( new StatusOptions ( ) { IncludeUnaltered = includeUnaltered } ) ;
253257 Assert . NotNull ( status ) ;
254258 Assert . Equal ( 0 , status . Count ( ) ) ;
255259 Assert . False ( status . IsDirty ) ;
@@ -592,5 +596,43 @@ public void RetrievingTheStatusHonorsAssumedUnchangedMarkedIndexEntries()
592596 Assert . Equal ( "hello.txt" , status . Modified . Single ( ) . FilePath ) ;
593597 }
594598 }
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+ }
595637 }
596638}
0 commit comments