I thought that once defined clojure vars are immutable and retain their
values. However, I
accidentally bumped into a situation where I observe the same var in two
different states.
Here's how to reproduce:
lein new app vartest
Add the following files to the test folder:
-----
(ns vartest.test-data)
(def uuid (java.util.UUID/randomUUID))
-----
(ns vartest.core-test
(:require [clojure.test :refer :all]
[vartest.test-data :as td]))
(def my-uuid td/uuid)
(deftest a-test
(testing "accessing same var twice"
(is (= my-uuid td/uuid))))
----
Now run the tests:
C:\temp\vartest>lein test :all
lein test vartest.core-test
lein test :only vartest.core-test/a-test
FAIL in (a-test) (core_test.clj:9)
accessing same var twice
expected: (= my-uuid td/uuid)
actual: (not (= #uuid "030d2fe8-407b-4d67-a505-261bc3650729" #uuid
"f8405611-e2da-4dd2-973b-508831
27ef6a"))
lein test vartest.test-data
Ran 1 tests containing 1 assertions.
1 failures, 0 errors.
Tests failed.
However, if I run
lein test :only vartest.core-test/a-test
then the very same test passes.
What's going on here?
Environment: Clojure 1.5.1 and 1.6.0, Leiningen 2.3.4, Java 1.7.0_51
64-Bit, Windows 7 64-bit
::Antti::
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.