commit af2bc729ac896a6131541a77f19e7f338e5ee669
parent 84d768ae8bdb8e5263778c21eb2e0451874b91db
Author: gearsix <gearsix@tuta.io>
Date: Thu, 30 Sep 2021 00:10:59 +0100
page_test.go#TestBuild, refactor page.go#Build
Diffstat:
3 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/page.go b/page.go
@@ -363,19 +363,14 @@ func CopyFile(src, dst string) (err error) {
return dstf.Sync()
}
-func (p *Page) Build(outDir string, t suti.Template) error {
- if outb, err := t.Execute(p); err != nil {
- return err
- } else {
- out := filepath.Join(outDir, p.Path, "index.html")
- if err = os.MkdirAll(filepath.Dir(out), 0755); err != nil {
- return err
- }
- if err = os.WriteFile(out, outb.Bytes(), 0644); err != nil {
- return err
+func (p *Page) Build(outDir string, t suti.Template) (out string, err error) {
+ if outb, err := t.Execute(p); err == nil {
+ out = filepath.Join(outDir, p.Path, "index.html")
+ if err = os.MkdirAll(filepath.Dir(out), 0755); err == nil {
+ err = os.WriteFile(out, outb.Bytes(), 0644)
}
}
- return nil
+ return out, err
}
// convertTextToHTML parses textual data from `in` and line-by-line converts
diff --git a/page_test.go b/page_test.go
@@ -5,6 +5,7 @@ import (
"path/filepath"
"os"
"time"
+ "notabug.org/gearsix/suti"
"testing"
)
@@ -311,6 +312,22 @@ func TestCopyAssets(test *testing.T) {
func TestBuild(test *testing.T) {
test.Parallel()
- // BOOKMARK
+ // setup
+ var err error
+ tdir := test.TempDir()
+ p := NewPage("/test", time.Now())
+ t, err := suti.LoadTemplateString("tmpl", "test", "{{.Title}}")
+
+ var fpath string
+ if fpath, err = p.Build(tdir, t); err != nil {
+ test.Fatal(err)
+ }
+ var fbuf []byte
+ if fbuf, err = os.ReadFile(fpath); err != nil {
+ test.Fatal(err)
+ }
+ if string(fbuf) != "Test" {
+ test.Fatalf("invalid result parsed: '%s', expected: 'Test'", string(fbuf))
+ }
}
diff --git a/pagr.go b/pagr.go
@@ -80,7 +80,8 @@ func main() {
wg.Add(1)
go func(page Page) {
defer wg.Done()
- check(page.Build(config.Output, tmpl))
+ _, err = page.Build(config.Output, tmpl)
+ check(err)
check(page.CopyAssets(config.Pages, config.Output))
vlog("-> %s", page.Path)
}(pg)