       (clojure.java.shell/sh
         "phantomjs"
         "target/runner.js"
-        "target/cli_test.js")))
-  )
+        "target/cli_test.js"))))

                  [["-a" nil
                    :id :alpha
                    :default true
                    :assoc-fn (fn [m k v] (assoc m k (not v)))]
                   ["-v" "--verbose"
                    :default 0
                    :assoc-fn (fn [m k _] (assoc m k (inc (m k))))]])]
      (is (= (parse-option-tokens specs [])
             [{:alpha true :verbose 0} []]))

                                         [:short-opt "-v"]
                                         [:long-opt "--verbose"]])
             [{:alpha true :verbose 3} []]))
      (is (= (parse-option-tokens specs [[:short-opt "-v"]] :no-defaults true)
             [{:verbose 1} []]))))
  (testing "associates :id and value with :assoc-fn, without :default"
    (let [specs (compile-option-specs
                  [["-a" nil
                    :id :alpha
                    ;; use fnil to have an implied :default true
                    :assoc-fn (fn [m k v] (update-in m [k] (fnil not true)))]
                   ["-v" "--verbose"
                    ;; use fnil to have an implied :default 0
                    :assoc-fn (fn [m k _] (update-in m [k] (fnil inc 0)))]])]
      (is (= (parse-option-tokens specs [])
             [{} []]))
      (is (= (parse-option-tokens specs [[:short-opt "-a"]])
             [{:alpha false} []]))
      (is (= (parse-option-tokens specs [[:short-opt "-v"]
                                         [:short-opt "-v"]
                                         [:long-opt "--verbose"]])
             [{:verbose 3} []]))
      (is (= (parse-option-tokens specs [[:short-opt "-v"]] :no-defaults true)
             [{:verbose 1} []]))))
  (testing "can deal with negative flags"
