mirror of https://github.com/caddyserver/caddy.git
replacer: `{file.*}` global placeholder strips trailing newline (#6411)
Co-authored-by: Kanashimia <chad@redpilled.dev>
This commit is contained in:
parent
59cbb2c83a
commit
b85b6c6469
|
@ -0,0 +1,2 @@
|
|||
foo
|
||||
|
|
@ -0,0 +1 @@
|
|||
foo
|
|
@ -15,6 +15,7 @@
|
|||
package caddy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
@ -354,6 +355,8 @@ func (f fileReplacementProvider) replace(key string) (any, bool) {
|
|||
zap.Error(err))
|
||||
return nil, true
|
||||
}
|
||||
body = bytes.TrimSuffix(body, []byte("\n"))
|
||||
body = bytes.TrimSuffix(body, []byte("\r"))
|
||||
return string(body), true
|
||||
}
|
||||
|
||||
|
|
|
@ -431,6 +431,14 @@ func TestReplacerNew(t *testing.T) {
|
|||
variable: "file.caddytest/integration/testdata/foo.txt",
|
||||
value: "foo",
|
||||
},
|
||||
{
|
||||
variable: "file.caddytest/integration/testdata/foo_with_trailing_newline.txt",
|
||||
value: "foo",
|
||||
},
|
||||
{
|
||||
variable: "file.caddytest/integration/testdata/foo_with_multiple_trailing_newlines.txt",
|
||||
value: "foo" + getEOL(),
|
||||
},
|
||||
} {
|
||||
if val, ok := repl.providers[1].replace(tc.variable); ok {
|
||||
if val != tc.value {
|
||||
|
@ -442,6 +450,13 @@ func TestReplacerNew(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func getEOL() string {
|
||||
if os.PathSeparator == '\\' {
|
||||
return "\r\n" // Windows EOL
|
||||
}
|
||||
return "\n" // Unix and modern macOS EOL
|
||||
}
|
||||
|
||||
func TestReplacerNewWithoutFile(t *testing.T) {
|
||||
repl := NewReplacer().WithoutFile()
|
||||
|
||||
|
|
Loading…
Reference in New Issue