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"}
|
||||
cheshire {:mvn/version "5.10.0"}}
|
||||
cheshire {:mvn/version "5.10.0"}
|
||||
org.flatland/ordered {:mvn/version "1.5.9"}}
|
||||
:aliases
|
||||
{:sci
|
||||
{:extra-deps
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
:url "https://www.eclipse.org/legal/epl-1.0/"}
|
||||
:dependencies [[org.clojure/clojure "1.10.2-alpha1"]
|
||||
[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"
|
||||
:username :env/babashka_nrepl_clojars_user
|
||||
:password :env/babashka_nrepl_clojars_pass
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
(:refer-clojure :exclude [read])
|
||||
(:require [bencode.core :as bencode]
|
||||
[cheshire.core :as cheshire]
|
||||
[clojure.edn :as edn]))
|
||||
[clojure.edn :as edn]
|
||||
[flatland.ordered.map :refer [ordered-map]]))
|
||||
|
||||
(set! *warn-on-reflection* true)
|
||||
|
||||
|
|
@ -200,7 +201,7 @@
|
|||
(fn [& args]
|
||||
(let [res (invoke pod sym args {:async async?})]
|
||||
res))))))
|
||||
{}
|
||||
(ordered-map)
|
||||
vars))
|
||||
pod-namespaces (reduce (fn [namespaces namespace]
|
||||
(let [name-str (-> namespace (get "name") bytes->string)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,14 @@
|
|||
(defn read []
|
||||
(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]
|
||||
(let [format (if (contains? cli-args "--json")
|
||||
:json
|
||||
|
|
@ -52,16 +60,17 @@
|
|||
"edn")
|
||||
"namespaces"
|
||||
[{"name" "pod.test-pod"
|
||||
"vars" [{"name" "add-sync"}
|
||||
{"name" "range-stream"
|
||||
"async" "true"}
|
||||
{"name" "assoc"}
|
||||
{"name" "error"}
|
||||
{"name" "print"}
|
||||
{"name" "print-err"}
|
||||
{"name" "return-nil"}
|
||||
{"name" "do-twice"
|
||||
"code" "(defmacro do-twice [x] `(do ~x ~x))"}]}]
|
||||
"vars" (into [{"name" "add-sync"}
|
||||
{"name" "range-stream"
|
||||
"async" "true"}
|
||||
{"name" "assoc"}
|
||||
{"name" "error"}
|
||||
{"name" "print"}
|
||||
{"name" "print-err"}
|
||||
{"name" "return-nil"}
|
||||
{"name" "do-twice"
|
||||
"code" "(defmacro do-twice [x] `(do ~x ~x))"}]
|
||||
dependents)}]
|
||||
"ops" {"shutdown" {}}})
|
||||
(recur))
|
||||
:invoke (let [var (-> (get message "var")
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@
|
|||
(def add-result (pod.test-pod/add-sync 1 2 3))
|
||||
(def nil-result (pod.test-pod/return-nil))
|
||||
|
||||
(def x9 pod.test-pod/x9)
|
||||
|
||||
(pods/unload-pod pod-id)
|
||||
(def successfully-removed (nil? (find-ns 'pod.test-pod)))
|
||||
|
||||
|
|
@ -55,4 +57,5 @@
|
|||
@callback-result
|
||||
(:ex-message @error-result)
|
||||
(:ex-data @error-result)
|
||||
successfully-removed]
|
||||
successfully-removed
|
||||
x9]
|
||||
|
|
|
|||
|
|
@ -1,21 +1,27 @@
|
|||
(ns babashka.pods.test-common
|
||||
(: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")))
|
||||
|
||||
(defn assertions [out err ret]
|
||||
(is (= '["pod.test-pod"
|
||||
pod.test-pod
|
||||
{:a 1, :b 2}
|
||||
6
|
||||
3
|
||||
[1 2 3 4 5 6 7 8 9]
|
||||
"Illegal arguments / {:args (1 2 3)}"
|
||||
nil
|
||||
3
|
||||
"java.lang.String cannot be cast to java.lang.Number"
|
||||
{:args ["1" 2]}
|
||||
true] ret))
|
||||
(doseq [[expected actual]
|
||||
(map vector '["pod.test-pod"
|
||||
pod.test-pod
|
||||
{:a 1, :b 2}
|
||||
6
|
||||
3
|
||||
[1 2 3 4 5 6 7 8 9]
|
||||
"Illegal arguments / {:args (1 2 3)}"
|
||||
nil
|
||||
3
|
||||
"java.lang.String cannot be cast to java.lang.Number"
|
||||
{: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\" \"error\")\n" (str err))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue