diff --git a/src/main/cljs/cljs/core.cljs b/src/main/cljs/cljs/core.cljs
index e384f1560..27a2f9e37 100644
--- a/src/main/cljs/cljs/core.cljs
+++ b/src/main/cljs/cljs/core.cljs
@@ -11886,10 +11886,17 @@ reduces them without incurring seq initialization"
     x))
 
 (defn test
-  "test [v] finds fn at key :test in var metadata and calls it,
-  presuming failure will throw exception"
+  "test [v] - if var, finds fn at key :test in var metadata, if function, finds
+  special test property. Calls it, presuming failure will throw exception.
+
+  Examples:
+
+  (test my-fn) ;; :ok
+  (test #'my-fn) ;; :ok"
   [v]
-  (let [f (.-cljs$lang$test v)]
+  (let [f (if (instance? Var v)
+            (-> v meta :test)
+            (some-> v .-cljs$lang$test))]
     (if f
       (do (f) :ok)
       :no-test)))
diff --git a/src/test/cljs/cljs/core_test.cljs b/src/test/cljs/cljs/core_test.cljs
index 625c14c3f..08581d603 100644
--- a/src/test/cljs/cljs/core_test.cljs
+++ b/src/test/cljs/cljs/core_test.cljs
@@ -2006,7 +2006,7 @@
               IDeref
               (-deref [_]
                 (:x @a))
-              
+
               ISwap
               (-swap! [o f]
                 (:x (swap! a update :x f)))
@@ -2016,7 +2016,7 @@
                 (:x (swap! a update :x f x y)))
               (-swap! [o f x y zs]
                 (:x (swap! a #(apply update % :x f x y zs))))
-              
+
               IReset
               (-reset! [o new-value]
                 (:x (swap! a assoc :x new-value))))]
@@ -2031,7 +2031,7 @@
       (is (= 11 @c))
       (is (= 0 (reset! c 0)))
       (is (= 0 @c))
-      
+
       (is (= [0 1] (swap-vals! c inc)))
       (is (= 1 @c))
       (is (= [1 2] (swap-vals! c + 1)))
diff --git a/src/test/cljs/cljs/var_test.cljs b/src/test/cljs/cljs/var_test.cljs
new file mode 100644
index 000000000..886326a76
--- /dev/null
+++ b/src/test/cljs/cljs/var_test.cljs
@@ -0,0 +1,22 @@
+;; Copyright (c) Rich Hickey. All rights reserved.
+;; The use and distribution terms for this software are covered by the
+;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+;; which can be found in the file epl-v10.html at the root of this distribution.
+;; By using this software in any fashion, you are agreeing to be bound by
+;; the terms of this license.
+;; You must not remove this notice, or any other, from this software.
+
+(ns cljs.var-test
+  (:require [cljs.test :refer-macros [deftest is testing]]))
+
+(defn cljs-3411-function
+  "this function adds two numbers"
+  {:test #(do
+            (assert (= (cljs-3411-function 2 3) 5))
+            (assert (= (cljs-3411-function 4 4) 8)))}
+  ([x y] (+ x y)))
+
+(deftest cljs-3411
+  (testing "cljs.core/test respects docstring"
+    (is (= :ok (test cljs-3411-function)))
+    (is (= :ok (test #'cljs-3411-function)))))
diff --git a/src/test/cljs/test_runner.cljs b/src/test/cljs/test_runner.cljs
index 29218923f..a0e411309 100644
--- a/src/test/cljs/test_runner.cljs
+++ b/src/test/cljs/test_runner.cljs
@@ -57,7 +57,8 @@
             [cljs.inference-test]
             [cljs.walk-test]
             [cljs.repl-test]
-            [cljs.extend-to-native-test]))
+            [cljs.extend-to-native-test]
+            [cljs.var-test]))
 
 (set! *print-newline* false)
 
@@ -116,4 +117,5 @@
   'cljs.inference-test
   'cljs.walk-test
   'cljs.repl-test
-  'cljs.extend-to-native-test)
+  'cljs.extend-to-native-test
+  'cljs.var-test)