func writeFileAtomic(path string, data []byte, mode os.FileMode, uid, gid int) error { chmodAndChown := func(f *os.File) error { if err := f.Chmod(mode); err != nil { return err } if uid != 0 { if err := f.Chown(uid, gid); err != nil { return err } } return nil } return utils.AtomicWriteFileAndChange(path, data, chmodAndChown) }
expectErr string }{{ summary: "atomic file write and chmod 0644", change: func(filename string, contents []byte) error { return utils.AtomicWriteFile(filename, contents, 0765) }, check: func(c *gc.C, fi os.FileInfo) { c.Assert(fi.Mode(), gc.Equals, 0765) }, }, { summary: "atomic file write and change", change: func(filename string, contents []byte) error { chmodChange := func(f *os.File) error { return f.Chmod(0700) } return utils.AtomicWriteFileAndChange(filename, contents, chmodChange) }, check: func(c *gc.C, fi os.FileInfo) { c.Assert(fi.Mode(), gc.Equals, 0700) }, }, { summary: "atomic file write empty contents", change: func(filename string, contents []byte) error { nopChange := func(*os.File) error { return nil } return utils.AtomicWriteFileAndChange(filename, contents, nopChange) }, }, { summary: "atomic file write and failing change func", change: func(filename string, contents []byte) error {