@@ -24,6 +24,7 @@ import (
24
24
"net/http"
25
25
"net/http/httptest"
26
26
"strings"
27
+ "sync/atomic"
27
28
"testing"
28
29
"time"
29
30
@@ -567,17 +568,36 @@ func TestDaemonUserAgent(t *testing.T) {
567
568
// The user-agent is tested inside the HTTPServeFile function
568
569
test_index := paths .New (".." , "testdata" , "test_index.json" )
569
570
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
+
570
585
ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
571
586
// Test that the user-agent contains metadata from the context when the CLI is in daemon mode
572
587
userAgent := r .Header .Get ("User-Agent" )
573
588
589
+ if ! enableTest .Load () {
590
+ return
591
+ }
592
+ fmt .Println ("Got user-agent:" , userAgent )
593
+
574
594
require .Contains (t , userAgent , "cli-test/0.0.0" )
575
595
require .Contains (t , userAgent , "grpc-go" )
576
596
// 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
+ )
581
601
582
602
proxiedReq , err := http .NewRequest (r .Method , url .String (), r .Body )
583
603
require .NoError (t , err )
@@ -594,6 +614,19 @@ func TestDaemonUserAgent(t *testing.T) {
594
614
}))
595
615
defer ts .Close ()
596
616
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
+
597
630
grpcInst := cli .Create ()
598
631
require .NoError (t , grpcInst .Init ("" , "" , func (ir * commands.InitResponse ) {
599
632
fmt .Printf ("INIT> %v\n " , ir .GetMessage ())
0 commit comments