Move in memory target into target module.

This commit is contained in:
Noah Campbell 2013-10-01 14:56:14 -07:00
parent 80009b427f
commit ff8b52758d
3 changed files with 35 additions and 29 deletions

View file

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/spf13/hugo/source" "github.com/spf13/hugo/source"
"github.com/spf13/hugo/target"
"html/template" "html/template"
"strings" "strings"
"testing" "testing"
@ -194,7 +195,7 @@ func TestTargetPath(t *testing.T) {
func TestSkipRender(t *testing.T) { func TestSkipRender(t *testing.T) {
files := make(map[string][]byte) files := make(map[string][]byte)
target := &InMemoryTarget{files: files} target := &target.InMemoryTarget{Files: files}
sources := []source.ByteSource{ sources := []source.ByteSource{
{"sect/doc1.html", []byte("---\nmarkup: markdown\n---\n# title\nsome *content*"), "sect"}, {"sect/doc1.html", []byte("---\nmarkup: markdown\n---\n# title\nsome *content*"), "sect"},
{"sect/doc2.html", []byte("<!doctype html><html><body>more content</body></html>"), "sect"}, {"sect/doc2.html", []byte("<!doctype html><html><body>more content</body></html>"), "sect"},
@ -240,9 +241,9 @@ func TestSkipRender(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
content, ok := target.files[test.doc] content, ok := target.Files[test.doc]
if !ok { if !ok {
t.Fatalf("Did not find %s in target. %v", test.doc, target.files) t.Fatalf("Did not find %s in target. %v", test.doc, target.Files)
} }
if !bytes.Equal(content, []byte(test.expected)) { if !bytes.Equal(content, []byte(test.expected)) {
@ -253,7 +254,7 @@ func TestSkipRender(t *testing.T) {
func TestAbsUrlify(t *testing.T) { func TestAbsUrlify(t *testing.T) {
files := make(map[string][]byte) files := make(map[string][]byte)
target := &InMemoryTarget{files: files} target := &target.InMemoryTarget{Files: files}
sources := []source.ByteSource{ sources := []source.ByteSource{
{"sect/doc1.html", []byte("<!doctype html><html><head></head><body><a href=\"#frag1\">link</a></body></html>"), "sect"}, {"sect/doc1.html", []byte("<!doctype html><html><head></head><body><a href=\"#frag1\">link</a></body></html>"), "sect"},
{"content/blue/doc2.html", []byte("---\nf: t\n---\n<!doctype html><html><body>more content</body></html>"), "blue"}, {"content/blue/doc2.html", []byte("---\nf: t\n---\n<!doctype html><html><body>more content</body></html>"), "blue"},
@ -287,7 +288,7 @@ func TestAbsUrlify(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
content, ok := target.files[test.file] content, ok := target.Files[test.file]
if !ok { if !ok {
t.Fatalf("Unable to locate rendered content: %s", test.file) t.Fatalf("Unable to locate rendered content: %s", test.file)
} }

View file

@ -1,11 +1,9 @@
package hugolib package hugolib
import ( import (
"bytes"
"github.com/spf13/hugo/source" "github.com/spf13/hugo/source"
"github.com/spf13/hugo/target" "github.com/spf13/hugo/target"
"html/template" "html/template"
"io"
"testing" "testing"
) )
@ -33,24 +31,6 @@ func mustReturn(ret *Page, err error) *Page {
return ret return ret
} }
type InMemoryTarget struct {
files map[string][]byte
}
func (t *InMemoryTarget) Publish(label string, reader io.Reader) (err error) {
if t.files == nil {
t.files = make(map[string][]byte)
}
bytes := new(bytes.Buffer)
bytes.ReadFrom(reader)
t.files[label] = bytes.Bytes()
return
}
func (t *InMemoryTarget) Translate(label string) (dest string, err error) {
return label, nil
}
type InMemoryAliasTarget struct { type InMemoryAliasTarget struct {
target.HTMLRedirectAlias target.HTMLRedirectAlias
files map[string][]byte files map[string][]byte
@ -69,7 +49,7 @@ var urlFakeSource = []source.ByteSource{
func TestPageCount(t *testing.T) { func TestPageCount(t *testing.T) {
files := make(map[string][]byte) files := make(map[string][]byte)
target := &InMemoryTarget{files: files} target := &target.InMemoryTarget{Files: files}
alias := &InMemoryAliasTarget{files: files} alias := &InMemoryAliasTarget{files: files}
s := &Site{ s := &Site{
Target: target, Target: target,
@ -96,9 +76,9 @@ func TestPageCount(t *testing.T) {
t.Errorf("Unable to render site lists: %s", err) t.Errorf("Unable to render site lists: %s", err)
} }
blueIndex := target.files["blue"] blueIndex := target.Files["blue"]
if blueIndex == nil { if blueIndex == nil {
t.Errorf("No indexed rendered. %v", target.files) t.Errorf("No indexed rendered. %v", target.Files)
} }
expected := "<html><head></head><body>..</body></html>" expected := "<html><head></head><body>..</body></html>"
@ -112,7 +92,7 @@ func TestPageCount(t *testing.T) {
"sd3/index.html", "sd3/index.html",
"sd4.html", "sd4.html",
} { } {
if _, ok := target.files[s]; !ok { if _, ok := target.Files[s]; !ok {
t.Errorf("No alias rendered: %s", s) t.Errorf("No alias rendered: %s", s)
} }
} }

25
target/memory.go Normal file
View file

@ -0,0 +1,25 @@
package target
import (
"io"
"bytes"
)
type InMemoryTarget struct {
Files map[string][]byte
}
func (t *InMemoryTarget) Publish(label string, reader io.Reader) (err error) {
if t.Files == nil {
t.Files = make(map[string][]byte)
}
bytes := new(bytes.Buffer)
bytes.ReadFrom(reader)
t.Files[label] = bytes.Bytes()
return
}
func (t *InMemoryTarget) Translate(label string) (dest string, err error) {
return label, nil
}