Truncate changes the size of the file. It does not change the I/O offset.
Fixes #29757
Change-Id: I1aa9223a86d6a8ce3c0efc3ac1d7d7647b77f589
Reviewed-on: https://go-review.googlesource.com/c/158117
Reviewed-by: Bryan C. Mills <bcmills@google.com>
prev, _ := strconv.ParseInt(strings.TrimSpace(string(buf)), 10, 64)
if now > prev {
if err = f.Truncate(0); err == nil {
- _, err = fmt.Fprintf(f, "%d\n", now)
+ if _, err = f.Seek(0, 0); err == nil {
+ _, err = fmt.Fprintf(f, "%d\n", now)
+ }
}
}
if closeErr := f.Close(); err == nil {
--- /dev/null
+# go clean -testcache
+# should work (see golang.org/issue/29757).
+cd x
+go test x_test.go
+go clean -testcache
+go test x_test.go
+! stdout 'cached'
+
+
+-- x/x_test.go --
+package x_test
+import (
+ "testing"
+)
+func TestMain(t *testing.T) {
+}
\ No newline at end of file