Fix deps tests.

This commit is contained in:
Phil Hagelberg 2012-01-06 20:37:50 -08:00
parent bfe2c32fd2
commit 1fe2fed158
3 changed files with 55 additions and 73 deletions

View file

@ -1,5 +1,5 @@
(ns leiningen.deps
"Download all dependencies and put them in :library-path."
"Download all dependencies."
(:require [clojure.java.io :as io]
[leiningen.clean :as clean]
[leiningen.core.classpath :as classpath]
@ -12,8 +12,7 @@
(.digest (.getBytes content)))) 16))
(defn- deps-checksum [project]
(sha1-digest (pr-str [(:dependencies project)
(:dev-dependencies project)])))
(sha1-digest (pr-str (:dependencies project))))
(defn- new-deps-checksum-file [project]
(io/file (:target-path project) ".lein-deps-sum"))
@ -21,6 +20,7 @@
(defn- has-dependencies? [project]
(some (comp seq project) [:dependencies :dev-dependencies]))
;; TODO: is this necessary with keeping everything in ~/.m2?
(defn fetch-deps?
"Should we even bother fetching dependencies?"
[project]
@ -56,7 +56,7 @@
(clean/clean project))
(let [files (classpath/resolve-dependencies project)]
(extract-native-deps project files)
(when (:checksum-deps project)
(.mkdirs (io/file (:target-path project)))
(spit (new-deps-checksum-file project) (deps-checksum project)))
(let [checksum-file (new-deps-checksum-file project)]
(.mkdirs (.getParentFile checksum-file))
(spit checksum-file (deps-checksum project)))
files)))

View file

