@@ -588,6 +588,103 @@ func TestParseRepoShortName(t *testing.T) {
588588 }
589589}
590590
591+ func TestLoadReadmePartials (t * testing.T ) {
592+ for _ , test := range []struct {
593+ name string
594+ setupFiles func (t * testing.T , dir string )
595+ want map [string ]interface {}
596+ }{
597+ {
598+ name : "loads yaml partials with camel case conversion" ,
599+ setupFiles : func (t * testing.T , dir string ) {
600+ path := filepath .Join (dir , readmePartialsFile )
601+ content := `about_text: "Custom about"`
602+ if err := os .WriteFile (path , []byte (content ), 0644 ); err != nil {
603+ t .Fatal (err )
604+ }
605+ },
606+ want : map [string ]interface {}{"AboutText" : "Custom about" },
607+ },
608+ {
609+ name : "missing partials file returns nil" ,
610+ setupFiles : func (t * testing.T , dir string ) {
611+ // No file written.
612+ },
613+ want : nil ,
614+ },
615+ {
616+ name : "empty partials file returns nil" ,
617+ setupFiles : func (t * testing.T , dir string ) {
618+ path := filepath .Join (dir , readmePartialsFile )
619+ if err := os .WriteFile (path , []byte ("" ), 0644 ); err != nil {
620+ t .Fatal (err )
621+ }
622+ },
623+ want : nil ,
624+ },
625+ {
626+ name : "partials file with only comments returns nil" ,
627+ setupFiles : func (t * testing.T , dir string ) {
628+ path := filepath .Join (dir , readmePartialsFile )
629+ if err := os .WriteFile (path , []byte ("# only comments\n # no keys defined" ), 0644 ); err != nil {
630+ t .Fatal (err )
631+ }
632+ },
633+ want : nil ,
634+ },
635+ } {
636+ t .Run (test .name , func (t * testing.T ) {
637+ dir := t .TempDir ()
638+ test .setupFiles (t , dir )
639+ got , err := loadReadmePartials (dir )
640+ if err != nil {
641+ t .Fatal (err )
642+ }
643+ if diff := cmp .Diff (test .want , got ); diff != "" {
644+ t .Errorf ("mismatch (-want +got):\n %s" , diff )
645+ }
646+ })
647+ }
648+ }
649+
650+ func TestLoadReadmePartials_Error (t * testing.T ) {
651+ for _ , test := range []struct {
652+ name string
653+ dir string
654+ setupFiles func (t * testing.T , dir string )
655+ wantErr error
656+ }{
657+ {
658+ name : "empty directory parameter returns error" ,
659+ dir : "" ,
660+ wantErr : errEmptyDir ,
661+ },
662+ {
663+ name : "invalid yaml syntax" ,
664+ setupFiles : func (t * testing.T , dir string ) {
665+ path := filepath .Join (dir , readmePartialsFile )
666+ content := `key: [unclosed list`
667+ if err := os .WriteFile (path , []byte (content ), 0644 ); err != nil {
668+ t .Fatal (err )
669+ }
670+ },
671+ wantErr : errInvalidYAML ,
672+ },
673+ } {
674+ t .Run (test .name , func (t * testing.T ) {
675+ dir := test .dir
676+ if test .setupFiles != nil {
677+ dir = t .TempDir ()
678+ test .setupFiles (t , dir )
679+ }
680+ _ , err := loadReadmePartials (dir )
681+ if ! errors .Is (err , test .wantErr ) {
682+ t .Errorf ("loadReadmePartials() error = %v, wantErr %v" , err , test .wantErr )
683+ }
684+ })
685+ }
686+ }
687+
591688func TestCollectSnippetFiles (t * testing.T ) {
592689 for _ , test := range []struct {
593690 name string
0 commit comments