From 4729b4e74c392a7f5539ba7c413d0877a536f4a7 Mon Sep 17 00:00:00 2001 From: Chas Emerick Date: Fri, 14 Dec 2012 09:53:58 -0500 Subject: [PATCH] Ensure that `render` retains the metadata on any provided response map --- src/compojure/response.clj | 3 ++- test/compojure/test/response.clj | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compojure/response.clj b/src/compojure/response.clj index b7675887..f059ee10 100644 --- a/src/compojure/response.clj +++ b/src/compojure/response.clj @@ -20,7 +20,8 @@ (content-type "text/html; charset=utf-8"))) APersistentMap (render [resp-map _] - (merge (response "") resp-map)) + (merge (with-meta (response "") (meta resp-map)) + resp-map)) IFn (render [func request] (render (func request) request)) diff --git a/test/compojure/test/response.clj b/test/compojure/test/response.clj index d14c2211..eb795f5b 100644 --- a/test/compojure/test/response.clj +++ b/test/compojure/test/response.clj @@ -40,4 +40,9 @@ (testing "with stream URL" (let [response (response/render (io/resource "ring/util/response.clj") {})] (is (instance? InputStream (:body response))) - (is (.contains (slurp (:body response)) "(ns ring.util.response"))))) + (is (.contains (slurp (:body response)) "(ns ring.util.response")))) + + (testing "with map + metadata" + (let [response (response/render ^{:has-metadata? true} {:body "foo"} {})] + (is (= (:body response) "foo")) + (is (= (meta response) {:has-metadata? true})))))