commit fc5a5c39878b1ff45aed3e25874c5c4b3b1de8a5
parent 012b6addd19104dcaee9a9df1d116ac7da4926fb
Author: gearsix <gearsix@tuta.io>
Date: Fri, 26 Nov 2021 13:07:53 +0000
added _test for copy.go
Diffstat:
3 files changed, 41 insertions(+), 34 deletions(-)
diff --git a/copy.go b/copy.go
@@ -42,10 +42,6 @@ import (
func CopyFile(src, dst string) (err error) {
var srcfi, dstfi os.FileInfo
- if err = os.MkdirAll(filepath.Dir(dst), 0777); err != nil {
- return err
- }
-
if srcfi, err = os.Stat(src); err != nil {
return err
} else if !srcfi.Mode().IsRegular() {
@@ -55,13 +51,17 @@ func CopyFile(src, dst string) (err error) {
if dstfi, err = os.Stat(dst); err != nil && !os.IsNotExist(err) {
return err
- } else if !dstfi.Mode().IsRegular() {
+ } else if dstfi != nil && !dstfi.Mode().IsRegular() {
return fmt.Errorf("cannot copy to non-regular destination file %s (%q)",
dstfi.Name(), dstfi.Mode().String())
} else if os.SameFile(srcfi, dstfi) {
return nil
}
+ if err = os.MkdirAll(filepath.Dir(dst), 0777); err != nil {
+ return err
+ }
+
cSrc := C.CString(src)
cDst := C.CString(dst)
if uint32(C.copyf(cSrc, cDst)) != 0 {
diff --git a/copy_test.go b/copy_test.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "os"
+ "testing"
+)
+
+func TestCopyFile(test *testing.T) {
+ test.Parallel()
+
+ var err error
+ tdir := test.TempDir()
+ src := tdir + "/src"
+ dst := tdir + "/dst"
+ data := []byte("data")
+ if err = os.WriteFile(src, data, 0666); err != nil {
+ test.Error("setup failed, could not write", tdir+"/src")
+ }
+
+ if err = CopyFile(src, dst); err != nil {
+ test.Fatal("CopyFile failed", err)
+ }
+ if _, err = os.Stat(dst); err != nil {
+ test.Fatalf("could not stat '%s'", dst)
+ }
+ var buf []byte
+ if buf, err = os.ReadFile(dst); err != nil {
+ test.Errorf("could not read '%s'", dst)
+ } else if len(buf) < len(data) {
+ test.Fatalf("not all data (%s) copied to '%s' (%s)", data, dst, buf)
+ } else if string(buf) != string(data) {
+ test.Fatalf("copied data (%s) does not match source (%s)", buf, data)
+ }
+}
+
diff --git a/page_test.go b/page_test.go
@@ -11,7 +11,7 @@ import (
// helper functions
func validateContents(t *testing.T, pages []Page, e error) {
- if len(pages) != len(contents)-1 {
+ if len(pages) != len(contents) {
t.Fatalf("invalid number of pages returned (%d should be %d)",
len(pages), len(contents))
}
@@ -268,34 +268,6 @@ func TestNewContentFromFile(test *testing.T) {
}
}
-func TestCopyFile(test *testing.T) {
- test.Parallel()
-
- var err error
- tdir := test.TempDir()
- src := tdir + "/src"
- dst := tdir + "/dst"
- data := []byte("data")
- if err = os.WriteFile(src, data, 0666); err != nil {
- test.Error("setup failed, could not write", tdir+"/src")
- }
-
- if err = CopyFile(src, dst); err != nil {
- test.Fatal("CopyFile failed", err)
- }
- if _, err = os.Stat(dst); err != nil {
- test.Fatalf("could not stat '%s'", dst)
- }
- var buf []byte
- if buf, err = os.ReadFile(dst); err != nil {
- test.Errorf("could not read '%s'", dst)
- } else if len(buf) < len(data) {
- test.Fatalf("not all data (%s) copied to '%s' (%s)", data, dst, buf)
- } else if string(buf) != string(data) {
- test.Fatalf("copied data (%s) does not match source (%s)", buf, data)
- }
-}
-
func TestCopyAssets(test *testing.T) {
test.Parallel()