Commit graph

72 commits

Author SHA1 Message Date
Tuncer Ayaz
f5af9d6c21 Fix rebar_eunit whitespace issues 2012-07-02 19:23:25 +02:00
Motiejus Jakštys
ad2f30ccb9 Fix cover crash if src_dirs is not default
Make sure files from erl_opts->src_dirs are copied to .eunit for cover
inspection.

Without this patch cover failed to find source files which were in
src_dirs, and threw the following exception:

ERROR: eunit failed while processing
/path/to/project:
{'EXIT',{{badmatch,{error,no_source_code_found}},
         [{rebar_eunit,'-cover_analyze/3-fun-0-',1,
                       [{file,"src/rebar_eunit.erl"},{line,280}]},
          {lists,foreach,2,[{file,"lists.erl"},{line,1262}]},
          {rebar_eunit,cover_analyze,3,
                       [{file,"src/rebar_eunit.erl"},{line,279}]},
          {rebar_eunit,eunit,2,[{file,"src/rebar_eunit.erl"},{line,140}]},
          {rebar_core,run_modules,4,[{file,"src/rebar_core.erl"},{line,425}]},
          {rebar_core,execute,5,[{file,"src/rebar_core.erl"},{line,359}]},
          {rebar_core,process_dir0,6,[{file,"src/rebar_core.erl"},{line,223}]},
          {rebar_core,process_dir,4,
                      [{file,"src/rebar_core.erl"},{line,130}]}]}}

Now all source files are copied to .eunit.
2012-07-02 18:46:00 +02:00
Tuncer Ayaz
e6165c7146 Fix #252 (Reported-by: Maxim-Vladimirsky) 2012-06-21 00:08:51 +02:00
Tuncer Ayaz
3dce05314b Fix rebar_eunit comments 2012-06-18 00:55:51 +02:00
Dave Smith
c86c99940d Remove ?FAIL in favor of ?ABORT 2012-06-08 07:06:15 -06:00
Jeremy Raymond
7e84634b8f Fix for destruction of config app vars on reset 2012-02-15 21:11:57 +01:00
Tuncer Ayaz
ee44d8554a Fix whitespace errors 2012-01-17 17:04:07 +01:00
Francis Joanis
b498e86ef7 Delete existing erl files in ?EUNIT_DIR
Before copying the .erl files to the .eunit directory ensure that they
are deleted if they already exist. This prevents EACCES errors to happen
when trying to re-copy .erl files that are read-only.
2012-01-17 16:54:27 +01:00
Tomas Abrahamsson
c8f56c7cb2 Don't kill any inet_gethost_native after eunit
Avoid error reports like this one:

  prompt$ rebar eunit
  ==> dummy (eunit)
    Test passed.

  =ERROR REPORT==== 29-Dec-2011::23:22:11 ===
  ** Generic server inet_gethost_native_sup terminating
  ** Last message in was {'EXIT',<0.62.0>,killed}
  ** When Server state == {state,inet_gethost_native,undefined,<0.62.0>,
                                 {local,inet_gethost_native_sup}}
  ** Reason for termination ==
  ** killed

Previously, it could happen if an eunit test did something that
required a name lookup, like in this example:

  -module(dummy_tests).
  -include_lib("eunit/include/eunit.hrl").

  x_test() ->
      {ok, _Hostent} = inet:gethostbyname(localhost).

