Navigation Menu

Skip to content

Commit

Permalink
Fixed an issue with drift not working with clojure 1.3. Added more te…
Browse files Browse the repository at this point in the history
…sts to verify the fix, and removed some extra whitespace from the test migration files.
  • Loading branch information
macourtney committed Nov 27, 2011
1 parent 3d4f5dc commit 2686adc
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 31 deletions.
53 changes: 30 additions & 23 deletions src/drift/core.clj
Expand Up @@ -23,29 +23,42 @@
(when-let [migrate-config-fn (ns-resolve migrate-config-namespace 'migrate-config)]
(migrate-config-fn))))

(defn
#^{ :doc "Finds the init function from the config. The init function should be run before each migration." }
find-init-fn []
(:init (find-config)))
(defn find-init-fn
"Finds the init function from the config. The init function should be run before each migration."
([] (find-init-fn (find-config)))
([config] (get config :init)))

(defn
#^{ :doc "Runs the init function with the given args." }
run-init [args]
(when-let [init-fn (find-init-fn)]
(init-fn args)))

(defn
default-ns-content []
(:ns-content (find-config)))
(defn default-ns-content
"Returns the default namespace content if any from the config map."
([] (default-ns-content (find-config)))
([config] (get config :ns-content)))

(defn
#^{ :doc "Finds the migrate directory name." }
find-migrate-dir-name []
(or (:directory (find-config)) migrate-dir))
(defn find-migrate-dir-name
"Finds the migrate directory name."
([] (find-migrate-dir-name (find-config)))
([config] (or (get config :directory) migrate-dir)))

(defn
find-src-dir []
(or (:src (find-config)) src-dir))
file-separator-index [path-str]
(when path-str
(let [min-args (filter #(> % -1) [(.indexOf path-str "/" 1) (.indexOf path-str "\\" 1)])]
(when (not-empty min-args)
(apply min min-args)))))

(defn find-src-dir
"Finds the source directory. If the source directory is not listed in the config map, then this function attempts to
generate the source directory from the first directory in the migrate directory path."
([] (find-src-dir (find-config)))
([config]
(or (get config :src)
(let [migrate-directory-name (find-migrate-dir-name config)]
(.substring migrate-directory-name 0 (inc (file-separator-index migrate-directory-name)))))))

(defn
#^{:doc "Returns the directory where Conjure is running from."}
Expand All @@ -71,18 +84,12 @@
migrate-dir-name (find-migrate-dir-name)]
(find-directory user-directory migrate-dir-name)))

(defn
file-separator-index [path-str]
(when path-str
(let [min-args (filter #(> % -1) [(.indexOf path-str "/" 1) (.indexOf path-str "\\" 1)])]
(when (not-empty min-args)
(apply min min-args)))))

(defn
migrate-namespace-dir
([] (migrate-namespace-dir (find-migrate-dir-name)))
([migrate-dir-name]
(.substring migrate-dir-name (count (find-src-dir)))))
(when migrate-dir-name
(.substring migrate-dir-name (count (find-src-dir))))))

(defn
#^{ :doc "Returns the namespace prefix for the migrate directory name." }
Expand All @@ -93,7 +100,7 @@

(defn
migrate-namespace-prefix []
(or (:namespace-prefix (find-config)) (migrate-namespace-prefix-from-directory)))
(or (get (find-config) :namespace-prefix) (migrate-namespace-prefix-from-directory)))

(defn
#^{ :doc "Returns a string for the namespace of the given file in the given directory." }
Expand All @@ -114,7 +121,7 @@

(defn
migration-namespaces []
(if-let [migration-namespaces (:migration-namespaces (find-config))]
(if-let [migration-namespaces (get (find-config) :migration-namespaces)]
(migration-namespaces (find-migrate-dir-name) (migrate-namespace-prefix))
(map namespace-string-for-file
(filter #(re-matches #".*\.clj$" %)
Expand Down
3 changes: 2 additions & 1 deletion test/drift/test_builder.clj
Expand Up @@ -2,7 +2,8 @@
(:use clojure.test
drift.builder
test-helper)
(:require [drift.core :as core]))
(:require [drift.core :as core]
[clojure.tools.logging :as logging]))

(deftest test-find-or-create-migrate-directory
(let [migrate-directory (find-or-create-migrate-directory (core/migrate-directory))]
Expand Down
19 changes: 14 additions & 5 deletions test/drift/test_core.clj
Expand Up @@ -16,16 +16,22 @@
(is (map? config-map))))

(deftest test-find-init-fn
(is (= migrate-config/init (find-init-fn))))
(is (= migrate-config/init (find-init-fn)))
(is (= migrate-config/init (find-init-fn (find-config))))
(is (nil? (find-init-fn {}))))

(deftest test-default-ns-content
(is (= "\n (:use clojure.contrib.sql)" (default-ns-content))))
(is (= "\n (:use clojure.contrib.sql)" (default-ns-content)))
(is (= "\n (:use clojure.contrib.sql)" (default-ns-content (find-config))))
(is (nil? (default-ns-content {}))))

(deftest test-find-migrate-dir-name
(let [migrate-dir-name (find-migrate-dir-name)]
(is migrate-dir-name)
(is (string? migrate-dir-name))
(is (= "/test/migrations" migrate-dir-name))))
(is (= "/test/migrations" migrate-dir-name)))
(is (= "/test/migrations" (find-migrate-dir-name (find-config))))
(is (= migrate-dir (find-migrate-dir-name {}))))

(deftest test-migrate-directory
(let [migrate-dir (migrate-directory)]
Expand All @@ -37,6 +43,11 @@
(is migrate-dir)
(is (instance? File migrate-dir))))

(deftest test-find-src-dir
(is (= "/test/" (find-src-dir)))
(is (= "/test/" (find-src-dir (find-config))))
(is (= "/src/" (find-src-dir { :src "/src/" } ))))

(deftest test-file-separator-index
(is (= 5 (file-separator-index "/test/migrations")))
(is (= 4 (file-separator-index "test/migrations")))
Expand All @@ -49,8 +60,6 @@
(is (= "migrations" (migrate-namespace-prefix-from-directory)))
(is (= "migrations" (migrate-namespace-prefix-from-directory "/test/migrations")))
(is (= "db.migrate" (migrate-namespace-prefix-from-directory "/test/db/migrate")))
(is (= "db.migrate" (migrate-namespace-prefix-from-directory "test/db/migrate")))
(is (= "migrate" (migrate-namespace-prefix-from-directory "migrate")))
(is (nil? (migrate-namespace-prefix-from-directory nil))))

(deftest test-migration-namespaces
Expand Down
2 changes: 1 addition & 1 deletion test/migrations/001_create_tests.clj
@@ -1,5 +1,5 @@
(ns migrations.001-create-tests)

(defn up [])

(defn down [])
2 changes: 1 addition & 1 deletion test/migrations/002_test_update.clj
@@ -1,5 +1,5 @@
(ns migrations.002-test-update)

(defn up [])

(defn down [])

0 comments on commit 2686adc

Please sign in to comment.