ruby: Fix .new method (RHBZ#1046509).

The .new method was unintentionally broken in
commit 9466060201.

This fixes the .new method and allows it to be called with multiple
parameters, so you can use:

  Guestfs::Guestfs.new
  Guestfs::Guestfs.new()
  Guestfs::Guestfs.new(:close_on_exit => false)
  etc.

For backwards compatibility, Guestfs::create may still be used.

This commit also adds regression tests:

 - Use .new method in regular tests.  (Because this was not done
   before, we didn't catch the breakage.)

 - Test that ::create still works.

 - Test that args can be passed to .new method.
This commit is contained in:
Richard W.M. Jones
2013-12-27 09:45:49 +00:00
parent 480bd3a6d8
commit ee4ce2a029
14 changed files with 254 additions and 28 deletions

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_create
g = Guestfs::create()
g = Guestfs::Guestfs.new()
assert_not_nil (g)
end
end

View File

@@ -0,0 +1,29 @@
# libguestfs Ruby bindings -*- ruby -*-
# Copyright (C) 2013 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.
require 'test/unit'
$:.unshift(File::join(File::dirname(__FILE__), "..", "lib"))
$:.unshift(File::join(File::dirname(__FILE__), "..", "ext", "guestfs"))
require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_create_flags
g = Guestfs::Guestfs.new(:environment => false, :close_on_exit => true)
assert_not_nil (g)
g.parse_environment()
end
end

View File

@@ -0,0 +1,32 @@
# libguestfs Ruby bindings -*- ruby -*-
# Copyright (C) 2013 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.
require 'test/unit'
$:.unshift(File::join(File::dirname(__FILE__), "..", "lib"))
$:.unshift(File::join(File::dirname(__FILE__), "..", "ext", "guestfs"))
require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_create_multiple
g1 = Guestfs::Guestfs.new()
g2 = Guestfs::Guestfs.new()
g3 = Guestfs::Guestfs.new()
assert_not_nil (g1)
assert_not_nil (g2)
assert_not_nil (g3)
end
end

View File

@@ -0,0 +1,36 @@
# libguestfs Ruby bindings -*- ruby -*-
# Copyright (C) 2013 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.
require 'test/unit'
$:.unshift(File::join(File::dirname(__FILE__), "..", "lib"))
$:.unshift(File::join(File::dirname(__FILE__), "..", "ext", "guestfs"))
require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_handle_properties
g = Guestfs::Guestfs.new()
assert_not_nil (g)
v = g.get_verbose()
g.set_verbose(v)
v = g.get_trace()
g.set_trace(v)
v = g.get_memsize()
g.set_memsize(v)
v = g.get_path()
g.set_path(v)
end
end

View File

@@ -0,0 +1,29 @@
# libguestfs Ruby bindings -*- ruby -*-
# Copyright (C) 2013 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.
require 'test/unit'
$:.unshift(File::join(File::dirname(__FILE__), "..", "lib"))
$:.unshift(File::join(File::dirname(__FILE__), "..", "ext", "guestfs"))
require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_explicit_close
g = Guestfs::Guestfs.new()
assert_not_nil (g)
g.close()
end
end

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_optargs
g = Guestfs::create()
g = Guestfs::Guestfs.new()
g.add_drive("/dev/null", {})
g.add_drive("/dev/null", :readonly => 1)

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_launch
g = Guestfs::create()
g = Guestfs::Guestfs.new()
g.add_drive_scratch(500*1024*1024)
g.launch()

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_events
g = Guestfs::create()
g = Guestfs::Guestfs.new()
close_invoked = 0
close = Proc.new {| event, event_handle, buf, array |

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_events
g = Guestfs::create()
g = Guestfs::Guestfs.new()
log_invoked = 0
log = Proc.new {| event, event_handle, buf, array |

View File

@@ -22,7 +22,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_rhbz507346
g = Guestfs::create()
g = Guestfs::Guestfs.new()
g.add_drive_scratch(10*1024*1024)
g.launch()

View File

@@ -26,7 +26,7 @@ require 'guestfs'
class TestLoad < Test::Unit::TestCase
def test_rhbz664558c6
g = Guestfs::create()
g = Guestfs::Guestfs.new()
close_invoked = 0
close = Proc.new {| event, event_handle, buf, array |

View File

@@ -0,0 +1,42 @@
# libguestfs Ruby bindings -*- ruby -*-
# Copyright (C) 2013 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.
# Test that we don't break the old ::create module function while
# fixing https://bugzilla.redhat.com/show_bug.cgi?id=1046509
require 'test/unit'
$:.unshift(File::join(File::dirname(__FILE__), "..", "lib"))
$:.unshift(File::join(File::dirname(__FILE__), "..", "ext", "guestfs"))
require 'guestfs'
class TestLoad < Test::Unit::TestCase
def _handleok(g)
g.add_drive("/dev/null")
g.close()
end
def test_rhbz1046509
g = Guestfs::create()
_handleok(g)
g = Guestfs::create(:close_on_exit => true)
_handleok(g)
g = Guestfs::create(:close_on_exit => true, :environment => true)
_handleok(g)
end
end