Haskell bindings: Implement bindtests.

This commit is contained in:
Richard W.M. Jones
2009-06-28 13:54:22 +02:00
parent ef2b0cf761
commit d164ae9632
6 changed files with 104 additions and 4 deletions

1
.gitignore vendored
View File

@@ -54,6 +54,7 @@ examples/to-xml
fish/guestfish
guestfish.1
guestfs.3
haskell/Bindtests
haskell/Guestfs005Load
haskell/Guestfs010Launch
haskell/Guestfs050LVCreate

40
haskell/Bindtests.hs Normal file
View File

@@ -0,0 +1,40 @@
{- libguestfs generated file
WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
Copyright (C) 2009 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.
-}
module Bindtests where
import qualified Guestfs
main = do
g <- Guestfs.create
Guestfs.test0 g "abc" (Just "def") [] False 0 "123" "456"
Guestfs.test0 g "abc" Nothing [] False 0 "123" "456"
Guestfs.test0 g "" (Just "def") [] False 0 "123" "456"
Guestfs.test0 g "" (Just "") [] False 0 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False 0 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1","2"] False 0 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] True 0 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False (-1) "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False (-2) "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False 1 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False 2 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False 4095 "123" "456"
Guestfs.test0 g "abc" (Just "def") ["1"] False 0 "" ""
putStrLn "EOF"

View File

@@ -15,7 +15,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
EXTRA_DIST = *.hs
EXTRA_DIST = *.hs run-bindtests
CLEANFILES = *~
@@ -26,10 +26,15 @@ TESTS_ENVIRONMENT = \
LIBGUESTFS_PATH=$(top_builddir)/appliance \
$(VG)
TESTS = Guestfs005Load Guestfs010Launch Guestfs050LVCreate
TESTS = run-bindtests Guestfs005Load Guestfs010Launch Guestfs050LVCreate
check_DATA = Bindtests
GHCFLAGS = -I$(abs_top_builddir)/src -L$(abs_top_builddir)/src/.libs
Bindtests: Bindtests.hs Guestfs.hs
$(GHC) $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
Guestfs005Load: Guestfs005Load.hs Guestfs.hs
$(GHC) $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs

View File

23
haskell/run-bindtests Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh -
# libguestfs Haskell bindings
# Copyright (C) 2009 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., 675 Mass Ave, Cambridge, MA 02139, USA.
set -e
./Bindtests > bindtests.tmp
diff -u ../bindtests bindtests.tmp

View File

@@ -7806,7 +7806,38 @@ public class Bindtests {
"
and generate_haskell_bindtests () =
() (* XXX Haskell bindings need to be fleshed out. *)
generate_header HaskellStyle GPLv2;
pr "\
module Bindtests where
import qualified Guestfs
main = do
g <- Guestfs.create
";
let mkargs args =
String.concat " " (
List.map (
function
| CallString s -> "\"" ^ s ^ "\""
| CallOptString None -> "Nothing"
| CallOptString (Some s) -> sprintf "(Just \"%s\")" s
| CallStringList xs ->
"[" ^ String.concat "," (List.map (sprintf "\"%s\"") xs) ^ "]"
| CallInt i when i < 0 -> "(" ^ string_of_int i ^ ")"
| CallInt i -> string_of_int i
| CallBool true -> "True"
| CallBool false -> "False"
) args
)
in
generate_lang_bindtests (
fun f args -> pr " Guestfs.%s g %s\n" f (mkargs args)
);
pr " putStrLn \"EOF\"\n"
(* Language-independent bindings tests - we do it this way to
* ensure there is parity in testing bindings across all languages.
@@ -8036,7 +8067,7 @@ Run it from the top source directory using the command
generate_haskell_hs ();
close ();
let close = output_to "haskell/bindtests.hs" in
let close = output_to "haskell/Bindtests.hs" in
generate_haskell_bindtests ();
close ();