From b1247d2d0d51108c910a73891ff3116e5f032ab1 Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Sat, 12 Jan 2019 18:39:45 +0100 Subject: [pkg] all your deps are vendored to us --- vendor/github.com/AllenDang/w32/fork_test.go | 50 ++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 vendor/github.com/AllenDang/w32/fork_test.go (limited to 'vendor/github.com/AllenDang/w32/fork_test.go') diff --git a/vendor/github.com/AllenDang/w32/fork_test.go b/vendor/github.com/AllenDang/w32/fork_test.go new file mode 100644 index 0000000..47b52ba --- /dev/null +++ b/vendor/github.com/AllenDang/w32/fork_test.go @@ -0,0 +1,50 @@ +package w32 + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "strconv" + "testing" + "time" +) + +var forkFn = path.Join(os.TempDir(), "forktest.pid") + +func TestFork(t *testing.T) { + + ppid := os.Getpid() + t.Logf("[OK] I am PID %d", ppid) + pid, err := Fork() + if err != nil { + t.Fatalf("[!!] Failed to fork. PID: %d: %s", pid, err) + } + + if pid == 0 { + // We can't log anything here because our stdout doesn't point + // to the same console as our parent. + // + // This process won't show up in Task Manager, and os.Getpid() won't + // work, I guess because we haven't told CSRSS we exist. + f, _ := os.Create(forkFn) + f.WriteString(fmt.Sprintf("%d", ppid)) + f.Close() + } else { + t.Logf("[OK] Forked child with PID %d", pid) + t.Logf("[OK] Sleeping, then trying to read checkfile.") + time.Sleep(2 * time.Second) + raw, err := ioutil.ReadFile(forkFn) + if err != nil { + t.Fatalf("[!!] Failed to read PID checkfile: %s", err) + } + if string(raw) == strconv.Itoa(ppid) { + t.Logf("[OK] Found PID checkfile - PID matches!") + } else { + t.Errorf("[!] Child reported PID %q vs %q!", string(raw), strconv.Itoa(ppid)) + } + os.Remove(forkFn) + + } + +} -- cgit v1.2.3