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") +    } +  }) +} | 
