mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
erlang: Add tests.
Add bindtests and general tests for Erlang.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -81,6 +81,7 @@ Makefile.in
|
||||
/edit/stamp-virt-*.pod
|
||||
/edit/virt-edit
|
||||
/edit/virt-edit.1
|
||||
/erlang/bindtests.erl
|
||||
/erlang/erl-guestfs
|
||||
/erlang/erl-guestfs.c
|
||||
/erlang/examples/guestfs-erlang.3
|
||||
|
||||
@@ -18,11 +18,14 @@
|
||||
include $(top_srcdir)/subdir-rules.mk
|
||||
|
||||
generator_built = \
|
||||
guestfs.erl \
|
||||
erl-guestfs.c
|
||||
bindtests.erl \
|
||||
erl-guestfs.c \
|
||||
guestfs.erl
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(generator_built) \
|
||||
run-bindtests \
|
||||
tests/*.erl \
|
||||
README
|
||||
|
||||
if HAVE_ERLANG
|
||||
@@ -51,4 +54,12 @@ erl_guestfs_LDADD = \
|
||||
$(top_builddir)/src/libguestfs.la \
|
||||
../gnulib/lib/libgnu.la
|
||||
|
||||
TESTS_ENVIRONMENT = PATH=$(builddir):$$PATH $(top_builddir)/run --test
|
||||
|
||||
TESTS = run-bindtests
|
||||
|
||||
if ENABLE_APPLIANCE
|
||||
TESTS += tests/010-load.erl
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
23
erlang/run-bindtests
Executable file
23
erlang/run-bindtests
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh -
|
||||
# libguestfs Erlang bindings
|
||||
# Copyright (C) 2009-2012 Red Hat Inc.
|
||||
#
|
||||
# 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 2 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.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
set -e
|
||||
|
||||
# The output is sent to bindtests.tmp.
|
||||
./bindtests.erl
|
||||
diff -u $srcdir/../bindtests bindtests.tmp
|
||||
23
erlang/tests/010-load.erl
Executable file
23
erlang/tests/010-load.erl
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env escript
|
||||
%! -smp enable -sname create_disk debug verbose
|
||||
|
||||
% libguestfs Erlang tests -*- erlang -*-
|
||||
% Copyright (C) 2009-2012 Red Hat Inc.
|
||||
%
|
||||
% 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 2 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.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License along
|
||||
% with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
main(_) ->
|
||||
{ok, G} = guestfs:create(),
|
||||
ok = guestfs:close(G).
|
||||
@@ -676,6 +676,66 @@ var o;
|
||||
|
||||
pr "\nprint(\"EOF\");\n"
|
||||
|
||||
and generate_erlang_bindtests () =
|
||||
pr "#!/usr/bin/env escript\n";
|
||||
pr "%%! -smp enable -sname create_disk debug verbose\n";
|
||||
pr "\n";
|
||||
generate_header ErlangStyle GPLv2plus;
|
||||
|
||||
pr "main(_) ->\n";
|
||||
pr " {ok, G} = guestfs:create(),\n";
|
||||
pr "\n";
|
||||
pr " %% We have to set the output file here because otherwise the\n";
|
||||
pr " %% bindtests code would print its output on stdout, and that\n";
|
||||
pr " %% channel is also being used by the erl-guestfs communications.\n";
|
||||
pr " Filename = \"bindtests.tmp\",\n";
|
||||
pr " ok = guestfs:internal_test_set_output(G, Filename),\n";
|
||||
pr "\n";
|
||||
|
||||
generate_lang_bindtests (
|
||||
fun f args optargs ->
|
||||
pr " ok = guestfs:%s(G" f;
|
||||
List.iter (function
|
||||
| CallString s -> pr ", \"%s\"" s
|
||||
| CallOptString None -> pr ", undefined"
|
||||
| CallOptString (Some s) -> pr ", \"%s\"" s
|
||||
| CallStringList xs ->
|
||||
pr ", [%s]" (String.concat "," (List.map (sprintf "\"%s\"") xs))
|
||||
| CallInt i -> pr ", %d" i
|
||||
| CallInt64 i -> pr ", %Ld" i
|
||||
| CallBool b -> pr ", %b" b
|
||||
| CallBuffer s -> pr ", \"%s\"" (c_quote s)
|
||||
) args;
|
||||
(match optargs with
|
||||
| None -> ()
|
||||
| Some optargs ->
|
||||
pr ", [";
|
||||
let needs_comma = ref false in
|
||||
List.iter (
|
||||
fun optarg ->
|
||||
if !needs_comma then pr ", ";
|
||||
needs_comma := true;
|
||||
match optarg with
|
||||
| CallOBool (n, v) -> pr "{%s, %b}" n v
|
||||
| CallOInt (n, v) -> pr "{%s, %d}" n v
|
||||
| CallOInt64 (n, v) -> pr "{%s, %Ld}" n v
|
||||
| CallOString (n, v) -> pr "{%s, \"%s\"}" n v
|
||||
| CallOStringList (n, xs) ->
|
||||
pr "{%s, [%s]}" n
|
||||
(String.concat "," (List.map (sprintf "\"%s\"") xs))
|
||||
) optargs;
|
||||
pr "]";
|
||||
);
|
||||
pr "),\n"
|
||||
);
|
||||
|
||||
pr "\n";
|
||||
pr " ok = guestfs:internal_test_close_output(G),\n";
|
||||
pr " ok = guestfs:close(G),\n";
|
||||
pr " {ok, File} = file:open(Filename, [append]),\n";
|
||||
pr " ok = file:write(File, \"EOF\\n\"),\n";
|
||||
pr " ok = file:close(File).\n"
|
||||
|
||||
(* Language-independent bindings tests - we do it this way to
|
||||
* ensure there is parity in testing bindings across all languages.
|
||||
*)
|
||||
|
||||
@@ -138,6 +138,7 @@ Run it from the top source directory using the command
|
||||
output_to "php/extension/guestfs_php.c" generate_php_c;
|
||||
output_to "erlang/guestfs.erl" generate_erlang_erl;
|
||||
output_to "erlang/erl-guestfs.c" generate_erlang_c;
|
||||
output_to ~perm:0o555 "erlang/bindtests.erl" generate_erlang_bindtests;
|
||||
output_to "gobject/bindtests.js" generate_gobject_js_bindtests;
|
||||
generate_gobject();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user