-
Notifications
You must be signed in to change notification settings - Fork 0
/
example_test.go
47 lines (37 loc) · 1.11 KB
/
example_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package renameonclose_test
import (
roc "github.com/james-antill/rename-on-close"
)
func ExampleCreate() {
content := []byte("new file's content")
nf, err := roc.Create("abcd")
if err != nil {
panic(err)
}
defer nf.Close() // clean up
if _, err := nf.Write(content); err != nil {
panic(err) // This will also, try to, remove the file
}
if err := nf.CloseRename(); err != nil { // Rename over the original file
panic(err) // Dito. any failure and you keep the original.
}
}
func ExampleCreate_diffsync() {
content := []byte("new sync file's content")
nf, err := roc.Create("abcd")
if err != nil {
panic(err)
}
defer nf.Close() // clean up
if _, err := nf.Write(content); err != nil {
panic(err) // This will also, try to, remove the file
}
_ = nf.Sync() // This makes a sync happen at close time, so no error can happen here
if d, _ := nf.IsDifferent(); d {
// Rename over the original file, after sync'ing
if err := nf.CloseRename(); err != nil {
panic(err) // Note: nf.File.Sync() fails then you keep the original.
}
}
// If the files are the same then the defer'd close will clean up
}