added rails-core:file-name-in-project method

diff -r 6ce5e17b0546 rails-core.el
--- a/rails-core.el	Tue Aug 07 09:59:19 2007 -0600
+++ b/rails-core.el	Tue Aug 07 09:59:23 2007 -0600
@@ -78,6 +78,12 @@ will not append \".rb\" to result."
       (rails-project:with-root
        (root)
        (concat root file-name)))))
+
+(defun rails-core:file-name-in-project (file-name)
+  "Return file-name but relative to the project root"
+  (if (file-name-absolute-p file-name)
+      (progn (replace-regexp-in-string (rails-project:root) "" file-name))
+    file-name))
 
 (defun rails-core:quoted-file (file-name)
   "Return the quoted full path for FILE-NAME in a Rails directory."
diff -r 6ce5e17b0546 rails-test.el
--- a/rails-test.el	Tue Aug 07 09:59:19 2007 -0600
+++ b/rails-test.el	Tue Aug 07 10:03:14 2007 -0600
@@ -137,24 +137,40 @@
                  (list file))))
     (rails-script:run "ruby" param 'rails-test:compilation-mode)))
 
+(defun rails-test:test-file-p ()
+  "indicates if the current buffer is a test file"
+  (when (string-match (concat (rails-core:file "test") ".*_test.rb")
+                      (buffer-file-name))
+    t))
+
+(defun rails-test:figure-test-file-name ()
+  "returns the test file for the current buffer"
+  (if (rails-test:test-file-p)
+      (rails-core:file-name-in-project (buffer-file-name))
+    (let* ((model (rails-core:current-model))
+           (controller (rails-core:current-controller))
+           (func-test (rails-core:functional-test-file controller))
+           (unit-test (rails-core:unit-test-file model))
+           (mailer-test (rails-core:unit-test-file controller)))
+      (cond
+       ;; model
+       ((and model unit-test) unit-test)
+       ;; controller
+       ((and controller (not (rails-core:mailer-p controller)) func-test)
+        func-test)
+       ;; mailer
+       ((and controller (rails-core:mailer-p controller) unit-test)
+        unit-test)))))
+
+
 (defun rails-test:run-current ()
   "Run a test for the current controller/model/mailer."
   (interactive)
-  (let* ((model (rails-core:current-model))
-         (controller (rails-core:current-controller))
-         (func-test (rails-core:functional-test-file controller))
-         (unit-test (rails-core:unit-test-file model))
-         (mailer-test (rails-core:unit-test-file controller)))
-    (rails-test:run-single-file
-     (cond
-      ;; model
-      ((and model unit-test) unit-test)
-      ;; controller
-      ((and controller (not (rails-core:mailer-p controller)) func-test)
-       func-test)
-     ;; mailer
-     ((and controller (rails-core:mailer-p controller) unit-test)
-      unit-test)))))
+  (let ((test-file (rails-test:figure-test-file-name)))
+    (if test-file
+        (rails-test:run-single-file test-file)
+      (message (concat "Unable to find test file associated with \""
+                       (buffer-file-name) "\"")))))
 
 (defun rails-test:run-current-method ()
   "Run a test for the current method."
