@@ -598,7 +598,11 @@ func runTests(cmd *cobra.Command, args []string) error {
598598 if isValidation {
599599 preloadedTests , err = fetchValidationTraceTests (context .Background (), client , authOptions , cfg .Service .ID )
600600 } else {
601- preloadedTests , err = loadCloudTests (context .Background (), client , authOptions , cfg .Service .ID , driftRunID , traceTestID , allCloudTraceTests || ! ci , quiet )
601+ var suiteStatusFilter * backend.TraceTestStatus
602+ if val , ok := runner .ExtractSuiteStatusFromFilter (filter ); ok {
603+ suiteStatusFilter = runner .ParseTraceTestStatusFilter (val )
604+ }
605+ preloadedTests , err = loadCloudTests (context .Background (), client , authOptions , cfg .Service .ID , driftRunID , traceTestID , allCloudTraceTests || ! ci , quiet , suiteStatusFilter )
602606 }
603607 if err != nil {
604608 return formatApiError (fmt .Errorf ("failed to load cloud tests: %w" , err ))
@@ -896,7 +900,7 @@ func runTests(cmd *cobra.Command, args []string) error {
896900 return nil
897901}
898902
899- func loadCloudTests (ctx context.Context , client * api.TuskClient , auth api.AuthOptions , serviceID , driftRunID , traceTestID string , allCloud bool , quiet bool ) ([]runner.Test , error ) {
903+ func loadCloudTests (ctx context.Context , client * api.TuskClient , auth api.AuthOptions , serviceID , driftRunID , traceTestID string , allCloud bool , quiet bool , suiteStatusFilter * backend. TraceTestStatus ) ([]runner.Test , error ) {
900904 if traceTestID != "" {
901905 req := & backend.GetTraceTestRequest {
902906 ObservableServiceId : serviceID ,
@@ -912,7 +916,14 @@ func loadCloudTests(ctx context.Context, client *api.TuskClient, auth api.AuthOp
912916 var all []* backend.TraceTest
913917 var err error
914918
915- if allCloud {
919+ switch {
920+ case suiteStatusFilter != nil :
921+ // When filtering by suite status, bypass cache and use GetAllTraceTests
922+ // with the status filter directly
923+ all , err = api .FetchAllTraceTests (ctx , client , auth , serviceID , & api.FetchAllTraceTestsOptions {
924+ StatusFilter : suiteStatusFilter ,
925+ })
926+ case allCloud :
916927 all , err = api .FetchAllTraceTestsWithCache (
917928 ctx ,
918929 client ,
@@ -921,7 +932,7 @@ func loadCloudTests(ctx context.Context, client *api.TuskClient, auth api.AuthOp
921932 false ,
922933 quiet ,
923934 )
924- } else {
935+ default :
925936 all , err = api .FetchDriftRunTraceTests (
926937 ctx ,
927938 client ,
@@ -958,7 +969,11 @@ func makeLoadTestsFunc(
958969 if traceID != "" && traceTestID == "" {
959970 return nil , fmt .Errorf ("specify --trace-test-id to run against a single trace test in Tusk Drift Cloud" )
960971 }
961- tests , err = loadCloudTests (ctx , client , auth , serviceID , driftRunID , traceTestID , allCloud , quiet )
972+ var suiteStatusFilter * backend.TraceTestStatus
973+ if val , ok := runner .ExtractSuiteStatusFromFilter (filter ); ok {
974+ suiteStatusFilter = runner .ParseTraceTestStatusFilter (val )
975+ }
976+ tests , err = loadCloudTests (ctx , client , auth , serviceID , driftRunID , traceTestID , allCloud , quiet , suiteStatusFilter )
962977 if err != nil {
963978 return nil , err
964979 }
0 commit comments