@@ -437,24 +437,49 @@ func TestCloneVm(t *testing.T) {
437437 vmName string
438438 config types.VirtualMachineCloneSpec
439439 fail bool
440+ folder func (* object.Folder ) * object.Folder
440441 }{
441442 {
442- "clone a vm" ,
443- "cloned-vm" ,
444- types.VirtualMachineCloneSpec {
443+ name : "clone a vm" ,
444+ vmName : "cloned-vm" ,
445+ config : types.VirtualMachineCloneSpec {
445446 Template : false ,
446447 PowerOn : false ,
447448 },
448- false ,
449+ fail : false ,
449450 },
450451 {
451- "vm name is duplicated" ,
452- "DC0_H0_VM0" ,
453- types.VirtualMachineCloneSpec {
452+ name : "vm name is duplicated" ,
453+ vmName : "DC0_H0_VM0" ,
454+ config : types.VirtualMachineCloneSpec {
454455 Template : false ,
455456 PowerOn : false ,
456457 },
457- true ,
458+ fail : true ,
459+ },
460+ {
461+ name : "clone to non-existent folder" ,
462+ vmName : "cloned-vm" ,
463+ config : types.VirtualMachineCloneSpec {
464+ Template : false ,
465+ PowerOn : false ,
466+ },
467+ fail : true ,
468+ folder : func (f * object.Folder ) * object.Folder {
469+ return object .NewFolder (f .Client (), types.ManagedObjectReference {Type : "Folder" , Value : "invalid-folder-value" })
470+ },
471+ },
472+ {
473+ name : "clone to invalid folder type" ,
474+ vmName : "cloned-vm" ,
475+ config : types.VirtualMachineCloneSpec {
476+ Template : false ,
477+ PowerOn : false ,
478+ },
479+ fail : true ,
480+ folder : func (f * object.Folder ) * object.Folder {
481+ return object .NewFolder (f .Client (), types.ManagedObjectReference {Type : "HostSystem" , Value : "host-12" })
482+ },
458483 },
459484 }
460485
@@ -478,16 +503,17 @@ func TestCloneVm(t *testing.T) {
478503 }
479504
480505 vmFolder := folders .VmFolder
506+ if test .folder != nil {
507+ vmFolder = test .folder (vmFolder )
508+ }
481509
482510 vmm := m .Map ().Any ("VirtualMachine" ).(* VirtualMachine )
483511 vm := object .NewVirtualMachine (c , vmm .Reference ())
484512
485513 task , err := vm .Clone (ctx , vmFolder , test .vmName , test .config )
486- if err ! = nil {
487- t . Fatal ( err )
514+ if err = = nil {
515+ err = task . Wait ( ctx )
488516 }
489-
490- err = task .Wait (ctx )
491517 if test .fail {
492518 if err == nil {
493519 t .Errorf ("%s: expected error" , test .name )
0 commit comments