@@ -20,6 +20,26 @@ public void RetrievingSubmoduleForNormalDirectoryReturnsNull()
2020 }
2121 }
2222
23+ [ Fact ]
24+ public void RetrievingSubmoduleInBranchShouldWork ( )
25+ {
26+ var path = SandboxSubmoduleTestRepo ( ) ;
27+ using ( var repo = new Repository ( path ) )
28+ {
29+ var submodule = repo . Submodules [ "sm_branch_only" ] ;
30+ Assert . Null ( submodule ) ;
31+
32+ repo . Checkout ( "dev" , new CheckoutOptions { CheckoutModifiers = CheckoutModifiers . Force } ) ;
33+ submodule = repo . Submodules [ "sm_branch_only" ] ;
34+ Assert . NotNull ( submodule ) ;
35+ Assert . NotEqual ( SubmoduleStatus . Unmodified , submodule . RetrieveStatus ( ) ) ;
36+
37+ repo . Checkout ( "master" , new CheckoutOptions { CheckoutModifiers = CheckoutModifiers . Force } ) ;
38+ submodule = repo . Submodules [ "sm_branch_only" ] ;
39+ Assert . Null ( submodule ) ;
40+ }
41+ }
42+
2343 [ Theory ]
2444 [ InlineData ( "sm_added_and_uncommited" , SubmoduleStatus . InConfig | SubmoduleStatus . InIndex | SubmoduleStatus . InWorkDir | SubmoduleStatus . IndexAdded ) ]
2545 [ InlineData ( "sm_changed_file" , SubmoduleStatus . InConfig | SubmoduleStatus . InHead | SubmoduleStatus . InIndex | SubmoduleStatus . InWorkDir | SubmoduleStatus . WorkDirFilesModified ) ]
@@ -29,12 +49,20 @@ public void RetrievingSubmoduleForNormalDirectoryReturnsNull()
2949 [ InlineData ( "sm_gitmodules_only" , SubmoduleStatus . InConfig ) ]
3050 [ InlineData ( "sm_missing_commits" , SubmoduleStatus . InConfig | SubmoduleStatus . InHead | SubmoduleStatus . InIndex | SubmoduleStatus . InWorkDir | SubmoduleStatus . WorkDirModified ) ]
3151 [ InlineData ( "sm_unchanged" , SubmoduleStatus . InConfig | SubmoduleStatus . InHead | SubmoduleStatus . InIndex | SubmoduleStatus . InWorkDir ) ]
32- public void CanRetrieveTheStatusOfASubmodule ( string name , SubmoduleStatus expectedStatus )
52+ [ InlineData ( "sm_branch_only" , null ) ]
53+ public void CanRetrieveTheStatusOfASubmodule ( string name , SubmoduleStatus ? expectedStatus )
3354 {
3455 var path = SandboxSubmoduleTestRepo ( ) ;
3556 using ( var repo = new Repository ( path ) )
3657 {
3758 var submodule = repo . Submodules [ name ] ;
59+
60+ if ( expectedStatus == null )
61+ {
62+ Assert . Null ( submodule ) ;
63+ return ;
64+ }
65+
3866 Assert . NotNull ( submodule ) ;
3967 Assert . Equal ( name , submodule . Name ) ;
4068 Assert . Equal ( name , submodule . Path ) ;
0 commit comments