package gitutil
import "testing"
func TestIsReadmeFile(t *testing.T) {
const (
fileMode = "100644"
execMode = "100755"
dirMode = "040000"
)
cases := []struct {
name string
mode string
want bool
}{
{"README.md", fileMode, true},
{"ReadMe.MD", fileMode, true},
{"readme", fileMode, true},
{"README", execMode, true},
// regression: a directory named "readme" must not be picked up
// as the README blob; tree handlers used to fetch it and 503.
{"readme", dirMode, false},
{"README.md", dirMode, false},
// readme is matched by convention, not by renderable format;
// unsupported markup falls through to plaintext in GetFormat.
{"README.rst", fileMode, true},
{"README.foo", fileMode, true},
{"README.Music.md", fileMode, false},
{"readme-old", fileMode, false},
{"readme_legacy", fileMode, false},
{"notreadme.md", fileMode, false},
{"READMEISH", fileMode, false},
{"README.md", "", false},
{"README.md", "120000", false}, // symlink
}
for _, c := range cases {
t.Run(c.name+"/"+c.mode, func(t *testing.T) {
if got := IsReadmeFile(c.name, c.mode); got != c.want {
t.Errorf("IsReadmeFile(%q, %q) = %v, want %v", c.name, c.mode, got, c.want)
}
})
}
}