[Libguestfs] [PATCH 04/10] gobject: Add basic bindtests

Richard W.M. Jones rjones at redhat.com
Fri Jan 20 12:40:54 UTC 2012


On Fri, Jan 20, 2012 at 11:07:47AM +0000, Matthew Booth wrote:
> ---
>  .gitignore                       |    1 +
>  generator/generator_bindtests.ml |   34 ++++++++++++++++++++++++++++++++++
>  generator/generator_main.ml      |    1 +
>  gobject/Makefile.am              |    9 +++++++--
>  gobject/run-bindtests            |   22 ++++++++++++++++++++++
>  5 files changed, 65 insertions(+), 2 deletions(-)
>  create mode 100755 gobject/run-bindtests
> 
> diff --git a/.gitignore b/.gitignore
> index b970108..b75cafb 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -120,6 +120,7 @@ generator/stamp-generator
>  .git-module-status
>  /gnulib
>  /GNUmakefile
> +gobject/bindtests.js
>  gobject/Guestfs-1.0.gir
>  gobject/Guestfs-1.0.typelib
>  gobject/guestfs-gobject.c
> diff --git a/generator/generator_bindtests.ml b/generator/generator_bindtests.ml
> index f2dc0de..1328b96 100644
> --- a/generator/generator_bindtests.ml
> +++ b/generator/generator_bindtests.ml
> @@ -421,6 +421,40 @@ main = do
>  
>    pr "  putStrLn \"EOF\"\n"
>  
> +and generate_gobject_js_bindtests () =
> +  generate_header CPlusPlusStyle GPLv2plus;
> +
> +  pr "\
> +const Guestfs = imports.gi.Guestfs;
> +
> +var g = new Guestfs.Session();
> +
> +";
> +
> +    let mkargs args =
> +      String.concat ", " (
> +        (List.map (
> +          function
> +          | CallString s -> "\"" ^ s ^ "\""
> +          | CallOptString None -> "null"
> +          | CallOptString (Some s) -> "\"" ^ s ^ "\""
> +          | CallStringList xs ->
> +              "[" ^ String.concat "," (List.map (sprintf "\"%s\"") xs) ^ "]"
> +          | CallInt i -> string_of_int i
> +          | CallInt64 i -> Int64.to_string i
> +          | CallBool true -> "true"
> +          | CallBool false -> "false"
> +          | CallBuffer s -> "\"" ^ c_quote s ^ "\""
> +        ) args)
> +        @ ["null"]
> +      )
> +    in
> +    generate_lang_bindtests (
> +      fun f args -> pr "g.%s(%s);\n" f (mkargs args)
> +    );
> +
> +    pr "\nprint(\"EOF\");\n"
> +
>  (* Language-independent bindings tests - we do it this way to
>   * ensure there is parity in testing bindings across all languages.
>   *)
> diff --git a/generator/generator_main.ml b/generator/generator_main.ml
> index c7ee041..5be8c2e 100644
> --- a/generator/generator_main.ml
> +++ b/generator/generator_main.ml
> @@ -137,6 +137,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 "gobject/bindtests.js" generate_gobject_js_bindtests;
>    output_to "gobject/guestfs-gobject.h" generate_gobject_header;
>    output_to "gobject/guestfs-gobject.c" generate_gobject_c;
>  
> diff --git a/gobject/Makefile.am b/gobject/Makefile.am
> index 6543ca8..12505b4 100644
> --- a/gobject/Makefile.am
> +++ b/gobject/Makefile.am
> @@ -1,5 +1,7 @@
> -BUILT_SOURCES = guestfs-gobject.h guestfs-gobject.c
> -EXTRA_DIST = $(BUILT_SOURCES)
> +BUILT_SOURCES = guestfs-gobject.h guestfs-gobject.c bindtests.js
> +EXTRA_DIST = \
> +  $(BUILT_SOURCES) \
> +  run-bindtests
>  
>  libname = libguestfs-gobject-1.0.la
>  
> @@ -37,5 +39,8 @@ gir_DATA = $(INTROSPECTION_GIRS)
>  typelibdir = $(libdir)/girepository-1.0
>  typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
>  
> +TESTS = run-bindtests
> +$(TESTS): $(typelib_DATA)
> +
>  CLEANFILES = $(gir_DATA) $(typelib_DATA)
>  endif
> diff --git a/gobject/run-bindtests b/gobject/run-bindtests
> new file mode 100755
> index 0000000..f344002
> --- /dev/null
> +++ b/gobject/run-bindtests
> @@ -0,0 +1,22 @@
> +#!/bin/sh -
> +# libguestfs GObject bindings
> +# Copyright (C) 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
> +
> +../run gjs bindtests.js > bindtests.tmp
> +diff -u ${srcdir}/../bindtests bindtests.tmp
> -- 
> 1.7.7.5

As mentioned above, we need to test that 'gjs' is installed.

However, ACK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list