summaryrefslogtreecommitdiff
path: root/modules/caddyhttp
diff options
context:
space:
mode:
authorMatt Holt <mholt@users.noreply.github.com>2019-10-15 16:05:53 -0600
committerGitHub <noreply@github.com>2019-10-15 16:05:53 -0600
commit2f91b44587fe487b6a05c1c7e56833247e4b8c79 (patch)
treebcee95d5d6e805b4ff0ff81df9916f8689f1c85e /modules/caddyhttp
parente3726588b416682db28ea9173bf2c36e4554ce05 (diff)
v2: Make tests work on Windows (#2782)
* file_server: Make tests work on Windows * caddyfile: Fix escaping when character is not escapable We only escape certain characters depending on inside or outside of quotes (mainly newlines and quotes). We don't want everyone to have to escape Windows file paths like C:\\Windows\\... but we can't drop the \ either if it's just C:\Windows\...
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r--modules/caddyhttp/fileserver/staticfiles_test.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/modules/caddyhttp/fileserver/staticfiles_test.go b/modules/caddyhttp/fileserver/staticfiles_test.go
index d381d42..73762c7 100644
--- a/modules/caddyhttp/fileserver/staticfiles_test.go
+++ b/modules/caddyhttp/fileserver/staticfiles_test.go
@@ -16,14 +16,15 @@ package fileserver
import (
"net/url"
+ "path/filepath"
"testing"
)
func TestSanitizedPathJoin(t *testing.T) {
// For easy reference:
- // %2E = .
- // %2F = /
- // %5C = \
+ // %2e = .
+ // %2f = /
+ // %5c = \
for i, tc := range []struct {
inputRoot string
inputPath string
@@ -43,12 +44,12 @@ func TestSanitizedPathJoin(t *testing.T) {
},
{
inputPath: "/foo/bar",
- expect: "foo/bar",
+ expect: filepath.Join("foo", "bar"),
},
{
inputRoot: "/a",
inputPath: "/foo/bar",
- expect: "/a/foo/bar",
+ expect: filepath.Join("/", "a", "foo", "bar"),
},
{
inputPath: "/foo/../bar",
@@ -57,24 +58,29 @@ func TestSanitizedPathJoin(t *testing.T) {
{
inputRoot: "/a/b",
inputPath: "/foo/../bar",
- expect: "/a/b/bar",
+ expect: filepath.Join("/", "a", "b", "bar"),
},
{
inputRoot: "/a/b",
inputPath: "/..%2fbar",
- expect: "/a/b/bar",
+ expect: filepath.Join("/", "a", "b", "bar"),
},
{
inputRoot: "/a/b",
inputPath: "/%2e%2e%2fbar",
- expect: "/a/b/bar",
+ expect: filepath.Join("/", "a", "b", "bar"),
},
{
inputRoot: "/a/b",
inputPath: "/%2e%2e%2f%2e%2e%2f",
- expect: "/a/b",
+ expect: filepath.Join("/", "a", "b"),
},
- // TODO: test windows paths... on windows... sigh.
+ {
+ inputRoot: "C:\\www",
+ inputPath: "/foo/bar",
+ expect: filepath.Join("C:\\www", "foo", "bar"),
+ },
+ // TODO: test more windows paths... on windows... sigh.
} {
// we don't *need* to use an actual parsed URL, but it
// adds some authenticity to the tests since real-world