Files
ThothII/tools/tht/internal/compose/process_windows_static_test.go
T

35 lines
1.1 KiB
Go

package compose
import (
"os"
"strings"
"testing"
)
func TestWindowsTerminationOwnsTheProcessTreeWithAKillOnCloseJobObjectWithoutAShell(t *testing.T) {
source, err := os.ReadFile("process_windows.go")
if err != nil {
t.Fatal(err)
}
text := string(source)
for _, required := range []string{
"windows.CreateJobObject", "windows.JOBOBJECT_EXTENDED_LIMIT_INFORMATION",
"windows.JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE", "windows.SetInformationJobObject",
"windows.AssignProcessToJobObject", "windows.TerminateJobObject", "windows.OpenProcess",
"windows.CreateToolhelp32Snapshot", "windows.ResumeThread", "windows.CloseHandle",
"createSuspendedProcess",
} {
if !strings.Contains(text, required) {
t.Errorf("process_windows.go is missing %q", required)
}
}
for _, forbidden := range []string{
"taskkill", "cmd.exe", "powershell", "exec.Command(", "exec.CommandContext(",
"exec.LookPath(", "windows.GetSystemDirectory",
} {
if strings.Contains(strings.ToLower(text), strings.ToLower(forbidden)) {
t.Errorf("process_windows.go contains unsafe or unowned process-tree mechanism %q", forbidden)
}
}
}