mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
os: restore testErrNotExist's working directory on os.Chdir success
The existing implementation calls os.Chdir expecting the call not to succeed. This change restores the original working directory in the case that the call does succeed. Fixes #45407 Change-Id: I61c57f6858b9a9058226e45e24276c7af8913048 Reviewed-on: https://go-review.googlesource.com/c/go/+/308849 Trust: Emmanuel Odeke <emmanuel@orijtech.com> Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
263e13d1f7
commit
841bc14216
1 changed files with 12 additions and 4 deletions
|
|
@ -33,7 +33,12 @@ func TestErrIsExist(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func testErrNotExist(name string) string {
|
||||
func testErrNotExist(t *testing.T, name string) string {
|
||||
originalWD, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
f, err := os.Open(name)
|
||||
if err == nil {
|
||||
f.Close()
|
||||
|
|
@ -45,7 +50,10 @@ func testErrNotExist(name string) string {
|
|||
|
||||
err = os.Chdir(name)
|
||||
if err == nil {
|
||||
return "Chdir should have failed"
|
||||
if err := os.Chdir(originalWD); err != nil {
|
||||
t.Fatalf("Chdir should have failed, failed to restore original working directory: %v", err)
|
||||
}
|
||||
return "Chdir should have failed, restored original working directory"
|
||||
}
|
||||
if s := checkErrorPredicate("os.IsNotExist", os.IsNotExist, err, fs.ErrNotExist); s != "" {
|
||||
return s
|
||||
|
|
@ -56,13 +64,13 @@ func testErrNotExist(name string) string {
|
|||
func TestErrIsNotExist(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
name := filepath.Join(tmpDir, "NotExists")
|
||||
if s := testErrNotExist(name); s != "" {
|
||||
if s := testErrNotExist(t, name); s != "" {
|
||||
t.Fatal(s)
|
||||
return
|
||||
}
|
||||
|
||||
name = filepath.Join(name, "NotExists2")
|
||||
if s := testErrNotExist(name); s != "" {
|
||||
if s := testErrNotExist(t, name); s != "" {
|
||||
t.Fatal(s)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue