1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # This file is part of Autoconf. -*- Autoconf -*-
- # M4 macros used in running tests using third-party testing tools.
- m4_define([_AT_COPYRIGHT_YEARS],
- [Copyright (C) 2009-2012 Free Software Foundation, Inc.])
- # This file is part of Autoconf. This program is free
- # software; you can redistribute it and/or modify it under the
- # terms of the GNU General Public License as published by the
- # Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # Under Section 7 of GPL version 3, you are granted additional
- # permissions described in the Autoconf Configure Script Exception,
- # version 3.0, as published by the Free Software Foundation.
- #
- # You should have received a copy of the GNU General Public License
- # and a copy of the Autoconf Configure Script Exception along with
- # this program; see the files COPYINGv3 and COPYING.EXCEPTION
- # respectively. If not, see <http://www.gnu.org/licenses/>.
- ## ------------------------ ##
- ## Erlang EUnit unit tests. ##
- ## ------------------------ ##
- # AT_CHECK_EUNIT(MODULE, SPEC, [ERLFLAGS], [RUN-IF-FAIL], [RUN-IF-PASS])
- # ----------------------------------------------------------------------
- # Check that the EUnit test specification SPEC passes. The ERLFLAGS
- # optional flags are passed to the Erlang interpreter command line to
- # execute the test. The test is executed from an automatically
- # generated Erlang module named MODULE. Each call to this macro should
- # have a distinct MODULE name within each test group, to ease
- # debugging.
- # An Erlang/OTP version which contains the eunit library must be
- # installed, in order to execute this macro in a test suite. The ERL,
- # ERLC, and ERLCFLAGS variables must be defined in atconfig,
- # typically by using the AC_ERLANG_PATH_ERL and AC_ERLANG_PATH_ERLC
- # Autoconf macros.
- _AT_DEFINE_SETUP([AT_CHECK_EUNIT],
- [AT_SKIP_IF([test ! -f "$ERL" || test ! -f "$ERLC"])
- ## A wrapper to EUnit, to exit the Erlang VM with the right exit code:
- AT_DATA([$1.erl],
- [[-module($1).
- -export([test/0, test/1]).
- test() -> test([]).
- test(Options) ->
- TestSpec = $2,
- ReturnValue = case code:load_file(eunit) of
- {module, _} -> case eunit:test(TestSpec, Options) of
- ok -> "0\n"; %% test passes
- _ -> "1\n" %% test fails
- end;
- _ -> "77\n" %% EUnit not found, test skipped
- end,
- file:write_file("$1.result", ReturnValue),
- init:stop().
- ]])
- AT_CHECK(["$ERLC" $ERLCFLAGS -b beam $1.erl])
- ## Make EUnit verbose when testsuite is verbose:
- if test -z "$at_verbose"; then
- at_eunit_options="verbose"
- else
- at_eunit_options=""
- fi
- AT_CHECK(["$ERL" $3 -s $1 test $at_eunit_options -noshell], [0], [ignore], [],
- [$4], [$5])
- AT_CAPTURE_FILE([$1.result])
- AT_CHECK([test -f "$1.result" && (exit `cat "$1.result"`)])
- ])
|