The inet_gethost_native is a process, started on demand, under a
supervisor_bridge under the kernel_sup, but it is not a gen_server
process or the like, so it has nothing in '$ancestors' in its process
dictionary to indicate it is part of kernel.
2011-12-29 23:38:03 +01:00
Tuncer Ayaz
8c89a388bf Universally support apps=/skip_apps= 2011-12-12 21:20:34 +01:00
Klas Johansson
896e8505b2 Stop applications before killing extra processes
This means that applications get a chance to shut down themselves,
before rebar will start killing their processes.  This avoids ERROR
REPORTS from application supervisors.
2011-11-02 20:08:24 +01:00
Jon Meredith
5775746758 Remove modules that fail coverage from the list 2011-10-14 17:10:11 +02:00
Tuncer Ayaz
3e946a7d5c Fix cover_init call to use correct module list 2011-09-01 20:17:43 +02:00
Joseph Wayne Norton
b6f575c7fe Keep *_tests not automatically included by eunit 2011-09-01 19:23:46 +02:00
Alfonso De Gregorio
6f76d14499 Fix R13 compatibility (auto imported monitor/2) 2011-08-28 14:00:04 +02:00
Tuncer Ayaz
8376693a3f Fix Dialyzer warnings 2011-08-25 11:41:22 +02:00
Scott Lystig Fritchie
9832a5c5c6 Merge slf-eunit-process-isolation2 branch 2011-08-24 23:19:01 -05:00
Scott Lystig Fritchie
9c8b5e6c82 Check $ancestors for kernel OTP app processes to not kill 2011-08-24 12:11:48 -05:00
Scott Lystig Fritchie
0627075dd6 Add comments on pids not to kill 2011-08-23 17:32:07 -05:00
Scott Lystig Fritchie
b674ea19a4 Portability via filename:join/1 2011-08-23 14:22:04 -05:00
Scott Lystig Fritchie
f79290dc9c Replace sleep with pause_until_net_kernel_stopped() 2011-08-23 14:17:18 -05:00
Tuncer Ayaz
e6d1e13966 Apply Tidier suggestions 2011-08-20 18:33:36 +02:00
Scott Lystig Fritchie
34dd0ccdd9 EUnit: reset vm state after test run
Added new property to `eunit_opts` option list:

  reset_after_eunit::boolean() - default = true.
      If true, try to "reset" VM state to approximate state prior to
      running the EUnit tests:
          * Stop net_kernel if it was started
          * Stop OTP applications not running before EUnit tests were run
          * Kill processes not running before EUnit tests were run
          * Reset OTP application environment variables
2011-08-11 15:52:34 -05:00
David Reid
6736e3147e Fix handling of {already_started,Pid} from cover:start
Previous patch erroneously assumed that cover:start() returned
{already_started,Pid} in the cases where cover was already started. We
now turn {error,{already_started,Pid}} into {ok, Pid} and return
{error, Reason} if we encounter an error we do not know about, this
will cause a nice and violent badmatch to stop everything.
2011-08-10 18:32:58 +02:00
David Reid
0edf52b539 Redirect cover module output to .eunit/cover.log
The cover module calls io:format and io:fwrite directly for several types of
informational messages and warnings.  When using meck to mock covered modules
these warnings are triggered and can cause severe polution of the test output.

We can avoid this by starting cover explicitly then setting the group_leader
of that process to a file handle.
2011-08-05 10:04:14 -07:00
Andrew Thompson
2e654513dd Fix eunit regression (reported-by Alexander Dorofeev) 2011-04-23 17:17:49 +02:00
Andrew Thompson
310a1bb7ea New eunit param skip_app, allow suite to be a list
This patch allows the 'suite' argument to eunit to be a comma separated
list of modules to test instead of being a single module. This allows
fine-grained testing when one test suite interferes with another and its
not clear which suite is causing the problem. It also lets you run the
test suite in a different order for a similar reason.

