@@ -240,6 +240,62 @@ func TestServer(t *testing.T) {
240240t .Fatalf ("expected postgres URL to start with\" postgres://\" , got %q" ,got )
241241}
242242})
243+ t .Run ("SpammyLogs" ,func (t * testing.T ) {
244+ // The purpose of this test is to ensure we don't show excessive logs when the server starts.
245+ t .Parallel ()
246+ inv ,cfg := clitest .New (t ,
247+ "server" ,
248+ "--in-memory" ,
249+ "--http-address" ,":0" ,
250+ "--access-url" ,"http://localhost:3000/" ,
251+ "--cache-dir" ,t .TempDir (),
252+ )
253+
254+ bufferStdout := bytes .NewBuffer (nil )
255+ bufferStderr := bytes .NewBuffer (nil )
256+ inv .Stdout = io .MultiWriter (os .Stdout ,bufferStdout )
257+ inv .Stderr = io .MultiWriter (os .Stderr ,bufferStderr )
258+ clitest .Start (t ,inv )
259+
260+ // Wait for startup
261+ _ = waitAccessURL (t ,cfg )
262+
263+ // Wait a bit for more logs to be printed.
264+ time .Sleep (testutil .WaitShort )
265+
266+ // Lines containing these strings are printed because we're
267+ // running the server with a test config. They wouldn't be
268+ // normally shown to the user, so we'll ignore them.
269+ ignoreLines := []string {
270+ "isn't externally reachable" ,
271+ "install.sh will be unavailable" ,
272+ "telemetry disabled, unable to notify of security issues" ,
273+ }
274+
275+ countLines := func (fullOutput string ,terminalWidth int )int {
276+ linesByNewline := strings .Split (fullOutput ,"\n " )
277+ countByWidth := 0
278+ lineLoop:
279+ for _ ,line := range linesByNewline {
280+ for _ ,ignoreLine := range ignoreLines {
281+ if strings .Contains (line ,ignoreLine ) {
282+ continue lineLoop
283+ }
284+ }
285+ if line == "" {
286+ // Empty lines take up one line.
287+ countByWidth ++
288+ }else {
289+ countByWidth += (len (line )+ terminalWidth - 1 )/ terminalWidth
290+ }
291+ }
292+ return countByWidth
293+ }
294+
295+ terminalWidth := 80
296+ numLines := countLines (bufferStdout .String (),terminalWidth )+ countLines (bufferStderr .String (),terminalWidth )
297+ require .Less (t ,numLines ,20 )
298+ })
243299
244300// Validate that a warning is printed that it may not be externally
245301// reachable.