shithub: hugo

Download patch

ref: bea9280fb35b156062e63afffd9d85ac5aac88f5
parent: bef3df7481027254a6711965828cd120fa5deb7c
author: bep <[email protected]>
date: Tue May 5 12:02:52 EDT 2015

Do not add trailing slash to baseURL

Fixes #1105

--- a/helpers/url.go
+++ b/helpers/url.go
@@ -77,7 +77,7 @@
 	if err != nil {
 		panic(err)
 	}
-	if !strings.HasPrefix(u.Path, "/") {
+	if len(u.Path) > 0 && !strings.HasPrefix(u.Path, "/") {
 		u.Path = "/" + u.Path
 	}
 	return u.String()
--- a/helpers/url_test.go
+++ b/helpers/url_test.go
@@ -31,11 +31,12 @@
 		input    string
 		expected string
 	}{
-		{"http://foo.bar/", "http://foo.bar/"},
+		{"http://foo.bar/", "http://foo.bar"},
+		{"http://foo.bar", "http://foo.bar"},          // issue #1105
 		{"http://foo.bar/zoo/", "http://foo.bar/zoo"}, // issue #931
 	}
 
-	for _, test := range tests {
+	for i, test := range tests {
 		o1 := SanitizeURL(test.input)
 		o2 := SanitizeURLKeepTrailingSlash(test.input)
 
@@ -46,10 +47,10 @@
 		}
 
 		if o1 != test.expected {
-			t.Errorf("Expected %#v, got %#v\n", test.expected, o1)
+			t.Errorf("[%d] 1: Expected %#v, got %#v\n", i, test.expected, o1)
 		}
 		if o2 != expected2 {
-			t.Errorf("Expected %#v, got %#v\n", expected2, o2)
+			t.Errorf("[%d] 2: Expected %#v, got %#v\n", i, expected2, o2)
 		}
 	}
 }
--- a/hugolib/site_url_test.go
+++ b/hugolib/site_url_test.go
@@ -1,7 +1,6 @@
 package hugolib
 
 import (
-	"html/template"
 	"path/filepath"
 	"testing"
 
@@ -10,6 +9,7 @@
 	"github.com/spf13/hugo/source"
 	"github.com/spf13/hugo/target"
 	"github.com/spf13/viper"
+	"html/template"
 )
 
 const SLUG_DOC_1 = "---\ntitle: slug doc 1\nslug: slug-doc-1\naliases:\n - sd1/foo/\n - sd2\n - sd3/\n - sd4.html\n---\nslug doc 1 content\n"
@@ -50,6 +50,29 @@
 var urlFakeSource = []source.ByteSource{
 	{filepath.FromSlash("content/blue/doc1.md"), []byte(SLUG_DOC_1)},
 	{filepath.FromSlash("content/blue/doc2.md"), []byte(SLUG_DOC_2)},
+}
+
+// Issue #1105
+func TestShouldNotAddTrailingSlashToBaseURL(t *testing.T) {
+
+	for i, this := range []struct {
+		in       string
+		expected string
+	}{
+		{"http://base.com/", "http://base.com/"},
+		{"http://base.com/sub/", "http://base.com/sub/"},
+		{"http://base.com/sub", "http://base.com/sub"},
+		{"http://base.com", "http://base.com"}} {
+
+		viper.Set("BaseURL", this.in)
+		s := &Site{}
+		s.initializeSiteInfo()
+
+		if s.Info.BaseURL != template.URL(this.expected) {
+			t.Errorf("[%d] got %s expected %s", i, s.Info.BaseURL, this.expected)
+		}
+	}
+
 }
 
 func TestPageCount(t *testing.T) {