pagr

A 'static site generator', built using dati.
Log | Files | Refs | Atom

commit fc5a5c39878b1ff45aed3e25874c5c4b3b1de8a5
parent 012b6addd19104dcaee9a9df1d116ac7da4926fb
Author: gearsix <gearsix@tuta.io>
Date:   Fri, 26 Nov 2021 13:07:53 +0000

added _test for copy.go

Diffstat:
Mcopy.go | 10+++++-----
Acopy_test.go | 35+++++++++++++++++++++++++++++++++++
Mpage_test.go | 30+-----------------------------
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()