From 5cc4435cd4d3657ff2da6f05186151881bafe96e Mon Sep 17 00:00:00 2001 From: Connor Kilgore Date: Mon, 22 Jul 2024 12:09:02 -0700 Subject: [PATCH] Files that contain saved state information are no longer reloaded during vigilant run --- src/speclj/config.cljc | 2 +- src/speclj/freshener.clj | 24 +++++++++++++++++++++++- src/speclj/run/vigilant.clj | 8 +++----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/speclj/config.cljc b/src/speclj/config.cljc index 823990f..6e030d0 100644 --- a/src/speclj/config.cljc +++ b/src/speclj/config.cljc @@ -116,4 +116,4 @@ *omit-pending?* (:omit-pending config) *full-stack-trace?* (some? (:stacktrace config)) *tag-filter* (parse-tags (:tags config))] - (action))) + (action))) \ No newline at end of file diff --git a/src/speclj/freshener.clj b/src/speclj/freshener.clj index d31214c..d23eb95 100644 --- a/src/speclj/freshener.clj +++ b/src/speclj/freshener.clj @@ -4,7 +4,9 @@ (:require [clojure.tools.namespace.dir :as dir] [clojure.tools.namespace.repl :as repl] - [clojure.tools.namespace.reload :as reload])) + [clojure.tools.namespace.track :as track] + [clojure.tools.namespace.reload :as reload] + [clojure.tools.namespace.file :as file])) (defn find-files-in "Returns a seq of all files (matching the regex) contained in the given directories." @@ -20,7 +22,27 @@ "Returns a seq of all clojure source files contained in the given directories." [& dirs] (apply find-files-in clj-file-regex dirs)) +(defn remove-value [val coll] + (remove #(= % val) coll)) + +(defn remove-ignore [tracker namespace] + (when-let [file (first (some #(when (= (val %) namespace) %) (::file/filemap tracker)))] + (alter-var-root #'repl/refresh-tracker + (constantly + (assoc tracker + ::track/load (remove-value namespace (::track/load tracker)) + ::track/unload (remove-value namespace (::track/unload tracker)) + ::file/filemap (dissoc (::file/filemap tracker) file) + ::dir/files (set (remove-value file (::dir/files tracker)))))))) + +(def ignored-namespaces ['speclj.config 'speclj.run.vigilant + 'speclj.results 'speclj.core + 'speclj.reporting 'speclj.running]) + (defn freshen [] (repl/scan) + (doseq [namespace ignored-namespaces] + (remove-ignore repl/refresh-tracker namespace) + ) (alter-var-root #'repl/refresh-tracker reload/track-reload) (repl/set-refresh-dirs)) diff --git a/src/speclj/run/vigilant.clj b/src/speclj/run/vigilant.clj index d4b6208..3e02847 100644 --- a/src/speclj/run/vigilant.clj +++ b/src/speclj/run/vigilant.clj @@ -8,11 +8,11 @@ [speclj.results :as results] [speclj.running :as running] [clojure.tools.namespace.repl :as repl] + [clojure.tools.namespace.track :as track] [clojure.tools.namespace.reload :as reload]) (:import (java.util.concurrent ScheduledThreadPoolExecutor TimeUnit))) (def start-time (atom 0)) - (def current-error-data (atom nil)) (defn get-error-data [e] @@ -25,6 +25,7 @@ (try (reset! start-time (current-time)) (freshen) + ;(prn repl/refresh-tracker) (cond (::reload/error repl/refresh-tracker) (throw (::reload/error repl/refresh-tracker)) @@ -36,12 +37,9 @@ (catch java.lang.Throwable e (let [error-data (get-error-data e)] (alter-var-root #'repl/refresh-tracker - (constantly (assoc repl/refresh-tracker :clojure.tools.namespace.track/load []))) + (constantly (assoc repl/refresh-tracker ::track/load []))) (running/process-compile-error runner e) (reporting/report-runs* reporters @(.results runner)) - #_(when (not= error-data @current-error-data) - (running/process-compile-error runner e) - (reporting/report-runs* reporters @(.results runner))) (reset! current-error-data error-data)) )) (reset! (.descriptions runner) [])