The other enhancement is to add a new eunit parameter; 'skip_app' which
like 'app' is a comma separated list of modules to skip testing on. This
parameter is only applied if the app parameter is not passed. Its
purpose is to avoid forcing you to specify all the apps to test if you
only want to skip a handful and there are many apps to test.
2011-04-06 18:56:35 +02:00
Tuncer Ayaz
be209f24ff Make debug_info default
Add no_debug_info option.
Remove debug_info=1 option.
2011-03-30 11:19:37 +02:00
Tuncer Ayaz
81be474c30 Fix regression (thanks Anthony Molinaro) 2011-03-07 20:16:29 +01:00
Tuncer Ayaz
377c9e86d5 Add PropEr support 2011-02-16 17:36:11 +01:00
Tuncer Ayaz
b70f374f89 Remove export_all directive 2011-02-13 16:38:04 +01:00
Joseph Wayne Norton
e4cd50e2a3 Add eunit_first_files option 2011-02-13 16:26:48 +01:00
Tuncer Ayaz
63de05d914 Clean up code 2011-02-06 17:41:04 +01:00
Tuncer Ayaz
c466076ffb Clean up emacs file local variables 2011-01-31 17:55:36 +01:00
Tuncer Ayaz
58fd80917a Fix file existence checks 2011-01-13 17:39:14 +01:00
Kostis Sagonas
7dc76d578e Tidier improvements 2010-10-26 00:38:51 +02:00
Oscar Hellström
8ea62597ff Use eunit_dir() instead of ?EUNIT_DIR since the function exists.
The eunit_dir() does use the ?EUNIT_DIR macro internally, but it also builds, what I guess is, an absolute path, which might be better :) At least it's more consistent.
2010-08-24 21:59:59 +02:00
Oscar Hellström
8c03d5959b Make sure *both* .eunit and ebin directory exists before setting up the code path.
Normally the ebin directory doesn't contain any source files. Therefore it won't be kept in the repository by, at least, mercurial and also maybe git unless you put some .keep file in it or do some other hack. The ebin directory is created by rebar compile, but if rebar eunit is called before rebar compile, you end up with a {'EXIT', {{badmatch,{error,bad_directory}},...}. Another approach would be not to match cod:add_pathz(ebin_dir()) with ok, but I think this is an ok solution as well.
2010-08-24 21:54:54 +02:00
Kostis Sagonas
e024778599 Dialyzer related cleanups 2010-10-10 14:11:13 -06:00
Andrew Thompson
f2244b26be Add optional eunit coverage report to terminal
Add a coverage report similar to the one output to index.html except
that it is output to the terminal if the new rebar.conf option
'cover_print_enabled' is set to true.
2010-10-06 21:05:13 +02:00
Tuncer Ayaz
820012410a Fix dialyzer warning for call to code:which/1 2010-09-29 23:31:50 +02:00
Russell Brown
e4772c0763 beam_lib:chunks needs abs path to beam.
Uses code:which or cover:is_compiled to get path the beam for chunks
2010-07-04 22:14:56 +01:00
Dave Smith
ef175652e4 Fix up code path for eunit so that parse transforms in eunit tests work properly 2010-06-28 15:19:19 -06:00
Dave Smith
f75bcdc7d5 Only skip eunit on apps IIF the app= parameter is specified
--HG--
extra : rebase_source : 2f2b819e209a912424c328dd57ec5e00268d40bc
2010-06-25 15:12:02 -06:00
Tuncer Ayaz
8ebbffafe6 Correct typo 2010-06-23 13:27:48 +02:00
Dave Smith
c2b58ac62f Change console message to debug message (more appropriate) 2010-06-22 15:42:05 -06:00
Dave Smith
9d09ccc99a Adding support for restricting eunit to a specific application 2010-06-22 14:31:31 -06:00
Chris Bernard
4825353a23 Fix incorrect coverage count when prod modules include EUnit header.
Modules that include the EUnit header get an implicit test/0 fun,
which cover considers a runnable line, but eunit:(TestRepresentation)
never calls.  Result: prod modules with tests can never reach 100%
coverage.  Ironic.  In this case, fix it by decrementing the NotCovered
counter returned by cover:analyze/3.
2010-05-15 15:09:45 -04:00
Jon Meredith
bf3dfcb34b Taught eunit/coverage to split the src module coverage stats from any test code. 2010-05-03 11:37:14 -06:00
Dave Smith
1826e62069 Copy all source files for eunit to .eunit directory so that cover works properly (ick!) 2010-05-03 09:45:21 -06:00