fix: swap-states non string rollback

thanks to @egg-juxt for bringing it up
This commit is contained in:
anatoly 2022-12-19 15:17:21 -05:00
parent b77f504cfd
commit 2d050e9055
5 changed files with 18 additions and 5 deletions

2
boot.properties Normal file
View file

@ -0,0 +1,2 @@
BOOT_VERSION=2.7.1
BOOT_CLOJURE_VERSION=1.10.1

View file

@ -1,4 +1,4 @@
(def +version+ "0.1.17-SNAPSHOT") (def +version+ "0.1.17")
(set-env! (set-env!
:source-paths #{"src"} :source-paths #{"src"}
@ -134,7 +134,8 @@
(task-options! (task-options!
tcs/test-cljs {:js-env :phantom} tcs/test-cljs {:js-env :phantom}
push {:ensure-branch nil} push {; :ensure-clean nil
:ensure-branch nil}
pom {:project 'mount pom {:project 'mount
:version +version+ :version +version+
:description "managing Clojure and ClojureScript app state since (reset)" :description "managing Clojure and ClojureScript app state since (reset)"

View file

@ -1,4 +1,4 @@
(defproject mount "0.1.17-SNAPSHOT" (defproject mount "0.1.17"
:description "managing Clojure and ClojureScript app state since (reset)" :description "managing Clojure and ClojureScript app state since (reset)"
:url "https://github.com/tolitius/mount" :url "https://github.com/tolitius/mount"
:license {:name "Eclipse Public License" :license {:name "Eclipse Public License"

View file

@ -284,7 +284,7 @@
(if-not (empty? fs) ;; (mount/start) vs. (mount/start #{}) vs. (mount/start #{1 2 3}) (if-not (empty? fs) ;; (mount/start) vs. (mount/start #{}) vs. (mount/start #{1 2 3})
(apply start fs) (apply start fs)
{:started #{}}) {:started #{}})
(let [states (or (seq states) (let [states (or (->> states (map var-to-str) seq)
(all-without-subs))] (all-without-subs))]
{:started (bring states up <)})))) {:started (bring states up <)}))))
@ -294,7 +294,7 @@
(if-not (empty? fs) ;; (mount/stop) vs. (mount/stop #{}) vs. (mount/stop #{1 2 3}) (if-not (empty? fs) ;; (mount/stop) vs. (mount/stop #{}) vs. (mount/stop #{1 2 3})
(apply stop fs) (apply stop fs)
{:stopped #{}}) {:stopped #{}})
(let [states (or (seq states) (let [states (or (->> states (map var-to-str) seq)
(find-all-states)) (find-all-states))
_ (dorun (map unsub states)) ;; unmark substitutions marked by "start-with" / "swap-states" _ (dorun (map unsub states)) ;; unmark substitutions marked by "start-with" / "swap-states"
stopped (bring states down >)] stopped (bring states down >)]

View file

@ -109,6 +109,16 @@
(is (= 42 (dval conn))) (is (= 42 (dval conn)))
(mount/stop))) (mount/stop)))
(testing "swap-states should swap states on start and rollback on stop"
(let [states (swap-states {#'tapp.nyse/conn swap-conn})]
(is (= states (#'mount.core/find-all-states)))
(mount/start #'tapp.nyse/conn)
(is (= 42 (dval conn)))
(mount/stop #'tapp.nyse/conn)
(mount/start #'tapp.nyse/conn)
(is (instance? datomic.peer.LocalConnection (dval conn)))
(mount/stop)))
(testing "swap-states should swap states with states and return only states that it is given" (testing "swap-states should swap states with states and return only states that it is given"
(let [t-states #{"#'is.not/here" #'mount.test.composable-fns/test-conn #'tapp.nyse/conn} (let [t-states #{"#'is.not/here" #'mount.test.composable-fns/test-conn #'tapp.nyse/conn}
states (swap-states t-states {#'tapp.nyse/conn swap-conn states (swap-states t-states {#'tapp.nyse/conn swap-conn