Skip to content

Commit

Permalink
os: don't use T.Cleanup in TestRemoveAllLongPath
Browse files Browse the repository at this point in the history
Revert CL 306290 changes to TestRemoveAllLongPath. This breaks the test
on aix, illumos and solaris. We need to chdir out of startPath before
attempting to remove it.

Updates #45182

Change-Id: Ic14fa1962d6f2cc83238f6fc2c6932fd9a6e52a1
Reviewed-on: https://go-review.googlesource.com/c/go/+/307189
Trust: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
  • Loading branch information
tklauser committed Apr 4, 2021
1 parent 7bfd681 commit 4230a6e
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 20 deletions.
19 changes: 19 additions & 0 deletions src/os/os_windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,25 @@ import (
// For TestRawConnReadWrite.
type syscallDescriptor = syscall.Handle

// chdir changes the current working directory to the named directory,
// and then restore the original working directory at the end of the test.
func chdir(t *testing.T, dir string) {
olddir, err := os.Getwd()
if err != nil {
t.Fatalf("chdir: %v", err)
}
if err := os.Chdir(dir); err != nil {
t.Fatalf("chdir %s: %v", dir, err)
}

t.Cleanup(func() {
if err := os.Chdir(olddir); err != nil {
t.Errorf("chdir to original working directory %s: %v", olddir, err)
os.Exit(1)
}
})
}

func TestSameWindowsFile(t *testing.T) {
temp, err := os.MkdirTemp("", "TestSameWindowsFile")
if err != nil {
Expand Down
35 changes: 15 additions & 20 deletions src/os/removeall_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,25 +156,6 @@ func TestRemoveAllLarge(t *testing.T) {
}
}

// chdir changes the current working directory to the named directory,
// and then restore the original working directory at the end of the test.
func chdir(t *testing.T, dir string) {
olddir, err := os.Getwd()
if err != nil {
t.Fatalf("chdir: %v", err)
}
if err := os.Chdir(dir); err != nil {
t.Fatalf("chdir %s: %v", dir, err)
}

t.Cleanup(func() {
if err := os.Chdir(olddir); err != nil {
t.Errorf("chdir to original working directory %s: %v", olddir, err)
os.Exit(1)
}
})
}

func TestRemoveAllLongPath(t *testing.T) {
switch runtime.GOOS {
case "aix", "darwin", "ios", "dragonfly", "freebsd", "linux", "netbsd", "openbsd", "illumos", "solaris":
Expand All @@ -183,12 +164,21 @@ func TestRemoveAllLongPath(t *testing.T) {
t.Skip("skipping for not implemented platforms")
}

prevDir, err := Getwd()
if err != nil {
t.Fatalf("Could not get wd: %s", err)
}

startPath, err := os.MkdirTemp("", "TestRemoveAllLongPath-")
if err != nil {
t.Fatalf("Could not create TempDir: %s", err)
}
defer RemoveAll(startPath)
chdir(t, startPath)

err = Chdir(startPath)
if err != nil {
t.Fatalf("Could not chdir %s: %s", startPath, err)
}

// Removing paths with over 4096 chars commonly fails
for i := 0; i < 41; i++ {
Expand All @@ -205,6 +195,11 @@ func TestRemoveAllLongPath(t *testing.T) {
}
}

err = Chdir(prevDir)
if err != nil {
t.Fatalf("Could not chdir %s: %s", prevDir, err)
}

err = RemoveAll(startPath)
if err != nil {
t.Errorf("RemoveAll could not remove long file path %s: %s", startPath, err)
Expand Down

0 comments on commit 4230a6e

Please sign in to comment.