github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/testkube/model_execution_status_extended.go (about) 1 package testkube 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func StatusPtr(status ExecutionStatus) *ExecutionStatus { 9 return &status 10 } 11 12 var ( 13 ExecutionStatusFailed = StatusPtr(FAILED_ExecutionStatus) 14 ExecutionStatusPassed = StatusPtr(PASSED_ExecutionStatus) 15 ExecutionStatusQueued = StatusPtr(QUEUED_ExecutionStatus) 16 ExecutionStatusRunning = StatusPtr(RUNNING_ExecutionStatus) 17 ExecutionStatusAborted = StatusPtr(ABORTED_ExecutionStatus) 18 ExecutionStatusTimeout = StatusPtr(TIMEOUT_ExecutionStatus) 19 ) 20 21 // ExecutionStatuses is an array of ExecutionStatus 22 type ExecutionStatuses []ExecutionStatus 23 24 // ToMap generates map from ExecutionStatuses 25 func (statuses ExecutionStatuses) ToMap() map[ExecutionStatus]struct{} { 26 statusMap := map[ExecutionStatus]struct{}{} 27 for _, status := range statuses { 28 statusMap[status] = struct{}{} 29 } 30 31 return statusMap 32 } 33 34 // ParseExecutionStatusList parse a list of execution statuses from string 35 func ParseExecutionStatusList(source, separator string) (statusList ExecutionStatuses, err error) { 36 statusMap := map[ExecutionStatus]struct{}{ 37 FAILED_ExecutionStatus: {}, 38 PASSED_ExecutionStatus: {}, 39 QUEUED_ExecutionStatus: {}, 40 RUNNING_ExecutionStatus: {}, 41 ABORTED_ExecutionStatus: {}, 42 TIMEOUT_ExecutionStatus: {}, 43 } 44 45 if source == "" { 46 return nil, nil 47 } 48 49 values := strings.Split(source, separator) 50 for _, value := range values { 51 status := ExecutionStatus(value) 52 if _, ok := statusMap[status]; ok { 53 statusList = append(statusList, status) 54 } else { 55 return nil, fmt.Errorf("unknown execution status %v", status) 56 } 57 } 58 59 return statusList, nil 60 } 61 62 func ExecutionStatusString(ptr *ExecutionStatus) string { 63 return string(*ptr) 64 }