diff --git a/project.clj b/project.clj index de3fbb4..06886fe 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,5 @@ (defproject ring-server "0.1.0" :description "Library for running Ring web servers" :dependencies [[org.clojure/clojure "1.2.1"] - [ring "1.0.1"]]) + [ring "1.0.1"]] + :dev-dependencies [[clj-http "0.3.1"]]) diff --git a/src/ring/server/standalone.clj b/src/ring/server/standalone.clj new file mode 100644 index 0000000..65c6cad --- /dev/null +++ b/src/ring/server/standalone.clj @@ -0,0 +1,9 @@ +(ns ring.server.standalone + (:use [ring.adapter.jetty :only (run-jetty)])) + +(defn serve + "Start a web server to run a handler." + [handler & [{:as options}]] + (run-jetty + handler + (merge {:port 5000} options))) diff --git a/test/ring/server/test/standalone.clj b/test/ring/server/test/standalone.clj new file mode 100644 index 0000000..737a4cd --- /dev/null +++ b/test/ring/server/test/standalone.clj @@ -0,0 +1,18 @@ +(ns ring.server.test.standalone + (:require [clj-http.client :as http]) + (:use clojure.test + ring.server.standalone + ring.util.response)) + +(defmacro with-server [server & body] + `(let [server# ~server] + (try + ~@body + (finally (.stop server#))))) + +(deftest serve-test + (let [handler (constantly (response "Hello World"))] + (with-server (serve handler {:join? false}) + (let [resp (http/get "http://localhost:5000")] + (is (= (:status resp) 200)) + (is (= (:body resp) "Hello World"))))))