Skip to content
quarry Artifact [86948e4633]
Login

Artifact [86948e4633]

Artifact 86948e4633c2a2f7bfa73d0998429c4614d1c93a3e255505e5161a87901353b4:


package main

import (
	"net/http"
	"net/http/httptest"
	"testing"
)

func TestMuxPatternWalksToTheInnermostRoute(t *testing.T) {
	inner := http.NewServeMux()
	inner.HandleFunc("GET /r/{repo}/file/{path...}", func(http.ResponseWriter, *http.Request) {})
	outer := http.NewServeMux()
	outer.Handle("POST /r/{repo}", http.NotFoundHandler())
	outer.Handle("/", inner)
	top := http.NewServeMux()
	top.Handle("GET /runner/", http.NotFoundHandler())
	top.Handle("/", outer)
	f := muxPattern(top)
	for path, want := range map[string]string{
		"/r/quarry/file/a/b": "GET /r/{repo}/file/{path...}",
		"/runner/x":          "GET /runner/",
	} {
		if got := f(httptest.NewRequest("GET", path, nil)); got != want {
			t.Errorf("FAIL: %s -> %q, want %q", path, got, want)
		}
	}
	if got := f(httptest.NewRequest("POST", "/r/quarry", nil)); got != "POST /r/{repo}" {
		t.Errorf("FAIL: POST -> %q", got)
	}
}