summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Lemenkov <lemenkov@gmail.com>2016-12-14 21:17:51 +0400
committerGitHub <noreply@github.com>2016-12-14 21:17:51 +0400
commitfcc0bd000c1396f14a9a40c2916bc673f46755ff (patch)
tree6a05be9661cfe1246efe77893845291c3270a5ce
parente26dc0f5898c721f9546bbad3e3421d28c7d161f (diff)
parent2b191e8d59bf619c80e90ce7e91a3a62d3fbe1a2 (diff)
downloaderlang-sd_notify-fcc0bd000c1396f14a9a40c2916bc673f46755ff.tar.gz
Merge pull request #22 from lemenkov/tests
Introduce eunit tests.
-rw-r--r--.travis.yml11
-rw-r--r--Makefile1
-rw-r--r--c_src/sd_notify.c3
-rw-r--r--src/sd_notify.erl17
-rw-r--r--test/sd_notify_test.erl33
5 files changed, 44 insertions, 21 deletions
diff --git a/.travis.yml b/.travis.yml
index b802b21..7e37776 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,14 +3,21 @@ sudo: required
language: erlang
otp_release:
- - 18.2.1
+- 18.0
+- 18.1
+- 18.2
+- 18.2.1
+- 18.3
+- 19.0
+- 19.1
services:
- docker
before_install:
+- kerl list installations
- docker build -t build_ubuntu https://raw.githubusercontent.com/systemd/erlang-sd_notify/master/docker/ubuntu_18_3/Dockerfile
- docker images
script:
-- docker run -v $TRAVIS_BUILD_DIR:/home/sd/ build_ubuntu /bin/sh -c "cd /home/sd/; make all"
+- docker run -v $TRAVIS_BUILD_DIR:/home/sd/ build_ubuntu /bin/sh -c "cd /home/sd/; make all; make test"
diff --git a/Makefile b/Makefile
index 476f80e..7a2c6ec 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ all: compile
compile:
$(REBAR) compile $(REBAR_FLAGS)
+check: test
test: compile
$(REBAR) eunit $(REBAR_FLAGS)
diff --git a/c_src/sd_notify.c b/c_src/sd_notify.c
index 9edf737..5c21be4 100644
--- a/c_src/sd_notify.c
+++ b/c_src/sd_notify.c
@@ -45,7 +45,7 @@ static ERL_NIF_TERM sd_pid_notify_with_fds_nif(ErlNifEnv* env, int argc, const E
enif_get_string(env, argv[2], state, length, ERL_NIF_LATIN1);
enif_get_list_length(env, argv[3], &length);
- int* fds = (int*)enif_alloc(++length * sizeof(int));
+ int* fds = (int*)enif_alloc(length * sizeof(int));
ERL_NIF_TERM list = argv[3];
int i = 0;
while(enif_get_list_cell(env, list, &head, &tail)) {
@@ -61,7 +61,6 @@ static ERL_NIF_TERM sd_pid_notify_with_fds_nif(ErlNifEnv* env, int argc, const E
return enif_make_int(env, result);
}
-
static ErlNifFunc nif_funcs[] =
{
{"sd_pid_notify_with_fds", 4, sd_pid_notify_with_fds_nif},
diff --git a/src/sd_notify.erl b/src/sd_notify.erl
index 504c25f..c5201da 100644
--- a/src/sd_notify.erl
+++ b/src/sd_notify.erl
@@ -36,10 +36,6 @@
nif_stub_error(Line) ->
erlang:nif_error({nif_not_loaded,module,?MODULE,line,Line}).
--ifdef(TEST).
--include_lib("eunit/include/eunit.hrl").
--endif.
-
init() ->
PrivDir = case code:priv_dir(?MODULE) of
{error, bad_name} ->
@@ -65,16 +61,3 @@ sd_pid_notifyf(Pid, UnsetEnv, Format, Data) ->
sd_pid_notify_with_fds(_, _, _, _) ->
?nif_stub.
-
-%% ===================================================================
-%% EUnit tests
-%% ===================================================================
--ifdef(TEST).
-
-sd_notify_test() ->
- ?assertEqual(ok, ok).
-
-sd_notifyf_test() ->
- ?assertEqual(ok, ok).
-
--endif.
diff --git a/test/sd_notify_test.erl b/test/sd_notify_test.erl
new file mode 100644
index 0000000..32a8ac6
--- /dev/null
+++ b/test/sd_notify_test.erl
@@ -0,0 +1,33 @@
+-module(sd_notify_test).
+
+-include_lib("eunit/include/eunit.hrl").
+
+
+sd_notify_test_() ->
+ sd_notify_test_local(erlang:system_info(otp_release)).
+
+sd_notify_test_local("19") ->
+ {ok, CWD} = file:get_cwd(),
+ FakeNotifyUnixSockName = CWD ++ "/fake-notify-udp-sock-" ++ integer_to_list(erlang:phash2(make_ref())),
+ TestMessage = integer_to_list(erlang:phash2(make_ref())),
+ {ok, FakeNotifyUnixSock} = gen_udp:open(0, [{ifaddr, {local, FakeNotifyUnixSockName}}, {active, false}, list]),
+ os:putenv("NOTIFY_SOCKET", FakeNotifyUnixSockName),
+
+ {setup,
+ fun() -> ok end,
+ fun(_) -> ok = gen_udp:close(FakeNotifyUnixSock), ok = file:delete(FakeNotifyUnixSockName) end,
+ [
+ {
+ "Try sending message",
+ fun() ->
+ sd_notify:sd_pid_notify_with_fds(0, 0, TestMessage, [1, 2, 3]),
+ {ok, {_Address, _Port, Packet}} = gen_udp:recv(FakeNotifyUnixSock, length(TestMessage), 1000),
+ ?assertEqual(TestMessage, Packet)
+ end
+ }
+
+ ]
+
+ };
+sd_notify_test_local(_) ->
+ [].