diff --git a/gin_test.go b/gin_test.go
index 3ac60577..1132aa03 100644
--- a/gin_test.go
+++ b/gin_test.go
@@ -80,6 +80,35 @@ func setupHTMLGlob(t *testing.T, mode string, tls bool) func() {
return func() {}
}
+func setupHTMLFilesRecursively(t *testing.T, mode string, tls bool) func() {
+ go func() {
+ SetMode(mode)
+ router := New()
+ router.Delims("{[{", "}]}")
+ router.SetFuncMap(template.FuncMap{
+ "formatAsDate": formatAsDate,
+ })
+ router.LoadHTMLFilesRecursively("./fixtures/basic/", []string{".tmpl"})
+ router.GET("/test", func(c *Context) {
+ c.HTML(http.StatusOK, "hello.tmpl", map[string]string{"name": "world"})
+ })
+ router.GET("/raw", func(c *Context) {
+ c.HTML(http.StatusOK, "raw.tmpl", map[string]interface{}{
+ "now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
+ })
+ })
+ if tls {
+ // these files generated by `go run $GOROOT/src/crypto/tls/generate_cert.go --host 127.0.0.1`
+ router.RunTLS(":9999", "./fixtures/testdata/cert.pem", "./fixtures/testdata/key.pem")
+ } else {
+ router.Run(":8888")
+ }
+ }()
+ t.Log("waiting 1 second for server startup")
+ time.Sleep(1 * time.Second)
+ return func() {}
+}
+
func TestLoadHTMLGlob(t *testing.T) {
td := setupHTMLGlob(t, DebugMode, false)
res, err := http.Get("http://127.0.0.1:8888/test")
@@ -248,6 +277,80 @@ func TestLoadHTMLFilesFuncMap(t *testing.T) {
td()
}
+
+func TestLoadHTMLFilesRecursively(t *testing.T) {
+ td := setupHTMLFilesRecursively(t, DebugMode, false)
+ res, err := http.Get("http://127.0.0.1:8888/test")
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ resp, _ := ioutil.ReadAll(res.Body)
+ assert.Equal(t, "
Hello world
", string(resp[:]))
+
+ td()
+}
+
+func TestLoadHTMLFilesRecursively2(t *testing.T) {
+ td := setupHTMLFilesRecursively(t, TestMode, false)
+ res, err := http.Get("http://127.0.0.1:8888/test")
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ resp, _ := ioutil.ReadAll(res.Body)
+ assert.Equal(t, "Hello world
", string(resp[:]))
+
+ td()
+}
+
+func TestLoadHTMLFilesRecursively3(t *testing.T) {
+ td := setupHTMLFilesRecursively(t, ReleaseMode, false)
+ res, err := http.Get("http://127.0.0.1:8888/test")
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ resp, _ := ioutil.ReadAll(res.Body)
+ assert.Equal(t, "Hello world
", string(resp[:]))
+
+ td()
+}
+
+func TestLoadHTMLFilesRecursivelyUsingTLS(t *testing.T) {
+ td := setupHTMLFilesRecursively(t, DebugMode, true)
+ // Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
+ tr := &http.Transport{
+ TLSClientConfig: &tls.Config{
+ InsecureSkipVerify: true,
+ },
+ }
+ client := &http.Client{Transport: tr}
+ res, err := client.Get("https://127.0.0.1:9999/test")
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ resp, _ := ioutil.ReadAll(res.Body)
+ assert.Equal(t, "Hello world
", string(resp[:]))
+
+ td()
+}
+
+func TestLoadHTMLFilesRecursivelyFromFuncMap(t *testing.T) {
+ time.Now()
+ td := setupHTMLFilesRecursively(t, DebugMode, false)
+ res, err := http.Get("http://127.0.0.1:8888/raw")
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ resp, _ := ioutil.ReadAll(res.Body)
+ assert.Equal(t, "Date: 2017/07/01\n", string(resp[:]))
+
+ td()
+}
+
func TestAddRoute(t *testing.T) {
router := New()
router.addRoute("GET", "/", HandlersChain{func(_ *Context) {}})