diff options
Diffstat (limited to 'vendor/github.com/AllenDang/w32/create_process_test.go')
-rw-r--r-- | vendor/github.com/AllenDang/w32/create_process_test.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/AllenDang/w32/create_process_test.go b/vendor/github.com/AllenDang/w32/create_process_test.go new file mode 100644 index 0000000..7e64b1d --- /dev/null +++ b/vendor/github.com/AllenDang/w32/create_process_test.go @@ -0,0 +1,47 @@ +package w32 + +import ( + "testing" +) + +var testProcess = "notepad.exe" +var wantCode = uint32(42) + +func TestCreateProcess(t *testing.T) { + + pi, err := CreateProcessQuick(testProcess) + if err != nil { + t.Errorf("[!!] Failed to create %s: %s", testProcess, err) + } else { + t.Logf("[OK] Created process %s with handle 0x%x, PID %d", testProcess, pi.Process, pi.ProcessId) + } + + err = TerminateProcess(pi.Process, wantCode) + if err != nil { + t.Errorf("[!!]Failed to terminate %s: %s", testProcess, err) + } else { + t.Logf("[OK] Called TerminateProcess on PID %d", pi.ProcessId) + } + + err = WaitForSingleObject(pi.Process, 1000) // 1000ms + if err != nil { + t.Errorf("[!!] failed in WaitForSingleObject: %s", err) + } else { + t.Logf("[OK] WaitForSingleObject returned...") + } + + // make sure we see the magic exit code we asked for + code, err := GetExitCodeProcess(pi.Process) + if err != nil { + t.Errorf("[!!] Failed to get exit code for PID %d: %s", pi.ProcessId, err) + } else { + t.Logf("[OK] PID %d Exited with code %d", pi.ProcessId, code) + } + if code != 42 { + t.Errorf("[!!] Unexpected exit code for PID %d - want %d, got %d", pi.ProcessId, wantCode, code) + } + + CloseHandle(pi.Process) + CloseHandle(pi.Thread) + +} |