Skip to content

Commit 75c1381

Browse files
committed
cmd/gofmt: don't call Chmod on windows
Fixes golang#18026 Change-Id: Id510f427ceffb2441c3d6f5bb5c93244e46c6497 Reviewed-on: https://go-review.googlesource.com/33477 TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
1 parent 8ace346 commit 75c1381

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

src/cmd/gofmt/gofmt.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"os"
1919
"os/exec"
2020
"path/filepath"
21+
"runtime"
2122
"runtime/pprof"
2223
"strings"
2324
)
@@ -252,6 +253,8 @@ func diff(b1, b2 []byte) (data []byte, err error) {
252253

253254
}
254255

256+
const chmodSupported = runtime.GOOS != "windows"
257+
255258
// backupFile writes data to a new file named filename<number> with permissions perm,
256259
// with <number randomly chosen such that the file name is unique. backupFile returns
257260
// the chosen file name.
@@ -262,11 +265,13 @@ func backupFile(filename string, data []byte, perm os.FileMode) (string, error)
262265
return "", err
263266
}
264267
bakname := f.Name()
265-
err = f.Chmod(perm)
266-
if err != nil {
267-
f.Close()
268-
os.Remove(bakname)
269-
return bakname, err
268+
if chmodSupported {
269+
err = f.Chmod(perm)
270+
if err != nil {
271+
f.Close()
272+
os.Remove(bakname)
273+
return bakname, err
274+
}
270275
}
271276

272277
// write data to backup file

src/cmd/gofmt/gofmt_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,16 @@ func TestCRLF(t *testing.T) {
171171
t.Errorf("%s contains CR's", golden)
172172
}
173173
}
174+
175+
func TestBackupFile(t *testing.T) {
176+
dir, err := ioutil.TempDir("", "gofmt_test")
177+
if err != nil {
178+
t.Fatal(err)
179+
}
180+
defer os.RemoveAll(dir)
181+
name, err := backupFile(filepath.Join(dir, "foo.go"), []byte(" package main"), 0644)
182+
if err != nil {
183+
t.Fatal(err)
184+
}
185+
t.Logf("Created: %s", name)
186+
}

0 commit comments

Comments
 (0)