1+ (ns clojure.tools.namespace.file-test
2+ (:require [clojure.test :refer [deftest is]]
3+ [clojure.tools.namespace.dependency :as dep]
4+ [clojure.tools.namespace.file :as file]
5+ [clojure.tools.namespace.test-helpers :as help]
6+ [clojure.tools.namespace.track :as track])
7+ (:import (System.IO FileInfo)))
8+
9+ ; ; Tests compliments of Brandon Correa
10+
11+ (deftest t-add-no-files
12+ (let [tracker (file/add-files (track/tracker ) nil )]
13+ (is (= (dep/->MapDependencyGraph {} {}) (::track/deps tracker)))
14+ (is (= {} (::file/filemap tracker)))
15+ (is (= '() (::track/unload tracker)))
16+ (is (= '() (::track/load tracker)))))
17+
18+ (deftest t-add-one-file
19+ (let [dir (help/create-temp-dir " t-add-one-file" )
20+ one-clj (help/create-source dir 'example.one :clj )
21+ tracker (file/add-files (track/tracker ) [one-clj])]
22+ (is (= (dep/->MapDependencyGraph {} {}) (::track/deps tracker)))
23+ (is (= {one-clj 'example.one} (::file/filemap tracker)))
24+ (is (= (list 'example.one) (::track/unload tracker)))
25+ (is (= (list 'example.one) (::track/load tracker)))))
26+
27+ (deftest t-add-file-with-dependency
28+ (let [dir (help/create-temp-dir " t-add-file-with-dependency" )
29+ main-clj (help/create-source dir 'example.main :clj '[example.one])
30+ tracker (file/add-files (track/tracker ) [main-clj])]
31+ (is (= {'example.main #{'example.one}} (:dependencies (::track/deps tracker))))
32+ (is (= {'example.one #{'example.main}} (:dependents (::track/deps tracker))))
33+ (is (= {main-clj 'example.main} (::file/filemap tracker)))
34+ (is (= (list 'example.main) (::track/unload tracker)))
35+ (is (= (list 'example.main) (::track/load tracker)))))
36+
37+ (deftest t-add-file-that-already-exists
38+ (let [dir (help/create-temp-dir " t-add-file-that-already-exists" )
39+ file-ref-1 (help/create-source dir 'example.main :clj )
40+ file-ref-2 (FileInfo. (.-FullName file-ref-1))
41+ tracker (-> (track/tracker )
42+ (file/add-files [file-ref-1])
43+ (file/add-files [file-ref-2]))]
44+ (is (= {} (:dependencies (::track/deps tracker))))
45+ (is (= {} (:dependents (::track/deps tracker))))
46+ (is (= {file-ref-2 'example.main} (::file/filemap tracker)))
47+ (is (= (list 'example.main) (::track/unload tracker)))
48+ (is (= (list 'example.main) (::track/load tracker)))))
49+
50+ (deftest t-add-file-that-already-exists-in-the-same-call
51+ (let [dir (help/create-temp-dir " t-add-file-that-already-exists-in-the-same-call" )
52+ file-ref-1 (help/create-source dir 'example.main :clj )
53+ file-ref-2 (FileInfo. (.-FullName file-ref-1))
54+ tracker (-> (track/tracker )
55+ (file/add-files [file-ref-1 file-ref-2]))]
56+ (is (= {} (:dependencies (::track/deps tracker))))
57+ (is (= {} (:dependents (::track/deps tracker))))
58+ (is (= {file-ref-2 'example.main} (::file/filemap tracker)))
59+ (is (= (list 'example.main) (::track/unload tracker)))
60+ (is (= (list 'example.main) (::track/load tracker)))))
61+
62+ (deftest t-remove-no-files-from-empty-tracker
63+ (let [tracker (file/remove-files {} nil )]
64+ (is (= (dep/->MapDependencyGraph {} {}) (::track/deps tracker)))
65+ (is (nil? (::file/filemap tracker)))
66+ (is (= '() (::track/unload tracker)))
67+ (is (= '() (::track/load tracker)))))
68+
69+ (deftest t-remove-file-with-dependency-from-filemap
70+ (let [dir (help/create-temp-dir " t-remove-file-with-dependency-from-filemap" )
71+ file-ref-1 (help/create-source dir 'example.main :clj '[example.one])
72+ file-ref-2 (FileInfo. (.-FullName file-ref-1))
73+ tracker (-> (track/tracker )
74+ (file/add-files [file-ref-1])
75+ (file/remove-files [file-ref-2]))]
76+ (is (= {} (:dependencies (::track/deps tracker))))
77+ (is (= {'example.one #{}} (:dependents (::track/deps tracker))))
78+ (is (= {} (::file/filemap tracker)))
79+ (is (= (list 'example.main) (::track/unload tracker)))
80+ (is (= (list ) (::track/load tracker)))))
0 commit comments