]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: log more information about leaked temp files
authorBryan C. Mills <bcmills@google.com>
Thu, 23 Mar 2023 20:10:52 +0000 (16:10 -0400)
committerGopher Robot <gobot@golang.org>
Thu, 18 May 2023 19:40:29 +0000 (19:40 +0000)
Previously, we were only logging the top-level names of leaked
directories, which doesn't provide much information for debugging.

For #55260.

Change-Id: I845d158135d67b5d7fdeb16ab7031a061535e643
Reviewed-on: https://go-review.googlesource.com/c/go/+/479055
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/go/go_test.go

index bfbf1e8e979b1230caf66330e756b1bf1e44ae46..291f51244727d281341232230a5eec8fdf5b32ec 100644 (file)
@@ -312,16 +312,33 @@ func TestMain(m *testing.M) {
 
        if !*testWork {
                // There shouldn't be anything left in topTmpdir.
-               dirf, err := os.Open(topTmpdir)
-               if err != nil {
-                       log.Fatal(err)
-               }
-               names, err := dirf.Readdirnames(0)
+               var extraFiles, extraDirs []string
+               err := filepath.WalkDir(topTmpdir, func(path string, d fs.DirEntry, err error) error {
+                       if err != nil {
+                               return err
+                       }
+                       if path == topTmpdir {
+                               return nil
+                       }
+
+                       if rel, err := filepath.Rel(topTmpdir, path); err == nil {
+                               path = rel
+                       }
+                       if d.IsDir() {
+                               extraDirs = append(extraDirs, path)
+                       } else {
+                               extraFiles = append(extraFiles, path)
+                       }
+                       return nil
+               })
                if err != nil {
                        log.Fatal(err)
                }
-               if len(names) > 0 {
-                       log.Fatalf("unexpected files left in tmpdir: %v", names)
+
+               if len(extraFiles) > 0 {
+                       log.Fatalf("unexpected files left in tmpdir: %q", extraFiles)
+               } else if len(extraDirs) > 0 {
+                       log.Fatalf("unexpected subdirectories left in tmpdir: %q", extraDirs)
                }
 
                removeAll(topTmpdir)