diff options
Diffstat (limited to 'atomictemp/atomictemp_test.go')
-rw-r--r-- | atomictemp/atomictemp_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/atomictemp/atomictemp_test.go b/atomictemp/atomictemp_test.go new file mode 100644 index 0000000..401c730 --- /dev/null +++ b/atomictemp/atomictemp_test.go @@ -0,0 +1,68 @@ +package atomictemp + +import ( + "errors" + "io" + "os" + "path/filepath" + "testing" +) + +func TestCreate(t *testing.T) { + dir, err := os.MkdirTemp("", "") + if err != nil { + t.Error(err) + } + + // test good file + goodTests := []string { "foo", "bar", "baz" } + for _, test := range(goodTests) { + t.Run(test, func(t *testing.T) { + // build destination path + path := filepath.Join(dir, test) + + // create temp file + err := Create(path, func(f io.Writer) error { + _, err := f.Write([]byte(test)) + return err + }) + + if err != nil { + t.Error(err) + return + } + + if got, err := os.ReadFile(path); err != nil { + t.Error(err) + } else if string(got) != test { + t.Errorf("got \"%s\", exp \"%s\"", string(got), test) + } + }) + } + + t.Run("badDir", func(t *testing.T) { + // build nonsense path to destination file + badPath := filepath.Join(dir, "does/not/exist") + + err := Create(badPath, func(_ io.Writer) error { + return nil + }) + + if err == nil { + t.Errorf("got success, exp error") + } + }) + + t.Run("badFunc", func(t *testing.T) { + // build path + path := filepath.Join(dir, "badFunc") + + err := Create(path, func(_ io.Writer) error { + return errors.New("ack!") + }) + + if err == nil { + t.Errorf("got success, exp error") + } + }) +} |