Fix ordering of vars. Fix #10.
This commit is contained in:
parent
9c331ec86d
commit
8a420bdf84
6 changed files with 49 additions and 28 deletions
3
deps.edn
3
deps.edn
|
|
@ -1,5 +1,6 @@
|
||||||
{:deps {nrepl/bencode {:mvn/version "1.1.0"}
|
{:deps {nrepl/bencode {:mvn/version "1.1.0"}
|
||||||
cheshire {:mvn/version "5.10.0"}}
|
cheshire {:mvn/version "5.10.0"}
|
||||||
|
org.flatland/ordered {:mvn/version "1.5.9"}}
|
||||||
:aliases
|
:aliases
|
||||||
{:sci
|
{:sci
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
:url "https://www.eclipse.org/legal/epl-1.0/"}
|
:url "https://www.eclipse.org/legal/epl-1.0/"}
|
||||||
:dependencies [[org.clojure/clojure "1.10.2-alpha1"]
|
:dependencies [[org.clojure/clojure "1.10.2-alpha1"]
|
||||||
[nrepl/bencode "1.1.0"]
|
[nrepl/bencode "1.1.0"]
|
||||||
[cheshire "5.10.0"]]
|
[cheshire "5.10.0"]
|
||||||
|
[org.flatland/ordered "1.5.9"]]
|
||||||
:deploy-repositories [["clojars" {:url "https://clojars.org/repo"
|
:deploy-repositories [["clojars" {:url "https://clojars.org/repo"
|
||||||
:username :env/babashka_nrepl_clojars_user
|
:username :env/babashka_nrepl_clojars_user
|
||||||
:password :env/babashka_nrepl_clojars_pass
|
:password :env/babashka_nrepl_clojars_pass
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
(:refer-clojure :exclude [read])
|
(:refer-clojure :exclude [read])
|
||||||
(:require [bencode.core :as bencode]
|
(:require [bencode.core :as bencode]
|
||||||
[cheshire.core :as cheshire]
|
[cheshire.core :as cheshire]
|
||||||
[clojure.edn :as edn]))
|
[clojure.edn :as edn]
|
||||||
|
[flatland.ordered.map :refer [ordered-map]]))
|
||||||
|
|
||||||
(set! *warn-on-reflection* true)
|
(set! *warn-on-reflection* true)
|
||||||
|
|
||||||
|
|
@ -200,7 +201,7 @@
|
||||||
(fn [& args]
|
(fn [& args]
|
||||||
(let [res (invoke pod sym args {:async async?})]
|
(let [res (invoke pod sym args {:async async?})]
|
||||||
res))))))
|
res))))))
|
||||||
{}
|
(ordered-map)
|
||||||
vars))
|
vars))
|
||||||
pod-namespaces (reduce (fn [namespaces namespace]
|
pod-namespaces (reduce (fn [namespaces namespace]
|
||||||
(let [name-str (-> namespace (get "name") bytes->string)
|
(let [name-str (-> namespace (get "name") bytes->string)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,14 @@
|
||||||
(defn read []
|
(defn read []
|
||||||
(bencode/read-bencode stdin))
|
(bencode/read-bencode stdin))
|
||||||
|
|
||||||
|
(def dependents
|
||||||
|
(for [i (range 10)]
|
||||||
|
{"name" (str "x" i)
|
||||||
|
"code"
|
||||||
|
(if-not (zero? i)
|
||||||
|
(format "(def x%s (inc x%s))" i (dec i))
|
||||||
|
"(def x0 0)")}))
|
||||||
|
|
||||||
(defn run-pod [cli-args]
|
(defn run-pod [cli-args]
|
||||||
(let [format (if (contains? cli-args "--json")
|
(let [format (if (contains? cli-args "--json")
|
||||||
:json
|
:json
|
||||||
|
|
@ -52,16 +60,17 @@
|
||||||
"edn")
|
"edn")
|
||||||
"namespaces"
|
"namespaces"
|
||||||
[{"name" "pod.test-pod"
|
[{"name" "pod.test-pod"
|
||||||
"vars" [{"name" "add-sync"}
|
"vars" (into [{"name" "add-sync"}
|
||||||
{"name" "range-stream"
|
{"name" "range-stream"
|
||||||
"async" "true"}
|
"async" "true"}
|
||||||
{"name" "assoc"}
|
{"name" "assoc"}
|
||||||
{"name" "error"}
|
{"name" "error"}
|
||||||
{"name" "print"}
|
{"name" "print"}
|
||||||
{"name" "print-err"}
|
{"name" "print-err"}
|
||||||
{"name" "return-nil"}
|
{"name" "return-nil"}
|
||||||
{"name" "do-twice"
|
{"name" "do-twice"
|
||||||
"code" "(defmacro do-twice [x] `(do ~x ~x))"}]}]
|
"code" "(defmacro do-twice [x] `(do ~x ~x))"}]
|
||||||
|
dependents)}]
|
||||||
"ops" {"shutdown" {}}})
|
"ops" {"shutdown" {}}})
|
||||||
(recur))
|
(recur))
|
||||||
:invoke (let [var (-> (get message "var")
|
:invoke (let [var (-> (get message "var")
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@
|
||||||
(def add-result (pod.test-pod/add-sync 1 2 3))
|
(def add-result (pod.test-pod/add-sync 1 2 3))
|
||||||
(def nil-result (pod.test-pod/return-nil))
|
(def nil-result (pod.test-pod/return-nil))
|
||||||
|
|
||||||
|
(def x9 pod.test-pod/x9)
|
||||||
|
|
||||||
(pods/unload-pod pod-id)
|
(pods/unload-pod pod-id)
|
||||||
(def successfully-removed (nil? (find-ns 'pod.test-pod)))
|
(def successfully-removed (nil? (find-ns 'pod.test-pod)))
|
||||||
|
|
||||||
|
|
@ -55,4 +57,5 @@
|
||||||
@callback-result
|
@callback-result
|
||||||
(:ex-message @error-result)
|
(:ex-message @error-result)
|
||||||
(:ex-data @error-result)
|
(:ex-data @error-result)
|
||||||
successfully-removed]
|
successfully-removed
|
||||||
|
x9]
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
(ns babashka.pods.test-common
|
(ns babashka.pods.test-common
|
||||||
(:require [clojure.java.io :as io]
|
(:require [clojure.java.io :as io]
|
||||||
[clojure.test :refer [is]]))
|
[clojure.test :refer [is]]
|
||||||
|
[clojure.string :as str]))
|
||||||
|
|
||||||
(def test-program (slurp (io/file "test-resources" "test_program.clj")))
|
(def test-program (slurp (io/file "test-resources" "test_program.clj")))
|
||||||
|
|
||||||
(defn assertions [out err ret]
|
(defn assertions [out err ret]
|
||||||
(is (= '["pod.test-pod"
|
(doseq [[expected actual]
|
||||||
pod.test-pod
|
(map vector '["pod.test-pod"
|
||||||
{:a 1, :b 2}
|
pod.test-pod
|
||||||
6
|
{:a 1, :b 2}
|
||||||
3
|
6
|
||||||
[1 2 3 4 5 6 7 8 9]
|
3
|
||||||
"Illegal arguments / {:args (1 2 3)}"
|
[1 2 3 4 5 6 7 8 9]
|
||||||
nil
|
"Illegal arguments / {:args (1 2 3)}"
|
||||||
3
|
nil
|
||||||
"java.lang.String cannot be cast to java.lang.Number"
|
3
|
||||||
{:args ["1" 2]}
|
"java.lang.String cannot be cast to java.lang.Number"
|
||||||
true] ret))
|
{:args ["1" 2]}
|
||||||
|
true
|
||||||
|
9] ret)]
|
||||||
|
(if (string? expected)
|
||||||
|
(str/includes? actual expected)
|
||||||
|
(= expected actual)))
|
||||||
(is (= "(\"hello\" \"print\" \"this\" \"debugging\" \"message\")\n:foo\n:foo\n" (str out)))
|
(is (= "(\"hello\" \"print\" \"this\" \"debugging\" \"message\")\n:foo\n:foo\n" (str out)))
|
||||||
(is (= "(\"hello\" \"print\" \"this\" \"error\")\n" (str err))))
|
(is (= "(\"hello\" \"print\" \"this\" \"error\")\n" (str err))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue