package server import ( "net/http" "net/http/httptest" "strings" "testing" ) // TestBlobRendersContent 回归测试:曾出现「限量读取返回空内容」的 bug—— // 限流缓冲拿到了数据,却返回了另一个空缓冲,导致所有文件预览全白。 func TestBlobRendersContent(t *testing.T) { srv, st, _, _ := newTestServer(t) dir := makeRepo(t, srv, st, "read", nil) commitFiles(t, dir, "init", map[string]string{"main.go": "package main\n\nfunc main() {}\n"}) r := httptest.NewRequest(http.MethodGet, "/read/blob/main/main.go", nil) w := httptest.NewRecorder() srv.Handler().ServeHTTP(w, r) if w.Code != http.StatusOK { t.Fatalf("状态码 = %d", w.Code) } html := w.Body.String() for _, want := range []string{"package main", "func main"} { if !strings.Contains(html, want) { t.Errorf("页面缺少文件内容 %q,疑似读取返回空内容", want) } } if !strings.Contains(html, "codeline") { t.Error("未渲染代码视图") } } // TestReadmeRendersOnHome 确认首页能渲染 README(同样依赖 BlobLimited)。 func TestReadmeRendersOnHome(t *testing.T) { srv, st, _, _ := newTestServer(t) dir := makeRepo(t, srv, st, "doc", nil) commitFiles(t, dir, "init", map[string]string{"README.md": "# 标题\n\n一段说明。\n"}) r := httptest.NewRequest(http.MethodGet, "/doc", nil) w := httptest.NewRecorder() srv.Handler().ServeHTTP(w, r) if w.Code != http.StatusOK { t.Fatalf("状态码 = %d", w.Code) } if html := w.Body.String(); !strings.Contains(html, "一段说明") { t.Error("README 未渲染,疑似 BlobLimited 返回空内容") } }