54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package common_test
 | |
| 
 | |
| import (
 | |
| 	"reflect"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/containers/podman/v4/cmd/podman/common"
 | |
| 	"github.com/containers/podman/v4/pkg/domain/entities"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestPodOptions(t *testing.T) {
 | |
| 	entry := "/test1"
 | |
| 	exampleOptions := entities.ContainerCreateOptions{CPUS: 5.5, CPUSetCPUs: "0-4", Entrypoint: &entry, Hostname: "foo", Name: "testing123", Volume: []string{"/fakeVol1", "/fakeVol2"}, Net: &entities.NetOptions{DNSSearch: []string{"search"}}, PID: "ns:/proc/self/ns"}
 | |
| 
 | |
| 	podOptions := entities.PodCreateOptions{}
 | |
| 	err := common.ContainerToPodOptions(&exampleOptions, &podOptions)
 | |
| 	assert.Nil(t, err)
 | |
| 
 | |
| 	cc := reflect.ValueOf(&exampleOptions).Elem()
 | |
| 	pc := reflect.ValueOf(&podOptions).Elem()
 | |
| 
 | |
| 	pcType := reflect.TypeOf(podOptions)
 | |
| 	for i := 0; i < pc.NumField(); i++ {
 | |
| 		podField := pc.FieldByIndex([]int{i})
 | |
| 		podType := pcType.Field(i)
 | |
| 		for j := 0; j < cc.NumField(); j++ {
 | |
| 			containerField := cc.FieldByIndex([]int{j})
 | |
| 			containerType := reflect.TypeOf(exampleOptions).Field(j)
 | |
| 			tagPod := strings.Split(podType.Tag.Get("json"), ",")[0]
 | |
| 			tagContainer := strings.Split(containerType.Tag.Get("json"), ",")[0]
 | |
| 			if tagPod == tagContainer && (tagPod != "" && tagContainer != "") {
 | |
| 				areEqual := true
 | |
| 				if containerField.Kind() == podField.Kind() {
 | |
| 					switch containerField.Kind() {
 | |
| 					case reflect.Slice:
 | |
| 						for i, w := range containerField.Interface().([]string) {
 | |
| 							areEqual = podField.Interface().([]string)[i] == w
 | |
| 						}
 | |
| 					case reflect.String:
 | |
| 						areEqual = (podField.String() == containerField.String())
 | |
| 					case reflect.Bool:
 | |
| 						areEqual = (podField.Bool() == containerField.Bool())
 | |
| 					case reflect.Ptr:
 | |
| 						areEqual = (reflect.DeepEqual(podField.Elem().Interface(), containerField.Elem().Interface()))
 | |
| 					}
 | |
| 				}
 | |
| 				assert.True(t, areEqual)
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |