(ns test.dev.deps-graph-test
  (:require
   [clojure.test :refer :all]
   [dev.deps-graph]
   [rewrite-clj.zip :as z]))
(deftest ^:parallel find-required-namespaces-test
  (are [s expected] (= (quote expected)
                       (#'dev.deps-graph/find-required-namespaces (z/of-string s)))
    "(require 'malli.generator)"          #{malli.generator}
    "(require (quote malli.generator))"   #{malli.generator}
    "(classloader/require 'a 'b)"         #{a b}
    "(requiring-resolve 'a/b 'c/d)"       #{a c}
    "(require '[malli.generator :as mg])" #{malli.generator}
    "(require '[malli.generator])"        #{malli.generator}))
(deftest ^:parallel find-requires-test
  (are [s expected] (= (quote expected)
                       (map z/sexpr (#'dev.deps-graph/find-requires (z/of-string s))))
    "(do (require '[malli.generator]) (requiring-resolve 'whatever/x))"
    ((require '[malli.generator])
     (requiring-resolve 'whatever/x))
    ;; should ignore comments.
    "(do #_(require '[malli.generator]))"
    ()
    "(do (comment (do (requiring-resolve 'whatever/x))))"
    ()
    ;; don't ignore EVERYTHING after a comment.
    "(do #_{:clj-kondo/ignore [:whatever]} (require '[malli.generator]))"
    ((require '[malli.generator]))))