New tool: virt-sysprep: system preparation for guests.
[libguestfs.git] / perl / t / 800-explicit-close.t
1 # libguestfs Perl bindings -*- perl -*-
2 # Copyright (C) 2010 Red Hat Inc.
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 # Test implicit vs explicit closes of the handle (RHBZ#602592).
19
20 use strict;
21 use warnings;
22 use Test::More tests => 10;
23
24 use Sys::Guestfs;
25
26 my $g;
27
28 $g = Sys::Guestfs->new ();
29 ok($g);
30 $g->close ();                   # explicit close
31 ok($g);
32 undef $g;                       # implicit close - should be no error/warning
33 ok(1);
34
35 # Expect an error if we call a method on a closed handle.
36 $g = Sys::Guestfs->new ();
37 ok($g);
38 $g->close ();
39 ok($g);
40 eval { $g->set_memsize (512); };
41 ok($g);
42 ok($@ && $@ =~ /closed handle/);
43 undef $g;
44 ok(1);
45
46 # Try calling a method without a blessed reference.  This should
47 # give a different error.
48 eval { Sys::Guestfs::set_memsize (undef, 512); };
49 ok ($@ && $@ =~ /not.*blessed/);
50 eval { Sys::Guestfs::set_memsize (42, 512); };
51 ok ($@ && $@ =~ /not.*blessed/);