From d2be06f9c113812a1ffd56e0fdc25c28cdbf0abf Mon Sep 17 00:00:00 2001
From: Richard Carlsson
Date: Sat, 29 Oct 2016 17:24:25 +0200
Subject: Add comment-versions of assert macros
For all assert macros in assert.hrl, add corresponding versions with an
additional last Comment argument, assumed to be chardata. If an
exception occurs, it will contain an entry {comment, Comment}, which a
reporting tool may pretty-print for better readability.
---
lib/stdlib/doc/src/assert_hrl.xml | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
(limited to 'lib/stdlib/doc')
diff --git a/lib/stdlib/doc/src/assert_hrl.xml b/lib/stdlib/doc/src/assert_hrl.xml
index e2dfc2ab9b..a29f6d6ad7 100644
--- a/lib/stdlib/doc/src/assert_hrl.xml
+++ b/lib/stdlib/doc/src/assert_hrl.xml
@@ -28,7 +28,7 @@
- assert.hrl.xml
+ assert.hrl
Assert macros.
The include file assert.hrl provides macros for inserting
@@ -49,25 +49,33 @@
entries in the Info list are optional; do not rely programatically
on any of them being present.
+ Each assert macro has a corresponding version with an extra argument,
+ for adding comments to assertions. These can for example be printed as
+ part of error reports, to clarify the meaning of the check that
+ failed. For example, ?assertEqual(0, fib(0), "Fibonacci is defined
+ for zero"). The comment text can be any character data (string,
+ UTF8-binary, or deep list of such data), and will be included in the
+ error term as {comment, Text}.
+
If the macro NOASSERT is defined when assert.hrl is read
by the compiler, the macros are defined as equivalent to the atom
- ok. The test is not performed and there is no cost at runtime.
+ ok. The test will not be performed and there is no cost at runtime.
For example, using erlc to compile your modules, the following
- disable all assertions:
+ disables all assertions:
erlc -DNOASSERT=true *.erl
- The value of NOASSERT does not matter, only the fact that it is
- defined.
+ (The value of NOASSERT does not matter, only the fact that it is
+ defined.)
A few other macros also have effect on the enabling or disabling of
assertions:
- If NODEBUG is defined, it implies NOASSERT, unless
- DEBUG is also defined, which is assumed to take precedence.
+ If NODEBUG is defined, it implies NOASSERT (unless
+ DEBUG is also defined, which overrides NODEBUG).
If ASSERT is defined, it overrides NOASSERT, that
is, the assertions remain enabled.
@@ -84,16 +92,19 @@ erlc -DNOASSERT=true *.erl
Macros
assert(BoolExpr)
+ assert(BoolExpr, Comment)
-
Tests that BoolExpr completes normally returning
true.
assertNot(BoolExpr)
+ assertNot(BoolExpr, Comment)
-
Tests that BoolExpr completes normally returning
false.
assertMatch(GuardedPattern, Expr)
+ assertMatch(GuardedPattern, Expr, Comment)
-
Tests that Expr completes normally yielding a value that
matches GuardedPattern, for example:
@@ -104,6 +115,7 @@ erlc -DNOASSERT=true *.erl
?assertMatch({bork, X} when X > 0, f())
assertNotMatch(GuardedPattern, Expr)
+ assertNotMatch(GuardedPattern, Expr, Comment)
-
Tests that Expr completes normally yielding a value that does
not match GuardedPattern.
@@ -111,16 +123,19 @@ erlc -DNOASSERT=true *.erl
when part.
assertEqual(ExpectedValue, Expr)
+ assertEqual(ExpectedValue, Expr, Comment)
-
Tests that Expr completes normally yielding a value that is
exactly equal to ExpectedValue.
assertNotEqual(ExpectedValue, Expr)
+ assertNotEqual(ExpectedValue, Expr, Comment)
-
Tests that Expr completes normally yielding a value that is
not exactly equal to ExpectedValue.
assertException(Class, Term, Expr)
+ assertException(Class, Term, Expr, Comment)
-
Tests that Expr completes abnormally with an exception of type
Class and with the associated Term. The assertion fails
@@ -130,6 +145,7 @@ erlc -DNOASSERT=true *.erl
patterns, as in assertMatch.
assertNotException(Class, Term, Expr)
+ assertNotException(Class, Term, Expr, Comment)
-
Tests that Expr does not evaluate abnormally with an
exception of type Class and with the associated Term.
@@ -139,14 +155,17 @@ erlc -DNOASSERT=true *.erl
be guarded patterns.
assertError(Term, Expr)
+ assertError(Term, Expr, Comment)
-
Equivalent to assertException(error, Term, Expr)
assertExit(Term, Expr)
+ assertExit(Term, Expr, Comment)
-
Equivalent to assertException(exit, Term, Expr)
assertThrow(Term, Expr)
+ assertThrow(Term, Expr, Comment)
-
Equivalent to assertException(throw, Term, Expr)
--
cgit v1.2.3