Source file
src/runtime/fds_test.go
1
2
3
4
5
6
7 package runtime_test
8
9 import (
10 "internal/testenv"
11 "os"
12 "strings"
13 "testing"
14 )
15
16 func TestCheckFDs(t *testing.T) {
17 if *flagQuick {
18 t.Skip("-quick")
19 }
20
21 testenv.MustHaveGoBuild(t)
22
23 fdsBin, err := buildTestProg(t, "testfds")
24 if err != nil {
25 t.Fatal(err)
26 }
27
28 i, err := os.CreateTemp(t.TempDir(), "fds-input")
29 if err != nil {
30 t.Fatal(err)
31 }
32 if _, err := i.Write([]byte("stdin")); err != nil {
33 t.Fatal(err)
34 }
35 if err := i.Close(); err != nil {
36 t.Fatal(err)
37 }
38
39 o, err := os.CreateTemp(t.TempDir(), "fds-output")
40 if err != nil {
41 t.Fatal(err)
42 }
43 outputPath := o.Name()
44 if err := o.Close(); err != nil {
45 t.Fatal(err)
46 }
47
48 env := []string{"TEST_OUTPUT=" + outputPath}
49 for _, e := range os.Environ() {
50 if strings.HasPrefix(e, "GODEBUG=") || strings.HasPrefix(e, "GOTRACEBACK=") {
51 continue
52 }
53 env = append(env, e)
54 }
55
56 proc, err := os.StartProcess(fdsBin, []string{fdsBin}, &os.ProcAttr{
57 Env: env,
58 Files: []*os.File{},
59 })
60 if err != nil {
61 t.Fatal(err)
62 }
63 ps, err := proc.Wait()
64 if err != nil {
65 t.Fatal(err)
66 }
67 if ps.ExitCode() != 0 {
68 t.Fatalf("testfds failed: %d", ps.ExitCode())
69 }
70
71 fc, err := os.ReadFile(outputPath)
72 if err != nil {
73 t.Fatal(err)
74 }
75 if string(fc) != "" {
76 t.Errorf("unexpected file content, got: %q", string(fc))
77 }
78 }
79
View as plain text