diff --git a/boot/pod/src/boot/pod.clj b/boot/pod/src/boot/pod.clj index b4f58f67..46a7f963 100644 --- a/boot/pod/src/boot/pod.clj +++ b/boot/pod/src/boot/pod.clj @@ -2,6 +2,7 @@ (:require [clojure.set :as set] [clojure.string :as string] + [clojure.walk :as walk] [boot.util :as util] [boot.file :as file] [boot.xform :as xf] @@ -465,7 +466,9 @@ ([expr] (let [{:keys [meta? expr]} (read-string expr)] (binding [*print-meta* meta?] - (pr-str (eval expr))))) + (->> (eval expr) + (walk/postwalk identity) ; make sure all lazy seqs are realized #683 + (pr-str))))) ([pod expr] (let [arg (pr-str {:meta? *print-meta* :expr expr}) ret (with-invoke-in pod (boot.pod/eval-in* arg))] diff --git a/boot/pod/test/boot/pod_test.clj b/boot/pod/test/boot/pod_test.clj index 572b0479..71c7198b 100644 --- a/boot/pod/test/boot/pod_test.clj +++ b/boot/pod/test/boot/pod_test.clj @@ -62,6 +62,14 @@ )) +(deftest lazy-pod-return-value-test-683 + (testing "println inside lazy seqs does not end up in return value" + (let [data (range 400) + expected (map #(do (println %) %) data) + pod-result (boot.pod/with-eval-in (boot.pod/make-pod {}) + (map #(do (println %) %) ~data))] + (= data pod-result)))) + (deftest canonical (testing "boot.pod/canonical-id" (is (= 'foo (pod/canonical-id 'foo)) "In case there is no group, return artifact")