From e73148ef3d63d95972a020d9759b2d696ffaa221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Tue, 24 Mar 2026 14:58:31 -0600 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EC=B4=88=EC=9D=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=8D=94?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deps-lock.json | 39 ++++++------------- doerg/deps.edn | 4 +- publisher/default.nix | 4 ++ publisher/deps.edn | 8 +++- .../src/net/deertopia/publisher/server.clj | 12 ++++-- .../net/deertopia/publisher/server_test.clj | 24 ++++++++++++ publisher/tests.edn | 1 + 7 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 publisher/test/net/deertopia/publisher/server_test.clj create mode 100644 publisher/tests.edn diff --git a/deps-lock.json b/deps-lock.json index eea37d9..d2cf674 100644 --- a/deps-lock.json +++ b/deps-lock.json @@ -371,14 +371,14 @@ "hash": "sha256-OaawIvv0GgkuZwK6MAFtmuyw3zNcYiZVd66K/IipB2A=" }, { - "mvn-path": "fipp/fipp/0.6.27/fipp-0.6.27.jar", + "mvn-path": "fipp/fipp/0.6.26/fipp-0.6.26.jar", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-qK1dAlan2r+90UOm6QvnZXURhA/is4MMp9tnK20RDPc=" + "hash": "sha256-98tpbM5Vr9dMg41UQUGcfl9tSRrxhajlY9+nl5aFcoM=" }, { - "mvn-path": "fipp/fipp/0.6.27/fipp-0.6.27.pom", + "mvn-path": "fipp/fipp/0.6.26/fipp-0.6.26.pom", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-ugagpDW5XBNQMTr+1z3s6r5TXwbF/pw6Ffrcc4Tzlvk=" + "hash": "sha256-p+xjV7gTIRMv0HwvV+/rAhFEFVlDY9g6FDE6GU9fVTU=" }, { "mvn-path": "fipp/fipp/0.6.29/fipp-0.6.29.jar", @@ -486,14 +486,14 @@ "hash": "sha256-1PXzUUHstr5hI/+oPIQUGogO744bynAw2Zoo5HSjTbE=" }, { - "mvn-path": "lambdaisland/deep-diff2/2.12.219/deep-diff2-2.12.219.jar", + "mvn-path": "lambdaisland/deep-diff2/2.11.216/deep-diff2-2.11.216.jar", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-BkOq5C/7omo09wyTTg7nkBi6GWBmlayVsPa9mrDvCyU=" + "hash": "sha256-U2zJZmPIO66EtkgwwfyY41uRyu2DRmXH0ogNfluw5Rg=" }, { - "mvn-path": "lambdaisland/deep-diff2/2.12.219/deep-diff2-2.12.219.pom", + "mvn-path": "lambdaisland/deep-diff2/2.11.216/deep-diff2-2.11.216.pom", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-rW/85js2hSWVc36e2BcTRmkahJHc2TjGIEfvForuToY=" + "hash": "sha256-ok3nYS+8XCcCTPJIkqaO1SQH6v2ENwK2GZJdH0c4D20=" }, { "mvn-path": "lambdaisland/kaocha/1.91.1392/kaocha-1.91.1392.jar", @@ -971,14 +971,14 @@ "hash": "sha256-NnHYN2UlIwq6Ah8fYmx54g86ELYrXfgXIiWJDsSv4EU=" }, { - "mvn-path": "org/clojure/core.rrb-vector/0.2.0/core.rrb-vector-0.2.0.jar", + "mvn-path": "org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2.jar", "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-ftqNXGlaxVNp3NTHN4YUMhdXuBAoG//KMMss02PRZZQ=" + "hash": "sha256-UfmOunss1C7jDzgmkl3N6HkRZ/dvcSMprlG4gkToE44=" }, { - "mvn-path": "org/clojure/core.rrb-vector/0.2.0/core.rrb-vector-0.2.0.pom", + "mvn-path": "org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2.pom", "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-t+0/8ZfxrdZOHvJS2zRY8wlhPcZXdejY4OkTlx4CRY4=" + "hash": "sha256-juK6yvw4QzWMznZRDXMyQhK7NRn61XgE7Oq9w3rFCR8=" }, { "mvn-path": "org/clojure/core.rrb-vector/0.2.1/core.rrb-vector-0.2.1.jar", @@ -1060,11 +1060,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-CRbXpBVYuVAKQnyIb6KYJ6zlJZIGvjrTPmTilvwaYRE=" }, - { - "mvn-path": "org/clojure/pom.contrib/1.3.0/pom.contrib-1.3.0.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-g5qUXfrO6lvVB5+CSPM0bdIULesJFGyj9dG/riYxCWc=" - }, { "mvn-path": "org/clojure/pom.contrib/1.4.0/pom.contrib-1.4.0.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -1100,16 +1095,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-PLp+DcwIXEzpLd3/6iJhJP+sF4vnm9A3m1suMKlpy+o=" }, - { - "mvn-path": "org/clojure/test.check/1.1.2/test.check-1.1.2.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-93r5qZJ67LZqNoa282s1Al8kvOZr8/AF3UTcQEvIdgE=" - }, - { - "mvn-path": "org/clojure/test.check/1.1.2/test.check-1.1.2.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-UZ45jnJMYvCsnWsZ15+P8QAdqYWD/eAb1wUrB+Ga1ow=" - }, { "mvn-path": "org/clojure/test.check/1.1.3/test.check-1.1.3.jar", "mvn-repo": "https://repo1.maven.org/maven2/", diff --git a/doerg/deps.edn b/doerg/deps.edn index 3c5ce17..4cd9355 100644 --- a/doerg/deps.edn +++ b/doerg/deps.edn @@ -7,12 +7,12 @@ {:git/sha "531d629b7f05f37232261cf9e8927a4b5915714f"} hiccup/hiccup {:mvn/version "2.0.0-RC4"} com.rpl/specter {:mvn/version "1.1.6"} - lambdaisland/deep-diff2 {:mvn/version "2.12.219"} mvxcvi/clj-cbor {:mvn/version "1.1.1"} ch.qos.logback/logback-classic {:mvn/version "1.1.3"} org.clojure/test.check {:mvn/version "1.1.3"} aero/aero {:mvn/version "1.1.6"}} - :paths ["src" "resources" "test"] + :paths ["src" "resources"] :aliases {:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}} + :extra-paths ["test"] :main-opts ["-m" "kaocha.runner"]}}} diff --git a/publisher/default.nix b/publisher/default.nix index f8da10b..64335c8 100644 --- a/publisher/default.nix +++ b/publisher/default.nix @@ -20,4 +20,8 @@ mkCljBin { bb -cp . -m override-deps < deps.edn.old > deps.edn \ net.deertopia/doerg '{:local/root "${doerg.lib}/${doerg.name}.jar"}' ''; + doCheck = true; + checkPhase = '' + clojure -M:test + ''; } diff --git a/publisher/deps.edn b/publisher/deps.edn index f603fb7..84b9907 100644 --- a/publisher/deps.edn +++ b/publisher/deps.edn @@ -7,10 +7,14 @@ com.github.seancorfield/next.jdbc {:mvn/version "1.3.1070"} org.xerial/sqlite-jdbc {:mvn/version "3.47.1.0"} cheshire/cheshire {:mvn/version "6.1.0"} - org.clojure/test.check {:mvn/version "1.1.2"} + org.clojure/test.check {:mvn/version "1.1.3"} net.deertopia/doerg {:local/root "../doerg"} metosin/reitit {:mvn/version "0.10.1"} http-kit/http-kit {:mvn/version "2.8.0"} instaparse/instaparse {:mvn/version "1.5.0"} aero/aero {:mvn/version "1.1.6"}} - :paths ["src" "resources" "test"]} + :paths ["src" "resources"] + :aliases + {:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}} + :extra-paths ["test"] + :main-opts ["-m" "kaocha.runner"]}}} diff --git a/publisher/src/net/deertopia/publisher/server.clj b/publisher/src/net/deertopia/publisher/server.clj index 78330d2..e1012eb 100644 --- a/publisher/src/net/deertopia/publisher/server.clj +++ b/publisher/src/net/deertopia/publisher/server.clj @@ -98,8 +98,7 @@ (defn start! [] (if @server - (let [msg "Server already started"] - (throw (ex-info msg {}))) + (throw (IllegalStateException. "Server already started")) (do (reset! server (http/run-server (bound-fn* #'app) {:port (-> cfg/*cfg* ::publisher/port) @@ -107,8 +106,13 @@ ;; For some reason, the log messages are not flushed before ;; the JVM shuts dowm. Nevertheless, the server /does/ come ;; to a graceful halt. - (.addShutdownHook (Runtime/getRuntime) shutdown-hook) - (l/info "Server started on port 8080")))) + (try (.addShutdownHook (Runtime/getRuntime) shutdown-hook) + (catch IllegalArgumentException e + (when (not= "Hook previously registered" + (ex-message e)) + (throw e)))) + (l/infof "Server started on port %d" + (-> cfg/*cfg* ::publisher/port))))) (defn status [] (if @server diff --git a/publisher/test/net/deertopia/publisher/server_test.clj b/publisher/test/net/deertopia/publisher/server_test.clj new file mode 100644 index 0000000..1f5c993 --- /dev/null +++ b/publisher/test/net/deertopia/publisher/server_test.clj @@ -0,0 +1,24 @@ +(ns net.deertopia.publisher.server-test + (:require [net.deertopia.publisher.server :as sut] + [reitit.ring] + [clojure.test :as t] + [clojure.set :as set] + [net.deertopia.publisher.server :as server] + [net.deertopia.publisher.config :as cfg] + [net.deertopia.publisher :as-alias publisher])) + +(t/deftest server-is-running + ;; 서버는 시작 전에 이 테스트 하면 잘못됩니다. + (assert (not= :running (server/status))) + (server/start!) + (t/is (= :running (server/status))) + (server/stop!)) + +(t/deftest can-get-real-server-root + ;; 서버는 시작 전에 이 테스트 하면 잘못됩니다. + (assert (not= :running (server/status))) + (server/start!) + (t/is (->> (format "http://localhost:%d" (::publisher/port cfg/*cfg*)) + slurp + string?)) + (server/stop!)) diff --git a/publisher/tests.edn b/publisher/tests.edn new file mode 100644 index 0000000..9d8d845 --- /dev/null +++ b/publisher/tests.edn @@ -0,0 +1 @@ +#kaocha/v1 {}