@@ -606,7 +606,6 @@ describe('github', () => {
606606 'https://gist.githubusercontent.com/raw/large.js' ,
607607 ) ;
608608 expect ( result . files [ 'large.js' ] . content ) . toBe ( fullContent ) ;
609- expect ( result . files [ 'large.js' ] . truncated ) . toBe ( false ) ;
610609
611610 fetchSpy . mockRestore ( ) ;
612611 } ) ;
@@ -626,6 +625,71 @@ describe('github', () => {
626625 expect ( result [ 1 ] . title ) . toBe ( 'Revision 1' ) ;
627626 } ) ;
628627
628+ it ( 'always keeps the initial revision even with empty change_status' , async ( ) => {
629+ await handleTokenSignOut ( MOCK_EVENT ) ;
630+ mockOctokitInstance ( {
631+ gists : {
632+ listCommits : vi . fn ( ) . mockResolvedValue ( {
633+ data : [
634+ {
635+ version : 'sha2' ,
636+ committed_at : '2026-02-05T12:00:00Z' ,
637+ change_status : { additions : 5 , deletions : 2 , total : 7 } ,
638+ } ,
639+ {
640+ version : 'sha1' ,
641+ committed_at : '2026-02-01T10:00:00Z' ,
642+ change_status : { additions : 0 , deletions : 0 , total : 0 } ,
643+ } ,
644+ ] ,
645+ } ) ,
646+ } ,
647+ } ) ;
648+ await handleTokenSignIn ( MOCK_EVENT , VALID_GHP_TOKEN ) ;
649+
650+ const result = await handleGistListCommits ( MOCK_EVENT , VALID_GIST_ID ) ;
651+
652+ // The initial revision should NOT be filtered out.
653+ expect ( result ) . toHaveLength ( 2 ) ;
654+ expect ( result [ 0 ] . sha ) . toBe ( 'sha1' ) ;
655+ expect ( result [ 0 ] . title ) . toBe ( 'Created' ) ;
656+ } ) ;
657+
658+ it ( 'filters out empty revisions except the initial one' , async ( ) => {
659+ await handleTokenSignOut ( MOCK_EVENT ) ;
660+ mockOctokitInstance ( {
661+ gists : {
662+ listCommits : vi . fn ( ) . mockResolvedValue ( {
663+ data : [
664+ {
665+ version : 'sha3' ,
666+ committed_at : '2026-02-10T12:00:00Z' ,
667+ change_status : { additions : 3 , deletions : 1 , total : 4 } ,
668+ } ,
669+ {
670+ version : 'sha2' ,
671+ committed_at : '2026-02-05T12:00:00Z' ,
672+ change_status : { additions : 0 , deletions : 0 , total : 0 } ,
673+ } ,
674+ {
675+ version : 'sha1' ,
676+ committed_at : '2026-02-01T10:00:00Z' ,
677+ change_status : { additions : 0 , deletions : 0 , total : 0 } ,
678+ } ,
679+ ] ,
680+ } ) ,
681+ } ,
682+ } ) ;
683+ await handleTokenSignIn ( MOCK_EVENT , VALID_GHP_TOKEN ) ;
684+
685+ const result = await handleGistListCommits ( MOCK_EVENT , VALID_GIST_ID ) ;
686+
687+ // sha2 (empty, not initial) is dropped; sha1 (initial) and sha3 are kept.
688+ expect ( result ) . toHaveLength ( 2 ) ;
689+ expect ( result [ 0 ] . sha ) . toBe ( 'sha1' ) ;
690+ expect ( result [ 1 ] . sha ) . toBe ( 'sha3' ) ;
691+ } ) ;
692+
629693 it ( 'rejects invalid gist IDs' , async ( ) => {
630694 for ( const gistId of INVALID_GIST_IDS ) {
631695 await expect ( handleGistListCommits ( MOCK_EVENT , gistId ) ) . rejects . toThrow (
0 commit comments