shithub: hugo

Download patch

ref: 6274aa0a64b0cb229a556d71c1d34d4139446aaa
parent: 610c06e6589770d950d8fd4e01efd90b132fcff5
author: Noah Campbell <[email protected]>
date: Thu Sep 5 05:57:25 EDT 2013

Homepage "/" respects PublishDir

It wasn't taking the value of PublishDir into consideration for the
special case of the homepage "/".

Fixes #75

--- a/hugolib/site_url_test.go
+++ b/hugolib/site_url_test.go
@@ -49,8 +49,6 @@
 	s := &Site{Target: target}
 	s.prepTemplates()
 	must(s.addTemplate("indexes/blue.html", INDEX_TEMPLATE))
-	//s.Files = append(s.Files, "blue/doc1.md")
-	//s.Files = append(s.Files, "blue/doc2.md")
 	s.Pages = append(s.Pages, mustReturn(ReadFrom(strings.NewReader(SLUG_DOC_1), filepath.FromSlash("content/blue/doc1.md"))))
 	s.Pages = append(s.Pages, mustReturn(ReadFrom(strings.NewReader(SLUG_DOC_2), filepath.FromSlash("content/blue/doc2.md"))))
 
--- a/target/file.go
+++ b/target/file.go
@@ -56,6 +56,9 @@
 
 func (fs *Filesystem) Translate(src string) (dest string, err error) {
 	if src == "/" {
+		if fs.PublishDir != "" {
+			return path.Join(fs.PublishDir, "index.html"), nil
+		}
 		return "index.html", nil
 	}
 
--- a/target/file_test.go
+++ b/target/file_test.go
@@ -32,6 +32,31 @@
 	}
 }
 
+func TestFileTranslatorBase(t *testing.T) {
+	tests := []struct {
+		content string
+		expected string
+	}{
+		{"/", "a/base/index.html"},
+	}
+
+	for _, test := range tests {
+		f := &Filesystem{PublishDir: "a/base"}
+		fts := &Filesystem{PublishDir: "a/base/"}
+
+		for _, fs := range []*Filesystem{f, fts} {
+			dest, err := fs.Translate(test.content)
+			if err != nil {
+				t.Fatalf("Translated returned and err: %s", err)
+			}
+
+			if dest != test.expected {
+				t.Errorf("Translate expected: %s, got: %s", test.expected, dest)
+			}
+		}
+	}
+}
+
 func TestTranslateUglyUrls(t *testing.T) {
 	tests := []struct {
 		content  string