Naming, layout and comments: descriptive full-word names, one item per line in wrapped calls and literals, and doc comments on exported names

Short and single-letter names in application code become full words (tests
keep theirs). Wrapped calls, signatures and composite literals put one item
per line, and one-line function bodies are expanded. Exported names and
groups of constants get doc comments, and comments refer to the renamed
identifiers.
This commit is contained in:
bwilliams committed 2026-10-15 16:12:56 +01:00
1 parent 043e307663
commit 465358609a
78 files changed
+2374 -1402

No files matched your search

+86 -29
View File
@@ -22,7 +22,11 @@ import (
)
func testConfig(level string) *config.JobSearchConfig {
return &config.JobSearchConfig{Logging: config.JSCLogging{Level: level}}
return &config.JobSearchConfig{
Logging: config.JSCLogging{
Level: level,
},
}
}
// quietLogs discards slog output for the duration of the test, or sends it
@@ -34,7 +38,9 @@ func quietLogs(t *testing.T, h slog.Handler) {
}
prev := slog.Default()
slog.SetDefault(slog.New(h))
t.Cleanup(func() { slog.SetDefault(prev) })
t.Cleanup(func() {
slog.SetDefault(prev)
})
}
// newTestFT starts h on a test server and returns a FindATender pointed at it.
@@ -92,7 +98,10 @@ func TestFetchWithOptsBuildsURI(t *testing.T) {
})
since := time.Date(2026, 10, 8, 9, 30, 15, 0, time.UTC)
res, err := ft.fetchWithOpts(RequestOptions{Since: since, Limit: 7})
res, err := ft.fetchWithOpts(RequestOptions{
Since: since,
Limit: 7,
})
if err != nil {
t.Fatal(err)
}
@@ -104,7 +113,9 @@ func TestFetchWithOptsBuildsURI(t *testing.T) {
t.Errorf("query = %q", gotQuery)
}
res, err = ft.fetchWithOpts(RequestOptions{Since: since})
res, err = ft.fetchWithOpts(RequestOptions{
Since: since,
})
if err != nil {
t.Fatal(err)
}
@@ -268,7 +279,8 @@ func TestFetchURIRateLimitThenError(t *testing.T) {
}
func TestFetchURIConnectionError(t *testing.T) {
ft, srv := newTestFT(t, "warn", func(w http.ResponseWriter, r *http.Request) {})
ft, srv := newTestFT(t, "warn", func(w http.ResponseWriter, r *http.Request) {
})
srv.Close()
ft.httpClient.SetRetryCount(0)
if _, err := ft.fetchURI(srv.URL, true); err == nil {
@@ -290,10 +302,14 @@ func TestFetchURICancelledContext(t *testing.T) {
func TestFetchURIDebugTrace(t *testing.T) {
handlers := map[string]func(io.Writer) slog.Handler{
"text": func(w io.Writer) slog.Handler {
return slog.NewTextHandler(w, &slog.HandlerOptions{Level: slog.LevelDebug})
return slog.NewTextHandler(w, &slog.HandlerOptions{
Level: slog.LevelDebug,
})
},
"json": func(w io.Writer) slog.Handler {
return slog.NewJSONHandler(w, &slog.HandlerOptions{Level: slog.LevelDebug})
return slog.NewJSONHandler(w, &slog.HandlerOptions{
Level: slog.LevelDebug,
})
},
}
for name, mk := range handlers {
@@ -305,7 +321,9 @@ func TestFetchURIDebugTrace(t *testing.T) {
quietLogs(t, mk(&logs))
// The body must still be readable after the debug logging.
releases, err := ft.fetchOnce(RequestOptions{Since: time.Now()})
releases, err := ft.fetchOnce(RequestOptions{
Since: time.Now(),
})
if err != nil {
t.Fatal(err)
}
@@ -325,7 +343,8 @@ func TestFetchURIDebugTrace(t *testing.T) {
}
func TestFetchURIDebugTraceConnectionError(t *testing.T) {
ft, srv := newTestFT(t, "debug", func(w http.ResponseWriter, r *http.Request) {})
ft, srv := newTestFT(t, "debug", func(w http.ResponseWriter, r *http.Request) {
})
srv.Close()
ft.httpClient.SetRetryCount(0)
if _, err := fetchURI(ft, srv.URL); err == nil {
@@ -341,8 +360,10 @@ func TestFetchNext(t *testing.T) {
})
for name, pkg := range map[string]*ocds.ReleasePackage{
"nil links": {},
"empty next": {Links: &ocds.ReleasePackageLinks{Prev: srv.URL}},
"nil links": {},
"empty next": {Links: &ocds.ReleasePackageLinks{
Prev: srv.URL,
}},
} {
if _, err := ft.fetchNext(pkg, true); !errors.Is(err, ErrNoNext) {
t.Errorf("%s: err = %v, want ErrNoNext", name, err)
@@ -350,7 +371,11 @@ func TestFetchNext(t *testing.T) {
}
res, err := ft.fetchNext(
&ocds.ReleasePackage{Links: &ocds.ReleasePackageLinks{Next: srv.URL + "/page2"}},
&ocds.ReleasePackage{
Links: &ocds.ReleasePackageLinks{
Next: srv.URL + "/page2",
},
},
true,
)
if err != nil {
@@ -372,7 +397,9 @@ func responseFor(t *testing.T, body string) *resty.Response {
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { res.Body.Close() })
t.Cleanup(func() {
res.Body.Close()
})
return res
}
@@ -481,11 +508,14 @@ func pagedServer(t *testing.T, pages ...[]string) (*FindATender, *atomic.Int32)
}
func TestFetchOnce(t *testing.T) {
ft, hits := pagedServer(t,
ft, hits := pagedServer(
t,
[]string{releaseJSON("ocds-1", "1"), releaseJSON("ocds-2", "1")},
[]string{releaseJSON("ocds-3", "1")},
)
releases, err := ft.fetchOnce(RequestOptions{Since: time.Now()})
releases, err := ft.fetchOnce(RequestOptions{
Since: time.Now(),
})
if err != nil {
t.Fatal(err)
}
@@ -499,14 +529,18 @@ func TestFetchOnce(t *testing.T) {
func TestFetchOnceErrors(t *testing.T) {
ft, _ := pagedServer(t, []string{})
if _, err := ft.fetchOnce(RequestOptions{Since: time.Now()}); !errors.Is(err, ErrNoReleases) {
if _, err := ft.fetchOnce(RequestOptions{
Since: time.Now(),
}); !errors.Is(err, ErrNoReleases) {
t.Errorf("empty page: err = %v, want ErrNoReleases", err)
}
ft, _ = newTestFT(t, "warn", func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "not json")
})
if _, err := ft.fetchOnce(RequestOptions{Since: time.Now()}); err == nil {
if _, err := ft.fetchOnce(RequestOptions{
Since: time.Now(),
}); err == nil {
t.Error("bad body: expected an error")
}
@@ -514,7 +548,9 @@ func TestFetchOnceErrors(t *testing.T) {
w.WriteHeader(http.StatusTooManyRequests)
})
if _, err := ft.fetchOnce(
RequestOptions{Since: time.Now()},
RequestOptions{
Since: time.Now(),
},
); !errors.Is(
err,
ErrRateLimitExceeded,
@@ -524,12 +560,15 @@ func TestFetchOnceErrors(t *testing.T) {
}
func TestFetchAll(t *testing.T) {
ft, hits := pagedServer(t,
ft, hits := pagedServer(
t,
[]string{releaseJSON("ocds-1", "1"), releaseJSON("ocds-2", "1")},
[]string{},
[]string{releaseJSON("ocds-1", "2")},
)
releases, err := ft.fetchAll(RequestOptions{Since: time.Now()})
releases, err := ft.fetchAll(RequestOptions{
Since: time.Now(),
})
if err != nil {
t.Fatal(err)
}
@@ -547,7 +586,9 @@ func TestFetchAll(t *testing.T) {
func TestFetchAllErrors(t *testing.T) {
ft, _ := pagedServer(t, []string{}, []string{})
if _, err := ft.fetchAll(RequestOptions{Since: time.Now()}); !errors.Is(err, ErrNoReleases) {
if _, err := ft.fetchAll(RequestOptions{
Since: time.Now(),
}); !errors.Is(err, ErrNoReleases) {
t.Errorf("all pages empty: err = %v, want ErrNoReleases", err)
}
@@ -556,7 +597,9 @@ func TestFetchAllErrors(t *testing.T) {
w.WriteHeader(http.StatusTooManyRequests)
})
if _, err := ft.fetchAll(
RequestOptions{Since: time.Now()},
RequestOptions{
Since: time.Now(),
},
); !errors.Is(
err,
ErrRateLimitExceeded,
@@ -567,14 +610,20 @@ func TestFetchAllErrors(t *testing.T) {
ft, _ = newTestFT(t, "warn", func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "not json")
})
if _, err := ft.fetchAll(RequestOptions{Since: time.Now()}); err == nil {
if _, err := ft.fetchAll(RequestOptions{
Since: time.Now(),
}); err == nil {
t.Error("first page bad body: expected an error")
}
// A later page fails, either to fetch or to decode.
for name, fail := range map[string]http.HandlerFunc{
"rate limited": func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusTooManyRequests) },
"bad body": func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "not json") },
"rate limited": func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusTooManyRequests)
},
"bad body": func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "not json")
},
} {
t.Run(name, func(t *testing.T) {
var srvURL string
@@ -586,7 +635,9 @@ func TestFetchAllErrors(t *testing.T) {
fail(w, r)
})
srvURL = srv.URL
if _, err := ft.fetchAll(RequestOptions{Since: time.Now()}); err == nil {
if _, err := ft.fetchAll(RequestOptions{
Since: time.Now(),
}); err == nil {
t.Error("expected an error from the second page")
}
})
@@ -597,7 +648,9 @@ func TestFetchAllErrors(t *testing.T) {
func TestFetchAllRepeatedNextLink(t *testing.T) {
tests := map[string]func(base string, page string) string{
// page 0 -> page 1 -> page 1 ...
"self link": func(base, page string) string { return base + "/next?page=1" },
"self link": func(base, page string) string {
return base + "/next?page=1"
},
// page 0 -> page 1 -> page 2 -> page 1 ...
"cycle": func(base, page string) string {
if page == "1" {
@@ -623,7 +676,9 @@ func TestFetchAllRepeatedNextLink(t *testing.T) {
})
srvURL = srv.URL
releases, err := ft.fetchAll(RequestOptions{Since: time.Now()})
releases, err := ft.fetchAll(RequestOptions{
Since: time.Now(),
})
if err != nil {
t.Fatal(err)
}
@@ -668,7 +723,9 @@ func TestUnmarshalLenientDates(t *testing.T) {
t.Fatal(err)
}
midnight := func(y int, m time.Month, d int) time.Time { return time.Date(y, m, d, 0, 0, 0, 0, time.UTC) }
midnight := func(y int, m time.Month, d int) time.Time {
return time.Date(y, m, d, 0, 0, 0, 0, time.UTC)
}
if !got.Date.Equal(midnight(2006, 10, 2)) {
t.Errorf("date = %v", got.Date)
}