]> Cypherpunks repositories - gostls13.git/commitdiff
os/exec: deflake a test on Linux
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 23 Apr 2014 00:13:38 +0000 (17:13 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 23 Apr 2014 00:13:38 +0000 (17:13 -0700)
Work around buggy(?) Linux /proc filesystem.

Fixes #7808

LGTM=iant
R=golang-codereviews, iant
CC=adg, golang-codereviews
https://golang.org/cl/90400044

src/pkg/os/exec/exec_test.go

index ca19fe9bee5e15eba9b710e51fa6fc2543ff391e..7a95579f15dde771a5239a92397fb5151a53fa9c 100644 (file)
@@ -224,10 +224,21 @@ func TestPipeLookPathLeak(t *testing.T) {
                        t.Fatal("unexpected success")
                }
        }
-       open, lsof := numOpenFDS(t)
-       fdGrowth := open - fd0
-       if fdGrowth > 2 {
-               t.Errorf("leaked %d fds; want ~0; have:\n%s\noriginally:\n%s", fdGrowth, lsof, lsof0)
+       for triesLeft := 3; triesLeft >= 0; triesLeft-- {
+               open, lsof := numOpenFDS(t)
+               fdGrowth := open - fd0
+               if fdGrowth > 2 {
+                       if triesLeft > 0 {
+                               // Work around what appears to be a race with Linux's
+                               // proc filesystem (as used by lsof). It seems to only
+                               // be eventually consistent. Give it awhile to settle.
+                               // See golang.org/issue/7808
+                               time.Sleep(100 * time.Millisecond)
+                               continue
+                       }
+                       t.Errorf("leaked %d fds; want ~0; have:\n%s\noriginally:\n%s", fdGrowth, lsof, lsof0)
+               }
+               break
        }
 }