summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivan-meridianbanc-com <ivan@meridianbanc.com>2020-12-02 13:47:01 +0200
committerGitHub <noreply@github.com>2020-12-02 12:47:01 +0100
commitaebfe156fb2f27057e61b2e50c7576e6b06dab58 (patch)
treeb4f3cfaa0b55dbd1ef8dd7ca0f09e9993a1a2285
parent907d9e92682ed56a57a2206ae9bd9a985b3e1870 (diff)
Fix RelURL and AbsURL when path starts with language
-rw-r--r--helpers/url.go16
-rw-r--r--helpers/url_test.go31
2 files changed, 43 insertions, 4 deletions
diff --git a/helpers/url.go b/helpers/url.go
index 6dbdea299..1e88def9e 100644
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -181,10 +181,14 @@ func (p *PathSpec) AbsURL(in string, addLanguage bool) string {
if prefix != "" {
hasPrefix := false
// avoid adding language prefix if already present
+ in2 := in
if strings.HasPrefix(in, "/") {
- hasPrefix = strings.HasPrefix(in[1:], prefix)
+ in2 = in[1:]
+ }
+ if in2 == prefix {
+ hasPrefix = true
} else {
- hasPrefix = strings.HasPrefix(in, prefix)
+ hasPrefix = strings.HasPrefix(in2, prefix+"/")
}
if !hasPrefix {
@@ -230,10 +234,14 @@ func (p *PathSpec) RelURL(in string, addLanguage bool) string {
if prefix != "" {
hasPrefix := false
// avoid adding language prefix if already present
+ in2 := in
if strings.HasPrefix(in, "/") {
- hasPrefix = strings.HasPrefix(in[1:], prefix)
+ in2 = in[1:]
+ }
+ if in2 == prefix {
+ hasPrefix = true
} else {
- hasPrefix = strings.HasPrefix(in, prefix)
+ hasPrefix = strings.HasPrefix(in2, prefix+"/")
}
if !hasPrefix {
diff --git a/helpers/url_test.go b/helpers/url_test.go
index 9223ba2cd..6f374f027 100644
--- a/helpers/url_test.go
+++ b/helpers/url_test.go
@@ -84,6 +84,21 @@ func doTestAbsURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
{"http//foo", "http://base/path", "http://base/path/MULTIhttp/foo"},
}
+ if multilingual && addLanguage && defaultInSubDir {
+ newTests := []struct {
+ input string
+ baseURL string
+ expected string
+ }{
+ {lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},
+ {"/" + lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},
+ }
+
+ for _, test := range newTests {
+ tests = append(tests, test)
+ }
+ }
+
for _, test := range tests {
v.Set("baseURL", test.baseURL)
v.Set("contentDir", "content")
@@ -164,6 +179,22 @@ func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
{"//schemaless", "http://base/", false, "//schemaless"},
}
+ if multilingual && addLanguage && defaultInSubDir {
+ newTests := []struct {
+ input string
+ baseURL string
+ canonify bool
+ expected string
+ }{
+ {lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},
+ {"/" + lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},
+ }
+
+ for _, test := range newTests {
+ tests = append(tests, test)
+ }
+ }
+
for i, test := range tests {
v.Set("baseURL", test.baseURL)
v.Set("canonifyURLs", test.canonify)