@@ -27,13 +27,16 @@ var commitsOutput = strings.ReplaceAll(`+0eea75e8c631fba6b58135697835d58ba4c18db
2727
2828var singleCommitOutput = strings .ReplaceAll (`+0eea75e8c631fba6b58135697835d58ba4c18dbc|1640826609|Jesse Duffield|jessedduffield@gmail.com|b21997d6b4cbdf84b149|>|HEAD -> better-tests|better typing for rebase mode` , "|" , "\x00 " )
2929
30+ var singleCommitOutputWithGpg = strings .ReplaceAll (`+0eea75e8c631fba6b58135697835d58ba4c18dbc|1640826609|Jesse Duffield|jessedduffield@gmail.com|b21997d6b4cbdf84b149|>|HEAD -> better-tests|G|better typing for rebase mode` , "|" , "\x00 " )
31+
3032func TestGetCommits (t * testing.T ) {
3133 type scenario struct {
3234 testName string
3335 runner * oscommands.FakeCmdObjRunner
3436 expectedCommitOpts []models.NewCommitOpts
3537 expectedError error
3638 logOrder string
39+ showGpg bool
3740 opts GetCommitsOptions
3841 mainBranches []string
3942 }
@@ -61,6 +64,30 @@ func TestGetCommits(t *testing.T) {
6164 expectedCommitOpts : []models.NewCommitOpts {},
6265 expectedError : nil ,
6366 },
67+ {
68+ testName : "should return commits with gpg status when enabled" ,
69+ logOrder : "topo-order" ,
70+ showGpg : true ,
71+ opts : GetCommitsOptions {RefName : "HEAD" , RefForPushedStatus : & models.Branch {Name : "mybranch" }, IncludeRebaseCommits : false },
72+ runner : oscommands .NewFakeRunner (t ).
73+ ExpectGitArgs ([]string {"rev-list" , "refs/heads/mybranch" , "^mybranch@{u}" }, "0eea75e8c631fba6b58135697835d58ba4c18dbc\n " , nil ).
74+ ExpectGitArgs ([]string {"log" , "HEAD" , "--topo-order" , "--oneline" , "--pretty=format:+%H%x00%at%x00%aN%x00%ae%x00%P%x00%m%x00%D%x00%G?%x00%s" , "--abbrev=40" , "--no-show-signature" , "--" }, singleCommitOutputWithGpg , nil ),
75+
76+ expectedCommitOpts : []models.NewCommitOpts {{
77+ Hash : "0eea75e8c631fba6b58135697835d58ba4c18dbc" ,
78+ Name : "better typing for rebase mode" ,
79+ Status : models .StatusUnpushed ,
80+ Action : models .ActionNone ,
81+ Tags : nil ,
82+ ExtraInfo : "(HEAD -> better-tests)" ,
83+ AuthorName : "Jesse Duffield" ,
84+ AuthorEmail : "jessedduffield@gmail.com" ,
85+ UnixTimestamp : 1640826609 ,
86+ Parents : []string {"b21997d6b4cbdf84b149" },
87+ GpgStatus : "G" ,
88+ }},
89+ expectedError : nil ,
90+ },
6491 {
6592 testName : "should return commits if they are present" ,
6693 logOrder : "topo-order" ,
@@ -300,6 +327,7 @@ func TestGetCommits(t *testing.T) {
300327 t .Run (scenario .testName , func (t * testing.T ) {
301328 common := common .NewDummyCommon ()
302329 common .UserConfig ().Git .Log .Order = scenario .logOrder
330+ common .UserConfig ().Gui .ShowGpgSigningStatus = scenario .showGpg
303331 cmd := oscommands .NewDummyCmdObjBuilder (scenario .runner )
304332
305333 builder := & CommitLoader {
@@ -333,6 +361,42 @@ func TestGetCommits(t *testing.T) {
333361 }
334362}
335363
364+ func TestCommitLoader_getHydratedTodoCommitsWithGpgStatus (t * testing.T ) {
365+ common := common .NewDummyCommon ()
366+ common .UserConfig ().Gui .ShowGpgSigningStatus = true
367+ runner := oscommands .NewFakeRunner (t ).
368+ ExpectGitArgs ([]string {"-c" , "log.showSignature=false" , "show" , "--no-patch" , "--oneline" , "--abbrev=20" , prettyFormatWithGpg , "0eea75e8c631fba6b58135697835d58ba4c18dbc" }, singleCommitOutputWithGpg , nil )
369+
370+ hashPool := & utils.StringPool {}
371+ loader := & CommitLoader {
372+ Common : common ,
373+ cmd : oscommands .NewDummyCmdObjBuilder (runner ),
374+ }
375+
376+ todoCommits := []* models.Commit {models .NewCommit (hashPool , models.NewCommitOpts {
377+ Hash : "0eea75e8c631fba6b58135697835d58ba4c18dbc" ,
378+ Status : models .StatusRebasing ,
379+ Action : todo .Pick ,
380+ })}
381+
382+ commits , err := loader .getHydratedTodoCommits (hashPool , todoCommits , false )
383+
384+ assert .NoError (t , err )
385+ assert .Equal (t , []* models.Commit {models .NewCommit (hashPool , models.NewCommitOpts {
386+ Hash : "0eea75e8c631fba6b58135697835d58ba4c18dbc" ,
387+ Name : "better typing for rebase mode" ,
388+ Status : models .StatusRebasing ,
389+ Action : todo .Pick ,
390+ ExtraInfo : "(HEAD -> better-tests)" ,
391+ AuthorName : "Jesse Duffield" ,
392+ AuthorEmail : "jessedduffield@gmail.com" ,
393+ UnixTimestamp : 1640826609 ,
394+ Parents : []string {"b21997d6b4cbdf84b149" },
395+ GpgStatus : "G" ,
396+ })}, commits )
397+ runner .CheckForMissingCalls ()
398+ }
399+
336400func TestCommitLoader_getConflictedCommitImpl (t * testing.T ) {
337401 hashPool := & utils.StringPool {}
338402
@@ -605,6 +669,7 @@ func TestCommitLoader_extractCommitFromLine(t *testing.T) {
605669 testName string
606670 line string
607671 showDivergence bool
672+ showGpg bool
608673 expectedCommit * models.Commit
609674 }{
610675 {
@@ -759,6 +824,24 @@ func TestCommitLoader_extractCommitFromLine(t *testing.T) {
759824 Divergence : models .DivergenceLeft ,
760825 }),
761826 },
827+ {
828+ testName : "valid line with gpg status" ,
829+ line : "hash\x00 timestamp\x00 author\x00 email\x00 parents\x00 <\x00 extraInfo\x00 G\x00 message" ,
830+ showDivergence : true ,
831+ showGpg : true ,
832+ expectedCommit : models .NewCommit (hashPool , models.NewCommitOpts {
833+ Hash : "hash" ,
834+ Name : "message" ,
835+ Tags : nil ,
836+ ExtraInfo : "(extraInfo)" ,
837+ UnixTimestamp : 0 ,
838+ AuthorName : "author" ,
839+ AuthorEmail : "email" ,
840+ Parents : []string {"parents" },
841+ Divergence : models .DivergenceLeft ,
842+ GpgStatus : "G" ,
843+ }),
844+ },
762845 {
763846 testName : "empty line" ,
764847 line : "" ,
@@ -785,7 +868,7 @@ func TestCommitLoader_extractCommitFromLine(t *testing.T) {
785868
786869 for _ , scenario := range scenarios {
787870 t .Run (scenario .testName , func (t * testing.T ) {
788- result := loader .extractCommitFromLine (hashPool , scenario .line , scenario .showDivergence )
871+ result := loader .extractCommitFromLine (hashPool , scenario .line , scenario .showDivergence , scenario . showGpg )
789872 if scenario .expectedCommit == nil {
790873 assert .Nil (t , result )
791874 } else {
0 commit comments