@@ -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