-
Notifications
You must be signed in to change notification settings - Fork 1
/
site_test.go
124 lines (103 loc) · 2.37 KB
/
site_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package main
import (
"errors"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"regexp"
"strings"
"testing"
"github.com/atmoz/ply/fileutil"
)
func copyTestDir(subdir string) string {
dir, err := ioutil.TempDir("", "ply")
if err != nil {
panic(err)
}
fileutil.CopyDirectory(filepath.Join("test_files", subdir), dir, nil)
return dir
}
func compareFiles(a, b string) bool {
contentA, _ := ioutil.ReadFile(a)
contentB, _ := ioutil.ReadFile(b)
if string(contentA) == "" || string(contentA) != string(contentB) {
fmt.Println("Files are not equal:", a, "and", b)
fmt.Println(a, string(contentA))
fmt.Println(b, string(contentB))
return false
}
return true
}
func compareAllExpectedFiles(site *Site) bool {
numFiles := 0
walkFn := func(path string, info os.FileInfo, err error) error {
relPath := strings.TrimPrefix(path, filepath.Join(site.SourcePath, "ply.expected"))
targetPath := filepath.Join(site.TargetPath, relPath)
if info != nil && !info.IsDir() {
numFiles++
if !compareFiles(path, targetPath) {
return errors.New(targetPath + " was not as expected")
}
}
return nil
}
if err := filepath.Walk(filepath.Join(site.SourcePath, "ply.expected"), walkFn); err != nil {
fmt.Println(err)
return false
}
if numFiles == 0 {
fmt.Println("Found no files to compare")
return false
}
return true
}
func buildAndCompare(site *Site, path string) bool {
site.SourcePath = copyTestDir(path)
defer os.RemoveAll(site.SourcePath)
if err := site.Init(); err != nil {
fmt.Println(err)
return false
}
re := regexp.MustCompile(`ply\.expected$`)
site.copyOptions.IgnoreRegex = append(site.copyOptions.IgnoreRegex, re)
site.Build()
return compareAllExpectedFiles(site)
}
func TestOnePage(t *testing.T) {
var site Site
if !buildAndCompare(&site, "one_page") {
t.Fail()
}
}
func TestOneTemplate(t *testing.T) {
var site Site
if !buildAndCompare(&site, "one_template") {
t.Fail()
}
}
func TestLinks(t *testing.T) {
var site Site
if !buildAndCompare(&site, "links") {
t.Fail()
}
}
func TestLinksPretty(t *testing.T) {
var site Site
site.prettyUrls = true
if !buildAndCompare(&site, "links_pretty") {
t.Fail()
}
}
func TestExampleBlog(t *testing.T) {
var site Site
if !buildAndCompare(&site, "example_blog") {
t.Fail()
}
}
func TestExampleGallery(t *testing.T) {
var site Site
if !buildAndCompare(&site, "example_gallery") {
t.Fail()
}
}