Files
odo/tests/helper/helper_windows.go
Philippe Martin 0f828ec99f Ignore devstate when existing process name is not odo + delete devstate files with odo delete component (#7090)
* Ignore devstate when existing process name is not odo

* Delete orphan devstate files with odo delete component

* Update unit tests

* Create fake system

* Add unit tests for odo delete component

* Integration tests for odo dev

* Troubleshooting

* First process on Windows is 4

* Use go-ps lib for pidExists
2023-09-20 14:20:53 +02:00

42 lines
908 B
Go

//go:build windows
// +build windows
package helper
import (
"fmt"
"os/exec"
"syscall"
"github.com/onsi/gomega/gexec"
"golang.org/x/sys/windows"
)
func terminateProc(session *gexec.Session) error {
pid := session.Command.Process.Pid
dll, err := windows.LoadDLL("kernel32.dll")
if err != nil {
return fmt.Errorf("loading DLL: %w", err)
}
defer dll.Release()
generateConsoleCtrlEvent, err := dll.FindProc("GenerateConsoleCtrlEvent")
if err != nil {
return fmt.Errorf("finding GenerateConsoleCtrlEvent: %w", err)
}
r1, _, err := generateConsoleCtrlEvent.Call(uintptr(syscall.CTRL_BREAK_EVENT), uintptr(pid))
if r1 == 0 {
return fmt.Errorf("calling GenerateConsoleCtrlEvent: %w", err)
}
return nil
}
func setSysProcAttr(command *exec.Cmd) {
command.SysProcAttr = &syscall.SysProcAttr{
CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP,
}
}
func GetFirstProcess() int {
return 4
}