Back

find-migration-dir (clj)

(source)

function

(find-migration-dir dir) (find-migration-dir class-loader parent-dir dir)
Finds the given directory on the classpath. For backward compatibility, tries the System ClassLoader first, but falls back to using the Context ClassLoader like Clojure's compiler. If classloaders return nothing try to find it on a filesystem.

Examples

migratus
;;;; Copyright © 2011 Paul Stadig
;;;;
;;;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
;;;; use this file except in compliance with the License.  You may obtain a copy
;;;; of the License at
;;;;
;;;;   http://www.apache.org/licenses/LICENSE-2.0
;;;;
;;;; Unless required by applicable law or agreed to in writing, software
;;;; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
;;;; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
;;;; License for the specific language governing permissions and limitations
;;;; under the License.
(ns migratus.test.core
  (:require [migratus.protocols :as proto]
            [migratus.mock :as mock]
            [clojure.test :refer :all]
            [migratus.core :refer :all]
            migratus.logger
            [migratus.migrations :as mig]
            [migratus.utils :as utils]
            [clojure.java.io :as io])
  (:import [migratus.mock MockStore MockMigration]))

(defn- migration-exists? [name & [dir]]
  (when-let [migrations-dir (utils/find-migration-dir (or dir "migrations"))]
    (->> (file-seq migrations-dir)
         (map #(.getName %))
         (filter #(.contains % name))
         (not-empty))))

    (testing "when migration dir doesn't exist, it is created"
      (is (nil? (utils/find-migration-dir migration-dir)))
      (create config migration)
      (is (not (nil? (utils/find-migration-dir migration-dir))))
      (is (migration-exists? migration-up migration-dir))
      (is (migration-exists? migration-down migration-dir)))