mirror of
https://github.com/golang/go
synced 2024-11-18 09:14:43 -07:00
net/url: prepend slash to path in String()
Previously if a path was set manually without a leading /, String() would not insert the slash when writing its output. This would lead to situations where a URL that should be http://www.google.com/search is output as http://www.google.comsearch Fixes #5927. R=golang-dev, bradfitz, rsc, 0xjnml CC=golang-dev https://golang.org/cl/11698045
This commit is contained in:
parent
13507e0697
commit
39679ca88f
@ -459,6 +459,9 @@ func (u *URL) String() string {
|
|||||||
buf.WriteString(h)
|
buf.WriteString(h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if u.Path != "" && u.Path[0] != '/' {
|
||||||
|
buf.WriteByte('/')
|
||||||
|
}
|
||||||
buf.WriteString(escape(u.Path, encodePath))
|
buf.WriteString(escape(u.Path, encodePath))
|
||||||
}
|
}
|
||||||
if u.RawQuery != "" {
|
if u.RawQuery != "" {
|
||||||
|
@ -372,6 +372,22 @@ func DoTestString(t *testing.T, parse func(string) (*URL, error), name string, t
|
|||||||
|
|
||||||
func TestURLString(t *testing.T) {
|
func TestURLString(t *testing.T) {
|
||||||
DoTestString(t, Parse, "Parse", urltests)
|
DoTestString(t, Parse, "Parse", urltests)
|
||||||
|
|
||||||
|
// no leading slash on path should prepend
|
||||||
|
// slash on String() call
|
||||||
|
noslash := URLTest{
|
||||||
|
"http://www.google.com/search",
|
||||||
|
&URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: "www.google.com",
|
||||||
|
Path: "search",
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
}
|
||||||
|
s := noslash.out.String()
|
||||||
|
if s != noslash.in {
|
||||||
|
t.Errorf("Expected %s; go %s", noslash.in, s)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type EscapeTest struct {
|
type EscapeTest struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user