[erlang-questions] EUnit setUp/tearDown question

Gianfranco Alongi <>
Mon Oct 25 11:08:39 CEST 2010


Hi,


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

is_link_test_() ->
    {foreach,
     fun() ->  ?cmd("mktemp -d temp") -- "\n"  end,
     fun(T) -> ?cmd("rm -rf " ++ T) end,
     [
      fun test_is_link_with_regular/1,
      fun test_is_link_with_link/1
     ]
    }.

% ------------------------------------------------------------------------------
is_link(P) ->
    {ok, FIT} = file:read_link_info(P),
    element(3,FIT) =:= symlink.
  
test_is_link_with_regular(T) ->
    {"Test is link with regular",
    fun() ->
	    P = filename:join(T, "a"),
	    ?cmd("touch "++P),
	    ?assert(not is_link(P))
    end}.

test_is_link_with_link(T) ->
    {"Test Is link with Link",
     fun() ->
	     P = filename:join(T, "a"),
	     ?cmd("touch "++P),
	     ?cmd("ln -s "++P++" "++P++".link"),
	     ?assert(is_link(P ++ ".link"))
     end}.



 zenon$ erlc wth.erl 
 zenon$ erl -pa -eval 'eunit:test(wth,[verbose]).'

Erlang R13B04 (erts-5.7.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.5  (abort with ^G)
1> ======================== EUnit ========================
module 'wth'
  wth: test_is_link_with_regular (Test is link with regular)...[0.008 s] ok
  wth: test_is_link_with_link (Test Is link with Link)...[0.011 s] ok
  [done in 0.049 s]
=======================================================
  All 2 tests passed.

1> 




----- Original Message -----
From: "Muharem Hrnjadovic" <>
To: 
Sent: Monday, October 25, 2010 9:33:25 AM GMT +00:00 GMT Britain, Ireland, Portugal
Subject: [erlang-questions] EUnit setUp/tearDown question

Hello there!

I am trying to set up a suite of tests where a temporary directory is
created and torn down for each test.

{{{
  1 -module(eunit_tests).
  2
  3 -include_lib("eunit.hrl").
  4
  5 is_link(P) ->
  6     {ok, FIT} = file:read_link_info(P),
  7     element(3,FIT) =:= symlink.
  8
  9 test_is_link_with_regular(T) ->
 10     P = filename:join(T, "a"),
 11     ?cmd(io_lib:format("touch ~s", [P])),
 12     ?assert(not is_link(P)).
 13
 14 test_is_link_with_link(T) ->
 15     P = filename:join(T, "a"),
 16     ?cmd(io_lib:format("touch ~s", [P])),
 17     ?cmd(io_lib:format("ln -s ~s ~s.link", [P, P])),
 18     ?assert(is_link(P ++ ".link")).
 19
 20 is_link_test_() ->
 21     {foreach,
 22      fun() -> ?cmd("mktemp -d") end,
 23      fun(T) -> ?cmd("rm -rf " ++ T) end,
 24      ...
 25     }.
}}}

My question is: what should go into line 24 so that the two tests
(test_is_link_with_regular() and test_is_link_with_link()) are called
with T (the temporary directory path)?

Or is there a better way to achieve the same thing?

Best regards/Mit freundlichen Grüßen

-- 
Muharem Hrnjadovic <>
Public key id   : B2BBFCFC
Key fingerprint : A5A3 CC67 2B87 D641 103F  5602 219F 6B60 B2BB FCFC



More information about the erlang-questions mailing list