PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/test/leiningen/test/compile.clj

https://github.com/khajam/leiningen
Clojure | 79 lines | 67 code | 10 blank | 2 comment | 5 complexity | b3522e726ecd46c46fe886089e552312 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. (ns leiningen.test.compile
  2. (:refer-clojure :exclude [compile])
  3. (:use [clojure.test]
  4. [clojure.java.io :only [file]]
  5. [clojure.java.shell :only [with-sh-dir]]
  6. [leiningen.compile]
  7. [leiningen.test.helper :only [sample-project delete-file-recursively
  8. sample-failing-project
  9. tricky-name-project]])
  10. (:require [leiningen.core.eval :as eval]
  11. [leiningen.core.main :as main]))
  12. (use-fixtures :each (fn [f]
  13. (delete-file-recursively
  14. (file "test_projects" "sample" "target") true)
  15. (delete-file-recursively
  16. (file "test_projects" "sample_failing" "target") true)
  17. (f)))
  18. (deftest test-compile
  19. (compile sample-project)
  20. (is (.exists (file "test_projects" "sample" "target"
  21. "classes" "nom" "nom" "nom.class")))
  22. (is (thrown? Exception (compile sample-failing-project))))
  23. (deftest test-compile-all
  24. (compile sample-project ":all")
  25. (is (.exists (file "test_projects" "sample" "target"
  26. "classes" "nom" "nom" "nom.class"))))
  27. (def eip-check (atom false))
  28. (deftest test-plugin
  29. (reset! eip-check false)
  30. (eval/eval-in-project (assoc sample-project
  31. :eval-in :leiningen
  32. :skip-shutdown-agents true
  33. :main nil)
  34. `(reset! eip-check true))
  35. (is @eip-check))
  36. (deftest test-cleared-transitive-aot
  37. (compile (assoc sample-project :clean-non-project-classes true))
  38. (eval/eval-in-project sample-project '(require 'nom.nom.nom))
  39. (let [classes (seq (.list (file "test_projects" "sample" "target"
  40. "classes" "nom" "nom")))]
  41. (doseq [r [#"nom\$fn__\d+.class" #"nom\$loading__\d+__auto__.class"
  42. #"nom\$_main.class" #"nom.class" #"nom__init.class"]]
  43. (is (some (partial re-find r) classes) (format "missing %s" r))))
  44. (is (not (.exists (file "test_projects" "sample" "target"
  45. "classes" "sample2" "core.class"))))
  46. (is (not (.exists (file "test_projects" "sample" "target"
  47. "classes" "sample2" "alt.class")))))
  48. (deftest test-cleared-transitive-aot-by-regexes
  49. (compile (assoc sample-project :clean-non-project-classes [#"core"]))
  50. (let [classes (seq (.list (file "test_projects" "sample" "target"
  51. "classes" "nom" "nom")))]
  52. (doseq [r [#"nom\$fn__\d+.class" #"nom\$loading__\d+__auto__.class"
  53. #"nom\$_main.class" #"nom.class" #"nom__init.class"]]
  54. (is (some (partial re-find r) classes) (format "missing %s" r))))
  55. (is (not (.exists (file "test_projects" "sample" "target"
  56. "classes" "sample2" "core.class"))))
  57. (is (.exists (file "test_projects" "sample" "target" "classes"
  58. "sample2" "alt__init.class"))))
  59. (deftest test-skip-aot-on-main
  60. (delete-file-recursively (:compile-path tricky-name-project) :silent)
  61. (compile tricky-name-project)
  62. (is (empty? (.list (file (:compile-path tricky-name-project))))))
  63. (deftest test-injection
  64. (eval/eval-in-project (assoc sample-project
  65. :injections ['(do (ns inject.stuff)
  66. (def beef :hot))])
  67. '#'inject.stuff/beef))
  68. ;; (deftest test-compile-java-main
  69. ;; (compile dev-deps-project))