shithub: hugo

Download patch

ref: 5f9596e68c55830d046de3faa88ab0a8f68fcf76
parent: de76d4a84ef38ed92887ddd78da639000d6e6371
author: bep <[email protected]>
date: Tue Jan 27 05:15:57 EST 2015

Add more tests to helper

--- a/helpers/content_test.go
+++ b/helpers/content_test.go
@@ -1,6 +1,8 @@
 package helpers
 
 import (
+	"github.com/stretchr/testify/assert"
+	"html/template"
 	"testing"
 )
 
@@ -19,4 +21,13 @@
 			t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output)
 		}
 	}
+}
+
+func TestStripEmptyNav(t *testing.T) {
+	cleaned := StripEmptyNav([]byte("do<nav>\n</nav>\n\nbedobedo"))
+	assert.Equal(t, []byte("dobedobedo"), cleaned)
+}
+
+func TestBytesToHTML(t *testing.T) {
+	assert.Equal(t, template.HTML("dobedobedo"), BytesToHTML([]byte("dobedobedo")))
 }
--- a/helpers/path.go
+++ b/helpers/path.go
@@ -131,6 +131,7 @@
 		return filepath.Clean(inPath)
 	}
 
+	// todo consider move workingDir to argument list
 	return filepath.Clean(filepath.Join(viper.GetString("WorkingDir"), inPath))
 }
 
--- a/helpers/path_test.go
+++ b/helpers/path_test.go
@@ -2,6 +2,7 @@
 
 import (
 	"fmt"
+	"github.com/spf13/viper"
 	"io/ioutil"
 	"os"
 	"path/filepath"
@@ -55,6 +56,37 @@
 	}
 }
 
+func TestGetRelativePath(t *testing.T) {
+	tests := []struct {
+		path   string
+		base   string
+		expect interface{}
+	}{
+		{filepath.FromSlash("/a/b"), filepath.FromSlash("/a"), filepath.FromSlash("b")},
+		{filepath.FromSlash("/c"), filepath.FromSlash("/a/b"), filepath.FromSlash("../../c")},
+		{filepath.FromSlash("/c"), "", false},
+	}
+	for i, this := range tests {
+		// ultimately a fancy wrapper around filepath.Rel
+		result, err := GetRelativePath(this.path, this.base)
+
+		if b, ok := this.expect.(bool); ok && !b {
+			if err == nil {
+				t.Errorf("[%d] GetRelativePath didn't return an expected error", i)
+			}
+		} else {
+			if err != nil {
+				t.Errorf("[%d] GetRelativePath failed: %s", i, err)
+				continue
+			}
+			if result != this.expect {
+				t.Errorf("[%d] GetRelativePath got %v but expected %v", i, result, this.expect)
+			}
+		}
+
+	}
+}
+
 func TestMakePathRelative(t *testing.T) {
 	type test struct {
 		inPath, path1, path2, output string
@@ -357,21 +389,21 @@
 
 }
 
-// TestAbsPathify cannot be tested further because it relies on the
-// viper.GetString("WorkingDir") which the test cannot know.
-// viper.GetString("WorkingDir") should be passed to AbsPathify as a
-// parameter.
 func TestAbsPathify(t *testing.T) {
 	type test struct {
-		input, expected string
+		inPath, workingDir, expected string
 	}
 	data := []test{
-		{os.TempDir(), filepath.Clean(os.TempDir())}, // TempDir has trailing slash
-		{filepath.FromSlash("/banana/../dir/"), filepath.FromSlash("/dir")},
+		{os.TempDir(), filepath.FromSlash("/work"), filepath.Clean(os.TempDir())}, // TempDir has trailing slash
+		{filepath.FromSlash("/banana/../dir/"), filepath.FromSlash("/work"), filepath.FromSlash("/dir")},
+		{"dir", filepath.FromSlash("/work"), filepath.FromSlash("/work/dir")},
 	}
 
 	for i, d := range data {
-		expected := AbsPathify(d.input)
+		// todo see comment in AbsPathify
+		viper.Set("WorkingDir", d.workingDir)
+
+		expected := AbsPathify(d.inPath)
 		if d.expected != expected {
 			t.Errorf("Test %d failed. Expected %q but go %q", i, d.expected, expected)
 		}