cache: Fix --gc failure on Windows - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 184a67ac4704b88083c43a68a5f85800192d7ff1
 (DIR) parent 6c798eba607a7e019cc1dfce6fd68be7f770c5bd
 (HTM) Author: Oleksandr Redko <oleksandr.red+github@gmail.com>
       Date:   Sat,  4 Mar 2023 16:49:25 +0200
       
       cache: Fix --gc failure on Windows
       
       Fixes "Error: failed to prune cache" on Windows and removes
       work around from ec1c97e7e9d62ce5245135e0906fdedf14af0cae.
       
       Follows #10781.
       
       Diffstat:
         M cache/filecache/filecache_pruner.go |      16 +---------------
         M cache/filecache/integration_test.go |       9 ++-------
       
       2 files changed, 3 insertions(+), 22 deletions(-)
       ---
 (DIR) diff --git a/cache/filecache/filecache_pruner.go b/cache/filecache/filecache_pruner.go
       @@ -17,8 +17,6 @@ import (
                "fmt"
                "io"
                "os"
       -        "runtime"
       -        "strings"
        
                "github.com/gohugoio/hugo/common/herrors"
                "github.com/gohugoio/hugo/hugofs"
       @@ -73,8 +71,8 @@ func (c *Cache) Prune(force bool) (int, error) {
                                        // This cache dir may not exist.
                                        return nil
                                }
       -                        defer f.Close()
                                _, err = f.Readdirnames(1)
       +                        f.Close()
                                if err == io.EOF {
                                        // Empty dir.
                                        if name == "." {
       @@ -82,18 +80,6 @@ func (c *Cache) Prune(force bool) (int, error) {
                                                err = nil
                                        } else {
                                                err = c.Fs.Remove(name)
       -                                        if err != nil {
       -                                                if runtime.GOOS == "windows" {
       -                                                        if strings.Contains(err.Error(), "used by another process") {
       -                                                                // See https://github.com/gohugoio/hugo/issues/10781
       -                                                                // This is a known issue on Windows with Go 1.20.
       -                                                                // There's not much we can do about it.
       -                                                                // So just return nil.
       -                                                                err = nil
       -
       -                                                        }
       -                                                }
       -                                        }
                                        }
                                }
        
 (DIR) diff --git a/cache/filecache/integration_test.go b/cache/filecache/integration_test.go
       @@ -15,7 +15,6 @@ package filecache_test
        
        import (
                "path/filepath"
       -        "runtime"
                "testing"
                "time"
        
       @@ -90,12 +89,8 @@ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAA
                b.Assert(b.GCCount, qt.Equals, 1)
                // Build it again to GC the empty a dir.
                b.Build()
       -        if runtime.GOOS != "windows" {
       -                // See issue #58860 -- this sometimes fails on Windows,
       -                // but the empty directory will be removed on the next run.
       -                _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a"))
       -                b.Assert(err, qt.Not(qt.IsNil))
       -        }
       +        _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a"))
       +        b.Assert(err, qt.Not(qt.IsNil))
                _, err = b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir)
                b.Assert(err, qt.IsNil)