@ -8,25 +8,13 @@
[leiningen.core.classpath :as classpath]
[leiningen.core.eval :as eval]))
(defn lib-populated? [project re]
(some #(re-find re (.getName %))
(file-seq (io/file (:library-path project)))))
;; Problem here is we don't get a full list of jar files back from
;; pomegranate, it looks like we just get what was actually downloaded
;; afresh. We will need the former, so need to figure this out.
(deftest test-deps
(let [deps-files (deps sample-project)
jars (set (map #(.getName %) deps-files ))]
(doseq [j ["jdom-1.0.jar" "tagsoup-1.2.jar" "rome-0.9.jar"]]
(is (jars j) (format "deps did not include %s: %s" j jars)))))
(deftest test-dev-deps-only
(deps dev-deps-project)
(let [jars (set (map #(.getName %)
(.listFiles (io/file (:root dev-deps-project)
"lib" "dev"))))]
(is (contains? jars "clojure-1.2.0.jar"))))
(let [sample-deps [["ring" "1.0.0"] ["rome" "0.9"] ["jdom" "1.0"]]]
(doseq [[n v] sample-deps]
(delete-file-recursively (m2-dir n v) :silently))
(deps sample-project)
(doseq [[n v] sample-deps]
(is (.exists (m2-dir n v)) (str n " was not downloaded.")))))
(deftest test-snapshots-releases
(let [pr (assoc sample-project :omit-default-repositories true
@ -42,67 +30,61 @@
(delete-file-recursively (apply m2-dir hooke) :quiet)
(leiningen.deps/deps project))]
(deps (assoc pr :dependencies [hooke]))
(is (lib-populated? ps #"hooke"))
(is (.exists (m2-dir :robert/hooke "1.0.1")))
(deps (assoc ps :dependencies [slamhound]))
(is (lib-populated? ps #"slamhound"))
(let [snaps-repo-rel-dep (assoc ps :dependencies [hooke])]
(is (thrown? Exception (deps snaps-repo-rel-dep))))
(let [rel-repo-snaps-dep (assoc pr :dependencies [slamhound])]
(is (thrown? Exception (deps rel-repo-snaps-dep))))))
(is (.exists (m2-dir "slamhound" "1.1.0-SNAPSHOT")))
;; TODO: support disabling snapshots/releases
;; (let [snaps-repo-rel-dep (assoc ps :dependencies [hooke])]
;; (is (thrown? Exception (deps snaps-repo-rel-dep)))
;; (is (not (.exists (m2-dir :robert/hooke "1.0.1")))))
;; (let [rel-repo-snaps-dep (assoc pr :dependencies [slamhound])]
;; (is (thrown? Exception (deps rel-repo-snaps-dep)))
;; (is (not (m2-dir "slamhound" "1.1.0-SNAPSHOT"))))
))
(def native-lib-files-map
{:linux {:x86 #{"libjri.so" "libjinput-linux.so" "liblwjgl.so" "libopenal.so"
"librxtxSerial.so" "libjtokyocabinet.so"
{:linux {:x86 #{"libjri.so" "libjinput-linux.so" "liblwjgl.so" "libopenal.so"
"librxtxSerial.so" "libjtokyocabinet.so"
"libjtokyocabinet.so.1" "libjtokyocabinet.so.1.1.0"
"libtokyocabinet.a" "libtokyocabinet.so"
"libtokyocabinet.so.9" "libtokyocabinet.so.9.10.0"
"libtokyocabinet.so.9.8.0"}
:x86_64 #{"libjri.so" "libjinput-linux64.so" "liblwjgl64.so"
"libopenal64.so" "librxtxSerial.so" "libjtokyocabinet.so"
"libjtokyocabinet.so.1" "libjtokyocabinet.so.1.1.0"
"libtokyocabinet.a" "libtokyocabinet.so"
"libtokyocabinet.so.9" "libtokyocabinet.so.9.10.0"
"libtokyocabinet.so.9.8.0"}
:x86_64 #{"libjri.so" "libjinput-linux64.so" "liblwjgl64.so"
"libopenal64.so" "librxtxSerial.so" "libjtokyocabinet.so"
"libjtokyocabinet.so.1" "libjtokyocabinet.so.1.1.0"
"libtokyocabinet.a" "libtokyocabinet.so"
"libtokyocabinet.so.9" "libtokyocabinet.so.9.10.0"
"libtokyocabinet.so.9.8.0"}}
:macosx {:x86 #{"libjri.jnilib" "libjinput-osx.jnilib" "liblwjgl.jnilib"
"libtokyocabinet.so.9.8.0"}}
:macosx {:x86 #{"libjri.jnilib" "libjinput-osx.jnilib" "liblwjgl.jnilib"
"openal.dylib" "librxtxSerial.jnilib"
"libjtokyocabinet.1.1.0.dylib" "libjtokyocabinet.1.dylib"
"libjtokyocabinet.dylib" "libjtokyocabinet.jnilib"
"libtokyocabinet.9.10.0.dylib"
"libtokyocabinet.9.8.0.dylib" "libtokyocabinet.9.dylib"
"libtokyocabinet.a" "libtokyocabinet.dylib"}
:x86_64 #{"libjri.jnilib" "libjinput-osx.jnilib"
"liblwjgl.jnilib"
"openal.dylib" "librxtxSerial.jnilib"
"libjtokyocabinet.1.1.0.dylib" "libjtokyocabinet.1.dylib"
"libjtokyocabinet.1.1.0.dylib"
"libjtokyocabinet.1.dylib"
"libjtokyocabinet.dylib" "libjtokyocabinet.jnilib"
"libtokyocabinet.9.10.0.dylib"
"libtokyocabinet.9.8.0.dylib" "libtokyocabinet.9.dylib"
"libtokyocabinet.a" "libtokyocabinet.dylib"}
:x86_64 #{"libjri.jnilib" "libjinput-osx.jnilib" "liblwjgl.jnilib"
"openal.dylib" "librxtxSerial.jnilib"
"libjtokyocabinet.1.1.0.dylib" "libjtokyocabinet.1.dylib"
"libjtokyocabinet.dylib" "libjtokyocabinet.jnilib"
"libtokyocabinet.9.10.0.dylib"
"libtokyocabinet.9.8.0.dylib" "libtokyocabinet.9.dylib"
"libtokyocabinet.a" "libtokyocabinet.dylib"}}
:windows {:x86 #{"jri.dll" "rJava.dll" "jinput-dx8.dll" "jinput-raw.dll"
"lwjgl.dll" "OpenAL32.dll" "rxtxSerial.dll"}
:x86_64 #{"jri.dll rJava.dll" "jinput-dx8_64.dll"
"jinput-raw_64.dll" "lwjgl64.dll" "OpenAL64.dll"
"rxtxSerial.dll"}}
:solaris {:x86 #{"liblwjgl.so" "libopenal.so"}
:x86_64 #{"liblwjgl64.so" "libopenal.so"}}})
"libtokyocabinet.a" "libtokyocabinet.dylib"}}
:windows {:x86 #{"jri.dll" "rJava.dll" "jinput-dx8.dll" "jinput-raw.dll"
"lwjgl.dll" "OpenAL32.dll" "rxtxSerial.dll"}
:x86_64 #{"jri.dll rJava.dll" "jinput-dx8_64.dll"
"jinput-raw_64.dll" "lwjgl64.dll" "OpenAL64.dll"
"rxtxSerial.dll"}}
:solaris {:x86 #{"liblwjgl.so" "libopenal.so"}
:x86_64 #{"liblwjgl64.so" "libopenal.so"}}})
(deftest test-native-deps
(delete-file-recursively (:native-path native-project) true)
(deps native-project)
(is (= (conj (get-in native-lib-files-map [(eval/get-os) (eval/get-arch)])
".gitkeep")
(set (for [f (rest (file-seq (eval/native-arch-path native-project)))]
(set (for [f (rest (file-seq (io/file (:root native-project)
(eval/native-arch-path
native-project))))]
(.getName f))))))
(deftest test-checksum-deps
(deps (assoc sample-project :checksum-deps true))
(let [deps-ran (atom false)]
(with-redefs [classpath/resolve-dependencies (fn [& _] (reset! deps-ran true))]
(deps (assoc sample-project :checksum-deps true))
(is (not @deps-ran)))))
(deftest test-explicit-checksum-deps
(deps (assoc sample-project :checksum-deps true))
(let [deps-ran (atom false)]
(with-redefs [classpath/resolve-dependencies (fn [& _] (reset! deps-ran true))]
(main/apply-task "deps" (assoc sample-project :checksum-deps true) [])
(is @deps-ran))))

View file

@ -8,8 +8,8 @@
(defproject nomnomnom "0.5.0-SNAPSHOT"
:description "A test project"
:dependencies [[~(symbol "org.clojure" "clojure") ~clj-version]
[rome/rome ~(str "0." "9")]
[org.ccil.cowan.tagsoup/tagsoup "1.2"]]
[rome ~(str "0." "9")]
[ring "1.0.0"]]
:main nom.nom.nom
:warn-on-reflection true
:shell-wrapper {:main nom.nom.nom