@@ -24,6 +24,7 @@ import (
2424 "net/http"
2525 "net/http/httptest"
2626 "strings"
27+ "sync/atomic"
2728 "testing"
2829 "time"
2930
@@ -567,17 +568,36 @@ func TestDaemonUserAgent(t *testing.T) {
567568 // The user-agent is tested inside the HTTPServeFile function
568569 test_index := paths .New (".." , "testdata" , "test_index.json" )
569570 url := env .HTTPServeFile (8000 , test_index )
571+ // Wait for the server to be ready
572+ fmt .Print ("Waiting for test server to be ready: " )
573+ for i := range 20 {
574+ if resp , err := http .Get (url .String ()); err == nil && resp .StatusCode == http .StatusOK {
575+ fmt .Println ("Test server is ready" )
576+ break
577+ }
578+ time .Sleep (100 * time .Millisecond )
579+ fmt .Print ("." )
580+ require .Less (t , i , 19 , "Test server did not start in time" )
581+ }
582+
583+ var enableTest atomic.Bool
584+
570585 ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
571586 // Test that the user-agent contains metadata from the context when the CLI is in daemon mode
572587 userAgent := r .Header .Get ("User-Agent" )
573588
589+ if ! enableTest .Load () {
590+ return
591+ }
592+ fmt .Println ("Got user-agent:" , userAgent )
593+
574594 require .Contains (t , userAgent , "cli-test/0.0.0" )
575595 require .Contains (t , userAgent , "grpc-go" )
576596 // Depends on how we built the client we may have git-snapshot or 0.0.0-git in dev releases
577- require .Condition (t , func () ( success bool ) {
578- return strings .Contains (userAgent , "arduino-cli/git-snapshot" ) ||
579- strings . Contains ( userAgent , "arduino-cli/0.0.0-git" )
580- } )
597+ require .True (t ,
598+ strings .Contains (userAgent , "arduino-cli/git-snapshot" ) || strings . Contains ( userAgent , "arduino-cli/0.0.0-git" ),
599+ "invalid user-agent value: " + userAgent ,
600+ )
581601
582602 proxiedReq , err := http .NewRequest (r .Method , url .String (), r .Body )
583603 require .NoError (t , err )
@@ -594,6 +614,19 @@ func TestDaemonUserAgent(t *testing.T) {
594614 }))
595615 defer ts .Close ()
596616
617+ fmt .Print ("Waiting for the proxy test server to be ready: " )
618+ for i := range 20 {
619+ if resp , err := http .Get (ts .URL ); err == nil && resp .StatusCode == http .StatusOK {
620+ fmt .Println ("Test server is ready" )
621+ break
622+ }
623+ time .Sleep (100 * time .Millisecond )
624+ fmt .Print ("." )
625+ require .Less (t , i , 19 , "Test server did not start in time" )
626+ }
627+
628+ enableTest .Store (true )
629+
597630 grpcInst := cli .Create ()
598631 require .NoError (t , grpcInst .Init ("" , "" , func (ir * commands.InitResponse ) {
599632 fmt .Printf ("INIT> %v\n " , ir .GetMessage ())
0 commit comments