From 85b1815e7be07d27b21692b6677b66817b3ea88b Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 12 Feb 2016 14:10:07 +0000 Subject: [PATCH] tests: Make '080' be an official test of the guestfs_version API. Useful because it tests returning a single structure. --- docs/guestfs-hacking.pod | 1 + ocaml/Makefile.am | 2 + ocaml/t/guestfs_080_version.ml | 27 +++++++++++ perl/t/080-version.t | 36 +++++++++++++++ ..._version.phpt => guestfs_080_version.phpt} | 0 python/t/080-version.py | 46 +++++++++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 ocaml/t/guestfs_080_version.ml create mode 100644 perl/t/080-version.t rename php/extension/tests/{guestfs_090_version.phpt => guestfs_080_version.phpt} (100%) create mode 100644 python/t/080-version.py diff --git a/docs/guestfs-hacking.pod b/docs/guestfs-hacking.pod index ae667c948..ecd10bf72 100644 --- a/docs/guestfs-hacking.pod +++ b/docs/guestfs-hacking.pod @@ -201,6 +201,7 @@ This is the numbering scheme used by the tests: 060 explicit close 065 implicit close (in GC'd languages) 070 optargs + 080 version - 100 launch, create partitions and LVs and filesystems diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am index b79bcadf2..bc1d1305c 100644 --- a/ocaml/Makefile.am +++ b/ocaml/Makefile.am @@ -116,6 +116,7 @@ test_progs_bc = \ t/guestfs_060_explicit_close.bc \ t/guestfs_065_implicit_close.bc \ t/guestfs_070_optargs.bc \ + t/guestfs_080_version.bc \ t/guestfs_410_close_event.bc \ t/guestfs_420_log_messages.bc @@ -128,6 +129,7 @@ test_progs_opt = \ t/guestfs_060_explicit_close.opt \ t/guestfs_065_implicit_close.opt \ t/guestfs_070_optargs.opt \ + t/guestfs_080_version.opt \ t/guestfs_410_close_event.opt \ t/guestfs_420_log_messages.opt diff --git a/ocaml/t/guestfs_080_version.ml b/ocaml/t/guestfs_080_version.ml new file mode 100644 index 000000000..ff1048547 --- /dev/null +++ b/ocaml/t/guestfs_080_version.ml @@ -0,0 +1,27 @@ +(* libguestfs OCaml tests + * Copyright (C) 2009-2016 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. + *) + +let () = + let g = new Guestfs.guestfs () in + let version = g#version () in + assert (version.Guestfs.major = 1_L) + (* In other bindings, we may do additional tests on dynamic types + * here, but those are not necessary in OCaml. + *) + +let () = Gc.compact () diff --git a/perl/t/080-version.t b/perl/t/080-version.t new file mode 100644 index 000000000..6a80fe9d8 --- /dev/null +++ b/perl/t/080-version.t @@ -0,0 +1,36 @@ +# libguestfs Perl bindings -*- perl -*- +# Copyright (C) 2016 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. + +use strict; +use warnings; +use Test::More tests => 5; + +use Sys::Guestfs; + +my $g = Sys::Guestfs->new (); +ok ($g); + +my %version = $g->version; +ok (1); + +is ($version{major}, 1); +like ($version{minor}, qr/^\d+$/); +like ($version{release}, qr/^\d+$/); + +# XXX We could try to check that $version{extra} is a string, but perl +# doesn't have a distinction between string and int, and in any case +# it's possible (although unusual) for $version{extra} to be an int. diff --git a/php/extension/tests/guestfs_090_version.phpt b/php/extension/tests/guestfs_080_version.phpt similarity index 100% rename from php/extension/tests/guestfs_090_version.phpt rename to php/extension/tests/guestfs_080_version.phpt diff --git a/python/t/080-version.py b/python/t/080-version.py new file mode 100644 index 000000000..e8e1e2541 --- /dev/null +++ b/python/t/080-version.py @@ -0,0 +1,46 @@ +# libguestfs Python bindings +# Copyright (C) 2016 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. + +import unittest +import sys +import os +import guestfs + +if sys.version_info >= (3, 0): + cl = int +else: + cl = long + +class Test080Version (unittest.TestCase): + def setUp (self): + self.g = guestfs.GuestFS (python_return_dict=True) + self.version = self.g.version () + + def test_major (self): + self.assertEqual (self.version['major'], 1) + + def test_minor (self): + self.assertTrue (isinstance (self.version['minor'], cl)) + + def test_release (self): + self.assertTrue (isinstance (self.version['release'], cl)) + + def test_extra (self): + self.assertTrue (isinstance (self.version['extra'], str)) + +if __name__ == '__main__': + unittest.main ()