diff options
Diffstat (limited to 'lib/eunit')
| -rw-r--r-- | lib/eunit/include/eunit.hrl | 264 | ||||
| -rw-r--r-- | lib/eunit/src/Makefile | 2 | 
2 files changed, 34 insertions, 232 deletions
diff --git a/lib/eunit/include/eunit.hrl b/lib/eunit/include/eunit.hrl index 53d291430d..88e9d6c19b 100644 --- a/lib/eunit/include/eunit.hrl +++ b/lib/eunit/include/eunit.hrl @@ -15,11 +15,14 @@  %%  %% Copyright (C) 2004-2006 Mickaël Rémond, Richard Carlsson +-ifndef(EUNIT_HRL). +-define(EUNIT_HRL, true). +  %% Including this file turns on testing and defines TEST, unless NOTEST  %% is defined before the file is included. If both NOTEST and TEST are  %% already defined, then TEST takes precedence, and NOTEST will become  %% undefined. -%%  +%%  %% If NODEBUG is defined before this file is included, the debug macros  %% are disabled, unless DEBUG is also defined, in which case NODEBUG  %% will become undefined. NODEBUG also implies NOASSERT, unless testing @@ -31,14 +34,10 @@  %% even if NODEBUG is defined. If both ASSERT and NOASSERT are defined  %% before the file is included, then ASSERT takes precedence, and NOASSERT  %% will become undefined regardless of TEST. -%%  +%%  %% After including this file, EUNIT will be defined if and only if TEST  %% is defined. --ifndef(EUNIT_HRL). --define(EUNIT_HRL, true). - -  %% allow defining TEST to override NOTEST  -ifdef(TEST).  -undef(NOTEST). @@ -49,13 +48,6 @@  -undef(NODEBUG).  -endif. -%% allow NODEBUG to imply NOASSERT, unless overridden below --ifdef(NODEBUG). --ifndef(NOASSERT). --define(NOASSERT, true). --endif. --endif. -  %% note that the main switch used within this file is NOTEST; however,  %% both TEST and EUNIT may be used to check whether testing is enabled  -ifndef(NOTEST). @@ -70,10 +62,8 @@  -undef(EUNIT).  -endif. -%% allow ASSERT to override NOASSERT (regardless of TEST/NOTEST) --ifdef(ASSERT). --undef(NOASSERT). --endif. +%% include the assert macros; ASSERT overrides NOASSERT if defined +-include_lib("stdlib/include/assert.hrl").  %% Parse transforms for automatic exporting/stripping of test functions.  %% (Note that although automatic stripping is convenient, it will make @@ -91,7 +81,7 @@  %% All macros should be available even if testing is turned off, and  %% should preferably not require EUnit to be present at runtime. -%%  +%%  %% We must use fun-call wrappers ((fun () -> ... end)()) to avoid  %% exporting local variables, and furthermore we only use variable names  %% prefixed with "__", that hopefully will not be bound outside the fun. @@ -128,211 +118,24 @@  				      current_function)))).  -endif. -%% The plain assert macro should be defined to do nothing if this file -%% is included when debugging/testing is turned off. --ifdef(NOASSERT). --ifndef(assert). --define(assert(BoolExpr),ok). --endif. --else. -%% The assert macro is written the way it is so as not to cause warnings -%% for clauses that cannot match, even if the expression is a constant. --undef(assert). --define(assert(BoolExpr), -	begin -	((fun () -> -	    case (BoolExpr) of -		true -> ok; -		__V -> erlang:error({assertion_failed, -				     [{module, ?MODULE}, -				      {line, ?LINE}, -				      {expression, (??BoolExpr)}, -				      {expected, true}, -				      {value, case __V of false -> __V; -						  _ -> {not_a_boolean,__V} -					      end}]}) -	    end -	  end)()) -	end). --endif. --define(assertNot(BoolExpr), ?assert(not (BoolExpr))). +%% General test macros  -define(_test(Expr), {?LINE, fun () -> (Expr) end}). -  -define(_assert(BoolExpr), ?_test(?assert(BoolExpr))). -  -define(_assertNot(BoolExpr), ?_assert(not (BoolExpr))). - -%% This is mostly a convenience which gives more detailed reports. -%% Note: Guard is a guarded pattern, and can not be used for value. --ifdef(NOASSERT). --define(assertMatch(Guard, Expr), ok). --else. --define(assertMatch(Guard, Expr), -	begin -	((fun () -> -	    case (Expr) of -		Guard -> ok; -		__V -> erlang:error({assertMatch_failed, -				     [{module, ?MODULE}, -				      {line, ?LINE}, -				      {expression, (??Expr)}, -				      {pattern, (??Guard)}, -				      {value, __V}]}) -	    end -	  end)()) -	end). --endif.  -define(_assertMatch(Guard, Expr), ?_test(?assertMatch(Guard, Expr))). - -%% This is the inverse case of assertMatch, for convenience. --ifdef(NOASSERT). --define(assertNotMatch(Guard, Expr), ok). --else. --define(assertNotMatch(Guard, Expr), -	begin -	((fun () -> -	    __V = (Expr), -	    case __V of -		Guard -> erlang:error({assertNotMatch_failed, -				       [{module, ?MODULE}, -					{line, ?LINE}, -					{expression, (??Expr)}, -					{pattern, (??Guard)}, -					{value, __V}]}); -		_ -> ok -	    end -	  end)()) -	end). --endif.  -define(_assertNotMatch(Guard, Expr), ?_test(?assertNotMatch(Guard, Expr))). - -%% This is a convenience macro which gives more detailed reports when -%% the expected LHS value is not a pattern, but a computed value --ifdef(NOASSERT). --define(assertEqual(Expect, Expr), ok). --else. --define(assertEqual(Expect, Expr), -	begin -	((fun (__X) -> -	    case (Expr) of -		__X -> ok; -		__V -> erlang:error({assertEqual_failed, -				     [{module, ?MODULE}, -				      {line, ?LINE}, -				      {expression, (??Expr)}, -				      {expected, __X}, -				      {value, __V}]}) -	    end -	  end)(Expect)) -	end). --endif.  -define(_assertEqual(Expect, Expr), ?_test(?assertEqual(Expect, Expr))). - -%% This is the inverse case of assertEqual, for convenience. --ifdef(NOASSERT). --define(assertNotEqual(Unexpected, Expr), ok). --else. --define(assertNotEqual(Unexpected, Expr), -	begin -	((fun (__X) -> -	    case (Expr) of -		__X -> erlang:error({assertNotEqual_failed, -				     [{module, ?MODULE}, -				      {line, ?LINE}, -				      {expression, (??Expr)}, -				      {value, __X}]}); -		_ -> ok -	    end -	  end)(Unexpected)) -	end). --endif.  -define(_assertNotEqual(Unexpected, Expr),  	?_test(?assertNotEqual(Unexpected, Expr))). - -%% Note: Class and Term are patterns, and can not be used for value. -%% Term can be a guarded pattern, but Class cannot. --ifdef(NOASSERT). --define(assertException(Class, Term, Expr), ok). --else. --define(assertException(Class, Term, Expr), -	begin -	((fun () -> -	    try (Expr) of -	        __V -> erlang:error({assertException_failed, -				      [{module, ?MODULE}, -				       {line, ?LINE}, -				       {expression, (??Expr)}, -				       {pattern, -					"{ "++(??Class)++" , "++(??Term) -					++" , [...] }"}, -				       {unexpected_success, __V}]}) -	    catch -		Class:Term -> ok; -	        __C:__T -> -		    erlang:error({assertException_failed, -				  [{module, ?MODULE}, -				   {line, ?LINE}, -				   {expression, (??Expr)}, -				   {pattern, -				    "{ "++(??Class)++" , "++(??Term) -				    ++" , [...] }"}, -				   {unexpected_exception, -				    {__C, __T, -				     erlang:get_stacktrace()}}]}) -	    end -	  end)()) -	end). --endif. - --define(assertError(Term, Expr), ?assertException(error, Term, Expr)). --define(assertExit(Term, Expr), ?assertException(exit, Term, Expr)). --define(assertThrow(Term, Expr), ?assertException(throw, Term, Expr)). -  -define(_assertException(Class, Term, Expr),  	?_test(?assertException(Class, Term, Expr))).  -define(_assertError(Term, Expr), ?_assertException(error, Term, Expr)).  -define(_assertExit(Term, Expr), ?_assertException(exit, Term, Expr)).  -define(_assertThrow(Term, Expr), ?_assertException(throw, Term, Expr)). - -%% This is the inverse case of assertException, for convenience. -%% Note: Class and Term are patterns, and can not be used for value. -%% Both Class and Term can be guarded patterns. --ifdef(NOASSERT). --define(assertNotException(Class, Term, Expr), ok). --else. --define(assertNotException(Class, Term, Expr), -	begin -	((fun () -> -	    try (Expr) of -	        _ -> ok -	    catch -		__C:__T -> -		    case __C of -			Class -> -			    case __T of -				Term -> -				    erlang:error({assertNotException_failed, -						  [{module, ?MODULE}, -						   {line, ?LINE}, -						   {expression, (??Expr)}, -						   {pattern, -						    "{ "++(??Class)++" , " -						    ++(??Term)++" , [...] }"}, -						   {unexpected_exception, -						    {__C, __T, -						     erlang:get_stacktrace() -						    }}]}); -				_ -> ok -			    end; -			_ -> ok -		    end -	    end -	  end)()) -	end). --endif.  -define(_assertNotException(Class, Term, Expr),  	?_test(?assertNotException(Class, Term, Expr))). +-define(_assertReceive(Guard, Expr), ?_test(?assertReceive(Guard, Expr))).  %% Macros for running operating system commands. (Note that these  %% require EUnit to be present at runtime, or at least eunit_lib.) @@ -364,18 +167,18 @@  -else.  -define(assertCmdStatus(N, Cmd),  	begin - 	((fun () -> -	    case ?_cmd_(Cmd) of -		{(N), _} -> ok; -		{__N, _} -> erlang:error({assertCmd_failed, -					  [{module, ?MODULE}, -					   {line, ?LINE}, -					   {command, (Cmd)}, -					   {expected_status,(N)}, -					   {status,__N}]}) -	    end -	  end)()) -	 end). +            ((fun () -> +                      case ?_cmd_(Cmd) of +                          {(N), _} -> ok; +                          {__N, _} -> erlang:error({assertCmd_failed, +                                                    [{module, ?MODULE}, +                                                     {line, ?LINE}, +                                                     {command, (Cmd)}, +                                                     {expected_status,(N)}, +                                                     {status,__N}]}) +                      end +              end)()) +        end).  -endif.  -define(assertCmd(Cmd), ?assertCmdStatus(0, Cmd)). @@ -384,17 +187,17 @@  -else.  -define(assertCmdOutput(T, Cmd),  	begin - 	((fun () -> -	    case ?_cmd_(Cmd) of -		{_, (T)} -> ok; -		{_, __T} -> erlang:error({assertCmdOutput_failed, -					  [{module, ?MODULE}, -					   {line, ?LINE}, -					   {command,(Cmd)}, -					   {expected_output,(T)}, -					   {output,__T}]}) -	    end -	  end)()) +            ((fun () -> +                      case ?_cmd_(Cmd) of +                          {_, (T)} -> ok; +                          {_, __T} -> erlang:error({assertCmdOutput_failed, +                                                    [{module, ?MODULE}, +                                                     {line, ?LINE}, +                                                     {command,(Cmd)}, +                                                     {expected_output,(T)}, +                                                     {output,__T}]}) +                      end +              end)())  	end).  -endif. @@ -439,5 +242,4 @@  	end).  -endif. -  -endif. % EUNIT_HRL diff --git a/lib/eunit/src/Makefile b/lib/eunit/src/Makefile index 47aef104ff..86a6d8831e 100644 --- a/lib/eunit/src/Makefile +++ b/lib/eunit/src/Makefile @@ -24,7 +24,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/eunit-$(VSN)  EBIN = ../ebin  INCLUDE=../include -ERL_COMPILE_FLAGS += -pa $(EBIN) -I$(INCLUDE) +warn_unused_vars +nowarn_shadow_vars +warn_unused_import +warn_obsolete_guard +ERL_COMPILE_FLAGS += -pa $(EBIN) -pa ../../stdlib/ebin -I$(INCLUDE) +warn_unused_vars +nowarn_shadow_vars +warn_unused_import +warn_obsolete_guard  PARSE_TRANSFORM = eunit_autoexport.erl  | 
