Details
-
Type:
Defect
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Completed
-
Affects Version/s: Release 1.3
-
Fix Version/s: Release 1.4
-
Component/s: None
-
Labels:None
-
Patch:Code
-
Approval:Ok
Description
While clojure.test/are is a very useful macro, it has one major flaw. If the assertion is syntactically incorrect, the test succeeds. Take this testcase:
(deftest broken-test
(are [a b c] (= a b c)
1 1))
See the error? The are form takes three values, but I have provided only two. The test simply passes.
Latest patch checks the number of arguments to are and throws an exception if they don't match.
Attachments
Activity
Tassilo Horn
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Attachment | 0001-Fix-CLJ-931-Syntactically-broken-clojure.test-are-te.patch [ 10919 ] |
Tassilo Horn
made changes -
| Attachment | 0001-Throw-exception-if-are-s-args-don-t-match-its-argv.patch [ 10914 ] |
Tassilo Horn
made changes -
| Attachment |
0001-Fix- |
Tassilo Horn
made changes -
| Attachment | 0001-Fix-CLJ-931-Syntactically-broken-clojure.test-are-te.patch [ 10920 ] |
Andy Fingerhut
made changes -
| Attachment | clj-931-error-on-bad-are-syntax-patch2.txt [ 10989 ] |
Stuart Sierra
made changes -
| Waiting On | richhickey | |
| Approval | Screened [ 10004 ] | |
| Priority | Major [ 3 ] | Minor [ 4 ] |
Stuart Sierra
made changes -
| Description |
While clojure.test/are is a very useful macro, it has one major flaw. If the assertion is syntactically incorrect, the test succeeds. Take this testcase:
{noformat} (deftest broken-test (are [a b c] (= a b c) 1 1)) {noformat} See the error? The are form takes three values, but I have provided only two. The test simply passes. The attached patch makes clojure.test/are take care that the number of values is divisible by the number of variables declared in the vector and throw an exception if that's not the case. Stu, I'm still confused about the workflow. Should I've been adding this report to some Fix Version(s), and if so, which? |
While clojure.test/are is a very useful macro, it has one major flaw. If the assertion is syntactically incorrect, the test succeeds. Take this testcase:
{code} (deftest broken-test (are [a b c] (= a b c) 1 1)) {code} See the error? The are form takes three values, but I have provided only two. The test simply passes. Latest patch checks the number of arguments to {{are}} and throws an exception if they don't match. |
Rich Hickey
made changes -
| Approval | Screened [ 10004 ] | Ok [ 10007 ] |
| Fix Version/s | Release 1.4 [ 10040 ] |
Stuart Halloway
made changes -
| Resolution | Completed [ 1 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
Is this the same issue as
CLJ-806? If so, it might be nice to close one with a comment that it is a duplicate of the other. GivenCLJ-806has no patch, and this one does, perhaps preferable to closeCLJ-806?CLJ-806? If so, it might be nice to close one with a comment that it is a duplicate of the other. GivenCLJ-806has no patch, and this one does, perhaps preferable to closeCLJ-806?