Fix ordering of vars. Fix #10.

This commit is contained in:
Michiel Borkent 2020-05-21 12:28:14 -03:00
parent 9c331ec86d
commit 8a420bdf84
6 changed files with 49 additions and 28 deletions

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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")

View file

@ -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]

View file

@ -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))))