github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/testkube/model_test_suite_status_extended.go (about)

     1  package testkube
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  func TestSuiteExecutionStatusPtr(status TestSuiteExecutionStatus) *TestSuiteExecutionStatus {
     9  	return &status
    10  }
    11  
    12  var TestSuiteExecutionStatusFailed = TestSuiteExecutionStatusPtr(FAILED_TestSuiteExecutionStatus)
    13  var TestSuiteExecutionStatusPassed = TestSuiteExecutionStatusPtr(PASSED_TestSuiteExecutionStatus)
    14  var TestSuiteExecutionStatusQueued = TestSuiteExecutionStatusPtr(QUEUED_TestSuiteExecutionStatus)
    15  var TestSuiteExecutionStatusRunning = TestSuiteExecutionStatusPtr(RUNNING_TestSuiteExecutionStatus)
    16  var TestSuiteExecutionStatusAborting = TestSuiteExecutionStatusPtr(ABORTING_TestSuiteExecutionStatus)
    17  var TestSuiteExecutionStatusAborted = TestSuiteExecutionStatusPtr(ABORTED_TestSuiteExecutionStatus)
    18  var TestSuiteExecutionStatusTimeout = TestSuiteExecutionStatusPtr(TIMEOUT_TestSuiteExecutionStatus)
    19  
    20  // TestSuiteExecutionStatuses is an array of TestSuiteExecutionStatus
    21  type TestSuiteExecutionStatuses []TestSuiteExecutionStatus
    22  
    23  // ToMap generates map from TestSuiteExecutionStatuses
    24  func (statuses TestSuiteExecutionStatuses) ToMap() map[TestSuiteExecutionStatus]struct{} {
    25  	statusMap := map[TestSuiteExecutionStatus]struct{}{}
    26  	for _, status := range statuses {
    27  		statusMap[status] = struct{}{}
    28  	}
    29  
    30  	return statusMap
    31  }
    32  
    33  // ParseTestSuiteExecutionStatusList parse a list of test suite execution statuses from string
    34  func ParseTestSuiteExecutionStatusList(source, separator string) (statusList TestSuiteExecutionStatuses, err error) {
    35  	statusMap := map[TestSuiteExecutionStatus]struct{}{
    36  		FAILED_TestSuiteExecutionStatus:  {},
    37  		PASSED_TestSuiteExecutionStatus:  {},
    38  		QUEUED_TestSuiteExecutionStatus:  {},
    39  		RUNNING_TestSuiteExecutionStatus: {},
    40  	}
    41  
    42  	if source == "" {
    43  		return nil, nil
    44  	}
    45  
    46  	values := strings.Split(source, separator)
    47  	for _, value := range values {
    48  		status := TestSuiteExecutionStatus(value)
    49  		if _, ok := statusMap[status]; ok {
    50  			statusList = append(statusList, status)
    51  		} else {
    52  			return nil, fmt.Errorf("unknown test suite execution status %v", status)
    53  		}
    54  	}
    55  
    56  	return statusList, nil
    57  }
    58  
    59  func TestSuiteExecutionStatusString(ptr *TestSuiteExecutionStatus) string {
    60  	return string(*ptr)
    61  }