Skip to content

Commit 81475ca

Browse files
dpinelabradfitz
authored andcommitted
os: ensure tests pass even if GOROOT is read-only
We achieve this by always running all tests that create files in a fresh temporary directory, rather than just on darwin/{arm,arm64}. As a bonus, this lets us simplify the cleanup code for these tests and assume their working directory starts out empty. Updates #28387 Change-Id: I952007ae390a2451c9a368da26c7f9f5af64b2ba Reviewed-on: https://go-review.googlesource.com/c/145283 Reviewed-by: Brad Fitzpatrick <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 3fe9d4c commit 81475ca

File tree

1 file changed

+1
-40
lines changed

1 file changed

+1
-40
lines changed

src/os/os_test.go

+1-40
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ func TestStatError(t *testing.T) {
178178
defer chtmpdir(t)()
179179

180180
path := "no-such-file"
181-
Remove(path) // Just in case
182181

183182
fi, err := Stat(path)
184183
if err == nil {
@@ -194,12 +193,10 @@ func TestStatError(t *testing.T) {
194193
testenv.MustHaveSymlink(t)
195194

196195
link := "symlink"
197-
Remove(link) // Just in case
198196
err = Symlink(path, link)
199197
if err != nil {
200198
t.Fatal(err)
201199
}
202-
defer Remove(link)
203200

204201
fi, err = Stat(link)
205202
if err == nil {
@@ -688,12 +685,10 @@ func TestHardLink(t *testing.T) {
688685

689686
defer chtmpdir(t)()
690687
from, to := "hardlinktestfrom", "hardlinktestto"
691-
Remove(from) // Just in case.
692688
file, err := Create(to)
693689
if err != nil {
694690
t.Fatalf("open %q failed: %v", to, err)
695691
}
696-
defer Remove(to)
697692
if err = file.Close(); err != nil {
698693
t.Errorf("close %q failed: %v", to, err)
699694
}
@@ -709,7 +704,6 @@ func TestHardLink(t *testing.T) {
709704
t.Errorf("link %q, %q failed to return a valid error", none, none)
710705
}
711706

712-
defer Remove(from)
713707
tostat, err := Stat(to)
714708
if err != nil {
715709
t.Fatalf("stat %q failed: %v", to, err)
@@ -745,11 +739,8 @@ func TestHardLink(t *testing.T) {
745739
}
746740

747741
// chtmpdir changes the working directory to a new temporary directory and
748-
// provides a cleanup function. Used when PWD is read-only.
742+
// provides a cleanup function.
749743
func chtmpdir(t *testing.T) func() {
750-
if runtime.GOOS != "darwin" || (runtime.GOARCH != "arm" && runtime.GOARCH != "arm64") {
751-
return func() {} // only needed on darwin/arm{,64}
752-
}
753744
oldwd, err := Getwd()
754745
if err != nil {
755746
t.Fatalf("chtmpdir: %v", err)
@@ -774,20 +765,17 @@ func TestSymlink(t *testing.T) {
774765

775766
defer chtmpdir(t)()
776767
from, to := "symlinktestfrom", "symlinktestto"
777-
Remove(from) // Just in case.
778768
file, err := Create(to)
779769
if err != nil {
780770
t.Fatalf("Create(%q) failed: %v", to, err)
781771
}
782-
defer Remove(to)
783772
if err = file.Close(); err != nil {
784773
t.Errorf("Close(%q) failed: %v", to, err)
785774
}
786775
err = Symlink(to, from)
787776
if err != nil {
788777
t.Fatalf("Symlink(%q, %q) failed: %v", to, from, err)
789778
}
790-
defer Remove(from)
791779
tostat, err := Lstat(to)
792780
if err != nil {
793781
t.Fatalf("Lstat(%q) failed: %v", to, err)
@@ -841,12 +829,10 @@ func TestLongSymlink(t *testing.T) {
841829
// Long, but not too long: a common limit is 255.
842830
s = s + s + s + s + s + s + s + s + s + s + s + s + s + s + s
843831
from := "longsymlinktestfrom"
844-
Remove(from) // Just in case.
845832
err := Symlink(s, from)
846833
if err != nil {
847834
t.Fatalf("symlink %q, %q failed: %v", s, from, err)
848835
}
849-
defer Remove(from)
850836
r, err := Readlink(from)
851837
if err != nil {
852838
t.Fatalf("readlink %q failed: %v", from, err)
@@ -859,9 +845,6 @@ func TestLongSymlink(t *testing.T) {
859845
func TestRename(t *testing.T) {
860846
defer chtmpdir(t)()
861847
from, to := "renamefrom", "renameto"
862-
// Ensure we are not testing the overwrite case here.
863-
Remove(from)
864-
Remove(to)
865848

866849
file, err := Create(from)
867850
if err != nil {
@@ -874,7 +857,6 @@ func TestRename(t *testing.T) {
874857
if err != nil {
875858
t.Fatalf("rename %q, %q failed: %v", to, from, err)
876859
}
877-
defer Remove(to)
878860
_, err = Stat(to)
879861
if err != nil {
880862
t.Errorf("stat %q failed: %v", to, err)
@@ -884,9 +866,6 @@ func TestRename(t *testing.T) {
884866
func TestRenameOverwriteDest(t *testing.T) {
885867
defer chtmpdir(t)()
886868
from, to := "renamefrom", "renameto"
887-
// Just in case.
888-
Remove(from)
889-
Remove(to)
890869

891870
toData := []byte("to")
892871
fromData := []byte("from")
@@ -904,7 +883,6 @@ func TestRenameOverwriteDest(t *testing.T) {
904883
if err != nil {
905884
t.Fatalf("rename %q, %q failed: %v", to, from, err)
906885
}
907-
defer Remove(to)
908886

909887
_, err = Stat(from)
910888
if err == nil {
@@ -925,9 +903,6 @@ func TestRenameOverwriteDest(t *testing.T) {
925903
func TestRenameFailed(t *testing.T) {
926904
defer chtmpdir(t)()
927905
from, to := "renamefrom", "renameto"
928-
// Ensure we are not testing the overwrite case here.
929-
Remove(from)
930-
Remove(to)
931906

932907
err := Rename(from, to)
933908
switch err := err.(type) {
@@ -943,9 +918,6 @@ func TestRenameFailed(t *testing.T) {
943918
}
944919
case nil:
945920
t.Errorf("rename %q, %q: expected error, got nil", from, to)
946-
947-
// cleanup whatever was placed in "renameto"
948-
Remove(to)
949921
default:
950922
t.Errorf("rename %q, %q: expected %T, got %T %v", from, to, new(LinkError), err, err)
951923
}
@@ -956,7 +928,6 @@ func TestRenameNotExisting(t *testing.T) {
956928
from, to := "doesnt-exist", "dest"
957929

958930
Mkdir(to, 0777)
959-
defer Remove(to)
960931

961932
if err := Rename(from, to); !IsNotExist(err) {
962933
t.Errorf("Rename(%q, %q) = %v; want an IsNotExist error", from, to, err)
@@ -967,12 +938,8 @@ func TestRenameToDirFailed(t *testing.T) {
967938
defer chtmpdir(t)()
968939
from, to := "renamefrom", "renameto"
969940

970-
Remove(from)
971-
Remove(to)
972941
Mkdir(from, 0777)
973942
Mkdir(to, 0777)
974-
defer Remove(from)
975-
defer Remove(to)
976943

977944
err := Rename(from, to)
978945
switch err := err.(type) {
@@ -988,9 +955,6 @@ func TestRenameToDirFailed(t *testing.T) {
988955
}
989956
case nil:
990957
t.Errorf("rename %q, %q: expected error, got nil", from, to)
991-
992-
// cleanup whatever was placed in "renameto"
993-
Remove(to)
994958
default:
995959
t.Errorf("rename %q, %q: expected %T, got %T %v", from, to, new(LinkError), err, err)
996960
}
@@ -1702,7 +1666,6 @@ func writeFile(t *testing.T, fname string, flag int, text string) string {
17021666
func TestAppend(t *testing.T) {
17031667
defer chtmpdir(t)()
17041668
const f = "append.txt"
1705-
defer Remove(f)
17061669
s := writeFile(t, f, O_CREATE|O_TRUNC|O_RDWR, "new")
17071670
if s != "new" {
17081671
t.Fatalf("writeFile: have %q want %q", s, "new")
@@ -1769,13 +1732,11 @@ func TestSameFile(t *testing.T) {
17691732
if err != nil {
17701733
t.Fatalf("Create(a): %v", err)
17711734
}
1772-
defer Remove(fa.Name())
17731735
fa.Close()
17741736
fb, err := Create("b")
17751737
if err != nil {
17761738
t.Fatalf("Create(b): %v", err)
17771739
}
1778-
defer Remove(fb.Name())
17791740
fb.Close()
17801741

17811742
ia1, err := Stat("a")

0 commit comments

Comments
 (0)