libvirt-ruby 0.0.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - ree-1.8.7
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
data/README.rdoc CHANGED
@@ -8,21 +8,15 @@ gem install libvirt-ruby
8
8
 
9
9
  == Dependencies
10
10
 
11
- This gem has as a dependencie the libvirt package. Google it and u will find how to install it on your distro.
11
+ This gem has as a dependency the libvirt package. Google it and u will find how to install it on your distro.
12
12
 
13
13
  == Usage
14
14
 
15
- You should use one of the classes defined and call the method directly:
16
- Libvirt::Ruby::Connect.Close([:int])
15
+ You should call the c function directly on the module with the sanem name:
16
+ Libvirt::Ruby.virConnectClose([:int])
17
17
 
18
18
  The parameter of the function should be an array where the last instance is the return of the C function.
19
19
 
20
-
21
- The old method dispatcher still can be called, but is now deprecated. Call dispatcher passing as parameters:
22
- first -> the method just like the one from Libvirt in C as a string except the vir and the name of the Class just like 'Close' from 'virConnectClose'
23
- second -> the args of the function in C in the same order
24
- third -> a symbol of the retun of the function.
25
-
26
20
  == Experimental
27
21
 
28
22
  This Gem still experimental, so if you have some problem, feel free to create a new issue.
@@ -36,11 +30,10 @@ Give it a try in another distro and let me know if it works.
36
30
 
37
31
  Add Support for a ton of thigs. =D
38
32
  Improve a lot of things:
39
- * Remove all classes and make gem wotk without them. Using Just one class: Libvirt::Ruby
40
- * Create more Exceptions for another type of errors.
41
33
  * Create pages on Wiki teaching how to install libvirt on several distros.
42
34
  ...
43
35
 
44
36
  == Contribute
45
37
 
46
- Fork the project and send me a Pull Request. =D
38
+ Fork the project and send me a Pull Request. Your code must be well tested against at least the versions im testing: 1.8.7, 1.9.2 and 1.9.3
39
+ I already have created rake tasks to test on each ruby version. For more info just look inside Rakefile.
data/Rakefile CHANGED
@@ -4,4 +4,13 @@ require "rspec/core/rake_task"
4
4
  RSpec::Core::RakeTask.new
5
5
 
6
6
  desc "Default Task"
7
- task :default => [ :spec ]
7
+ task :default => [ :spec ]
8
+
9
+ rubies = %w(1.8.7@libvirt-ruby 1.9.2@libvirt-ruby 1.9.3@libvirt-ruby)
10
+ rubies.each do |ruby|
11
+ desc "Run the test suite against: #{ruby.split('@')[0]}"
12
+ task "spec-#{ruby.split('@')[0]}" do
13
+ puts "Running test suite against: #{ruby.split('@')[0]}"
14
+ exec("rvm #{ruby} do rspec spec")
15
+ end
16
+ end
data/lib/libvirt-ruby.rb CHANGED
@@ -3,12 +3,34 @@ require "ffi"
3
3
 
4
4
  module Libvirt
5
5
  module Ruby
6
- autoload :Connect, 'libvirt-ruby/connect'
7
- autoload :Domain, 'libvirt-ruby/domain'
8
6
  autoload :Exceptions, 'libvirt-ruby/exceptions'
9
- autoload :Network, 'libvirt-ruby/network'
10
- autoload :StoragePool, 'libvirt-ruby/storage_pool'
11
- autoload :StorageVol, 'libvirt-ruby/storage_vol'
12
- autoload :Util, 'libvirt-ruby/util'
7
+
8
+ extend FFI::Library
9
+
10
+ def self.method_missing(method, *args)
11
+ args.flatten!
12
+ return_type = args.delete(args.last)
13
+ raise Libvirt::Ruby::Exceptions::NoReturnParameter unless return_type
14
+ dispatcher(method, args, return_type)
15
+ end
16
+
17
+ private
18
+
19
+ def self.dispatcher(method, args = [], return_type = nil)
20
+ raise Libvirt::Ruby::Exceptions::WrongCall unless not_direct_call?
21
+ begin
22
+ ffi_lib "libvirt"
23
+ attach_function method.to_s, method.to_s, args, return_type
24
+ send method.to_s, args
25
+ rescue FFI::NotFoundError
26
+ raise Libvirt::Ruby::Exceptions::InvalidFunction.new(method.to_s)
27
+ rescue LoadError
28
+ raise Libvirt::Ruby::Exceptions::MissingLib
29
+ end
30
+ end
31
+
32
+ def self.not_direct_call?
33
+ caller[1][/`.*'/] and caller[1][/`.*'/][1..-2] == 'method_missing'
34
+ end
13
35
  end
14
36
  end
@@ -3,6 +3,8 @@ module Libvirt
3
3
  module Exceptions
4
4
  autoload :MissingLib, 'libvirt-ruby/exceptions/missing_lib'
5
5
  autoload :InvalidFunction, 'libvirt-ruby/exceptions/invalid_function'
6
+ autoload :NoReturnParameter, 'libvirt-ruby/exceptions/no_return_parameter'
7
+ autoload :WrongCall, 'libvirt-ruby/exceptions/wrong_call'
6
8
  end
7
9
  end
8
10
  end
@@ -0,0 +1,11 @@
1
+ module Libvirt
2
+ module Ruby
3
+ module Exceptions
4
+ class NoReturnParameter < StandardError
5
+ def initialize
6
+ super("No Return Parameter was Specified. It was by purpose?")
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Libvirt
2
+ module Ruby
3
+ module Exceptions
4
+ class WrongCall < StandardError
5
+ def initialize
6
+ super("This method cannot be called directly. It was by purpose?")
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Libvirt
2
2
  module Ruby
3
- VERSION = "0.0.6"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Libvirt::Ruby do
4
+ let(:libvirt) { Libvirt::Ruby }
5
+
6
+ context "when calling any libvirt function directly" do
7
+ context "without a return type specified" do
8
+ it "should raise an error" do
9
+ lambda { libvirt.virConnectClose }.should raise_error(Libvirt::Ruby::Exceptions::NoReturnParameter)
10
+ end
11
+ end
12
+
13
+ context "with libvirt installed" do
14
+ before :each do
15
+ libvirt.stub(:ffi_lib).with("libvirt")
16
+ end
17
+
18
+ context "and the function is a valid one" do
19
+ before :each do
20
+ libvirt.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
21
+ libvirt.stub(:send).with("virConnectClose", [])
22
+ end
23
+
24
+ after :each do
25
+ libvirt.virConnectClose([:int])
26
+ end
27
+
28
+ it "should attach it as a binding for C's function" do
29
+ libvirt.should_receive(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
30
+ end
31
+
32
+ it "should call the new attached method" do
33
+ libvirt.should_receive(:send).with("virConnectClose", [])
34
+ end
35
+ end
36
+
37
+ context "and the function is not a valid one" do
38
+ before :each do
39
+ libvirt.stub(:attach_function).with("virConnectAbc", "virConnectAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
40
+ end
41
+
42
+ it "should raise an exception" do
43
+ lambda { libvirt.virConnectAbc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
44
+ end
45
+ end
46
+ end
47
+
48
+ context "without libvirt installed" do
49
+ it "should raise an exception" do
50
+ lambda { libvirt.virConnectAbc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
51
+ end
52
+ end
53
+ end
54
+
55
+ context "when calling method #dispatcher directly" do
56
+ it "should raise an exception" do
57
+ lambda { libvirt.dispatcher('virConnectClose', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::WrongCall)
58
+ end
59
+ end
60
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libvirt-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-27 00:00:00.000000000 Z
12
+ date: 2012-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &4851100 !ruby/object:Gem::Requirement
16
+ requirement: &7272040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *4851100
24
+ version_requirements: *7272040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &4850320 !ruby/object:Gem::Requirement
27
+ requirement: &7271500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *4850320
35
+ version_requirements: *7271500
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &4849620 !ruby/object:Gem::Requirement
38
+ requirement: &7270500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *4849620
46
+ version_requirements: *7270500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fakefs
49
- requirement: &4849080 !ruby/object:Gem::Requirement
49
+ requirement: &7269940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *4849080
57
+ version_requirements: *7269940
58
58
  description: Access Libvirt's C Library through ruby classes and methods
59
59
  email: plribeiro3000@gmail.com
60
60
  executables: []
@@ -64,27 +64,20 @@ files:
64
64
  - .gitignore
65
65
  - .rspec
66
66
  - .rvmrc
67
+ - .travis.yml
67
68
  - Gemfile
68
69
  - LICENSE
69
70
  - README.rdoc
70
71
  - Rakefile
71
72
  - lib/libvirt-ruby.rb
72
- - lib/libvirt-ruby/connect.rb
73
- - lib/libvirt-ruby/domain.rb
74
73
  - lib/libvirt-ruby/exceptions.rb
75
74
  - lib/libvirt-ruby/exceptions/invalid_function.rb
76
75
  - lib/libvirt-ruby/exceptions/missing_lib.rb
77
- - lib/libvirt-ruby/network.rb
78
- - lib/libvirt-ruby/storage_pool.rb
79
- - lib/libvirt-ruby/storage_vol.rb
80
- - lib/libvirt-ruby/util.rb
76
+ - lib/libvirt-ruby/exceptions/no_return_parameter.rb
77
+ - lib/libvirt-ruby/exceptions/wrong_call.rb
81
78
  - lib/libvirt-ruby/version.rb
82
79
  - libvirt-ruby.gemspec
83
- - spec/libvirt-ruby/connect_spec.rb
84
- - spec/libvirt-ruby/domain_spec.rb
85
- - spec/libvirt-ruby/network_spec.rb
86
- - spec/libvirt-ruby/storage_pool_spec.rb
87
- - spec/libvirt-ruby/storage_vol_spec.rb
80
+ - spec/libvirt-ruby_spec.rb
88
81
  - spec/spec_helper.rb
89
82
  homepage: ''
90
83
  licenses: []
@@ -1,9 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class Connect < Libvirt::Ruby::Util
4
- def self.klass
5
- "virConnect"
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class Domain < Libvirt::Ruby::Util
4
- def self.klass
5
- "virDomain"
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class Network < Libvirt::Ruby::Util
4
- def self.klass
5
- "virNetwork"
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class StoragePool < Libvirt::Ruby::Util
4
- def self.klass
5
- "virStoragePool"
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class StorageVol < Libvirt::Ruby::Util
4
- def self.klass
5
- "virStorageVol"
6
- end
7
- end
8
- end
9
- end
@@ -1,34 +0,0 @@
1
- module Libvirt
2
- module Ruby
3
- class Util
4
- extend FFI::Library
5
-
6
- def self.method_missing(method, *args)
7
- args.flatten!
8
- return_type = args.delete(args.last)
9
- dispatcher(method, args, return_type)
10
- end
11
-
12
- def self.dispatcher(method, args = [], return_type = nil)
13
- unless not_direct_call?
14
- warn "[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead."
15
- end
16
- begin
17
- ffi_lib "libvirt"
18
- attach_function (self.klass + method.to_s), (self.klass + method.to_s), args, return_type
19
- send (self.klass + method.to_s), args
20
- rescue FFI::NotFoundError
21
- raise Libvirt::Ruby::Exceptions::InvalidFunction.new(self.klass + method.to_s)
22
- rescue LoadError
23
- raise Libvirt::Ruby::Exceptions::MissingLib
24
- end
25
- end
26
-
27
- private
28
-
29
- def self.not_direct_call?
30
- caller[1][/`.*'/] and caller[1][/`.*'/][1..-2] == 'method_missing'
31
- end
32
- end
33
- end
34
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Libvirt::Ruby::Connect do
4
- let(:connect) { Libvirt::Ruby::Connect }
5
-
6
- context "when calling method #dispatcher" do
7
- context "that is now deprecated" do
8
- before :each do
9
- connect.stub(:ffi_lib).with("libvirt")
10
- connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
11
- connect.stub(:send).with("virConnectClose", [])
12
- end
13
-
14
- it "should raise a deprecated method warning" do
15
- connect.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
16
- connect.dispatcher('Close', [], :int)
17
- end
18
- end
19
-
20
- context "with libvirt installed" do
21
- before :each do
22
- connect.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
23
- connect.stub(:ffi_lib).with("libvirt")
24
- end
25
-
26
- context "and a valid libvirt function" do
27
- before :each do
28
- connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
29
- connect.stub(:send).with("virConnectClose", [])
30
- end
31
-
32
- after :each do
33
- connect.dispatcher('Close', [], :int)
34
- end
35
-
36
- it "should attach it as a binding for C's function" do
37
- connect.should_receive(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
38
- end
39
-
40
- it "should call the new attached method" do
41
- connect.should_receive(:send).with("virConnectClose", [])
42
- end
43
- end
44
-
45
- context "and an invalid libvirt function" do
46
- before :each do
47
- connect.stub(:attach_function).with("virConnectAbc", "virConnectAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
48
- end
49
-
50
- it "should raise an exception" do
51
- lambda { connect.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
52
- end
53
- end
54
- end
55
-
56
- context "without libvirt installed" do
57
- before :each do
58
- connect.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
59
- end
60
-
61
- it "should raise an exception" do
62
- lambda { connect.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
63
- end
64
- end
65
- end
66
-
67
- context "when calling any libvirt function directly" do
68
- context "that is the new way" do
69
- before :each do
70
- connect.stub(:ffi_lib).with("libvirt")
71
- connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
72
- connect.stub(:send).with("virConnectClose", [])
73
- end
74
-
75
- it "should not raise a deprecated method warning" do
76
- connect.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
77
- connect.Close([:int])
78
- end
79
- end
80
-
81
- context "with libvirt installed" do
82
- before :each do
83
- connect.stub(:ffi_lib).with("libvirt")
84
- end
85
-
86
- context "and the function is a valid one" do
87
- before :each do
88
- connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
89
- connect.stub(:send).with("virConnectClose", [])
90
- end
91
-
92
- after :each do
93
- connect.Close([:int])
94
- end
95
-
96
- it "should attach it as a binding for C's function" do
97
- connect.should_receive(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
98
- end
99
-
100
- it "should call the new attached method" do
101
- connect.should_receive(:send).with("virConnectClose", [])
102
- end
103
- end
104
-
105
- context "and the function is not a valid one" do
106
- before :each do
107
- connect.stub(:attach_function).with("virConnectAbc", "virConnectAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
108
- end
109
-
110
- it "should raise an exception" do
111
- lambda { connect.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
112
- end
113
- end
114
- end
115
-
116
- context "without libvirt installed" do
117
- it "should raise an exception" do
118
- lambda { connect.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
119
- end
120
- end
121
- end
122
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Libvirt::Ruby::Domain do
4
- let(:domain) { Libvirt::Ruby::Domain }
5
-
6
- context "when calling method #dispatcher" do
7
- context "that is now deprecated" do
8
- before :each do
9
- domain.stub(:ffi_lib).with("libvirt")
10
- domain.stub(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int)
11
- domain.stub(:send).with("virDomainCreate", [])
12
- end
13
-
14
- it "should raise a deprecated method warning" do
15
- domain.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
16
- domain.dispatcher('Create', [], :int)
17
- end
18
- end
19
-
20
- context "with libvirt installed" do
21
- before :each do
22
- domain.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
23
- domain.stub(:ffi_lib).with("libvirt")
24
- end
25
-
26
- context "and a valid libvirt function" do
27
- before :each do
28
- domain.stub(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
29
- domain.stub(:send).with("virDomainCreate", [])
30
- end
31
-
32
- after :each do
33
- domain.dispatcher('Create', [], :int)
34
- end
35
-
36
- it "should attach it as a binding for C's function" do
37
- domain.should_receive(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
38
- end
39
-
40
- it "should call the new attached method" do
41
- domain.should_receive(:send).with("virDomainCreate", [])
42
- end
43
- end
44
-
45
- context "and an invalid libvirt function" do
46
- before :each do
47
- domain.stub(:attach_function).with("virDomainAbc", "virDomainAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
48
- end
49
-
50
- it "should raise an exception" do
51
- lambda { domain.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
52
- end
53
- end
54
- end
55
-
56
- context "without libvirt installed" do
57
- before :each do
58
- domain.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
59
- end
60
-
61
- it "should raise an exception" do
62
- lambda { domain.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
63
- end
64
- end
65
- end
66
-
67
- context "when calling any libvirt function directly" do
68
- context "that is the new way" do
69
- before :each do
70
- domain.stub(:ffi_lib).with("libvirt")
71
- domain.stub(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int)
72
- domain.stub(:send).with("virDomainCreate", [])
73
- end
74
-
75
- it "should not raise a deprecated method warning" do
76
- domain.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
77
- domain.Create([:int])
78
- end
79
- end
80
-
81
- context "with libvirt installed" do
82
- before :each do
83
- domain.stub(:ffi_lib).with("libvirt")
84
- end
85
-
86
- context "and the function is a valid one" do
87
- before :each do
88
- domain.stub(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
89
- domain.stub(:send).with("virDomainCreate", [])
90
- end
91
-
92
- after :each do
93
- domain.Create([:int])
94
- end
95
-
96
- it "should attach it as a binding for C's function" do
97
- domain.should_receive(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
98
- end
99
-
100
- it "should call the new attached method" do
101
- domain.should_receive(:send).with("virDomainCreate", [])
102
- end
103
- end
104
-
105
- context "and the function is not a valid one" do
106
- before :each do
107
- domain.stub(:attach_function).with("virDomainAbc", "virDomainAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
108
- end
109
-
110
- it "should raise an exception" do
111
- lambda { domain.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
112
- end
113
- end
114
- end
115
-
116
- context "without libvirt installed" do
117
- it "should raise an exception" do
118
- lambda { domain.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
119
- end
120
- end
121
- end
122
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Libvirt::Ruby::Network do
4
- let(:network) { Libvirt::Ruby::Network }
5
-
6
- context "when calling method #dispatcher" do
7
- context "that is now deprecated" do
8
- before :each do
9
- network.stub(:ffi_lib).with("libvirt")
10
- network.stub(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int)
11
- network.stub(:send).with("virNetworkRef", [])
12
- end
13
-
14
- it "should raise a deprecated method warning" do
15
- network.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
16
- network.dispatcher('Ref', [], :int)
17
- end
18
- end
19
-
20
- context "with libvirt installed" do
21
- before :each do
22
- network.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
23
- network.stub(:ffi_lib).with("libvirt")
24
- end
25
-
26
- context "and a valid libvirt function" do
27
- before :each do
28
- network.stub(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
29
- network.stub(:send).with("virNetworkRef", [])
30
- end
31
-
32
- after :each do
33
- network.dispatcher('Ref', [], :int)
34
- end
35
-
36
- it "should attach it as a binding for C's function" do
37
- network.should_receive(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
38
- end
39
-
40
- it "should call the new attached method" do
41
- network.should_receive(:send).with("virNetworkRef", [])
42
- end
43
- end
44
-
45
- context "and an invalid libvirt function" do
46
- before :each do
47
- network.stub(:attach_function).with("virNetworkAbc", "virNetworkAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
48
- end
49
-
50
- it "should raise an exception" do
51
- lambda { network.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
52
- end
53
- end
54
- end
55
-
56
- context "without libvirt installed" do
57
- before :each do
58
- network.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
59
- end
60
-
61
- it "should raise an exception" do
62
- lambda { network.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
63
- end
64
- end
65
- end
66
-
67
- context "when calling any libvirt function directly" do
68
- context "that is the new way" do
69
- before :each do
70
- network.stub(:ffi_lib).with("libvirt")
71
- network.stub(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int)
72
- network.stub(:send).with("virNetworkRef", [])
73
- end
74
-
75
- it "should not raise a deprecated method warning" do
76
- network.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
77
- network.Ref([:int])
78
- end
79
- end
80
-
81
- context "with libvirt installed" do
82
- before :each do
83
- network.stub(:ffi_lib).with("libvirt")
84
- end
85
-
86
- context "and the function is a valid one" do
87
- before :each do
88
- network.stub(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
89
- network.stub(:send).with("virNetworkRef", [])
90
- end
91
-
92
- after :each do
93
- network.Ref([:int])
94
- end
95
-
96
- it "should attach it as a binding for C's function" do
97
- network.should_receive(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
98
- end
99
-
100
- it "should call the new attached method" do
101
- network.should_receive(:send).with("virNetworkRef", [])
102
- end
103
- end
104
-
105
- context "and the function is not a valid one" do
106
- before :each do
107
- network.stub(:attach_function).with("virNetworkAbc", "virNetworkAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
108
- end
109
-
110
- it "should raise an exception" do
111
- lambda { network.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
112
- end
113
- end
114
- end
115
-
116
- context "without libvirt installed" do
117
- it "should raise an exception" do
118
- lambda { network.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
119
- end
120
- end
121
- end
122
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Libvirt::Ruby::StoragePool do
4
- let(:storage_pool) { Libvirt::Ruby::StoragePool }
5
-
6
- context "when calling method #dispatcher" do
7
- context "that is now deprecated" do
8
- before :each do
9
- storage_pool.stub(:ffi_lib).with("libvirt")
10
- storage_pool.stub(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int)
11
- storage_pool.stub(:send).with("virStoragePoolRefresh", [])
12
- end
13
-
14
- it "should raise a deprecated method warning" do
15
- storage_pool.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
16
- storage_pool.dispatcher('Refresh', [], :int)
17
- end
18
- end
19
-
20
- context "with libvirt installed" do
21
- before :each do
22
- storage_pool.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
23
- storage_pool.stub(:ffi_lib).with("libvirt")
24
- end
25
-
26
- context "and a valid libvirt function" do
27
- before :each do
28
- storage_pool.stub(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
29
- storage_pool.stub(:send).with("virStoragePoolRefresh", [])
30
- end
31
-
32
- after :each do
33
- storage_pool.dispatcher('Refresh', [], :int)
34
- end
35
-
36
- it "should attach it as a binding for C's function" do
37
- storage_pool.should_receive(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
38
- end
39
-
40
- it "should call the new attached method" do
41
- storage_pool.should_receive(:send).with("virStoragePoolRefresh", [])
42
- end
43
- end
44
-
45
- context "and an invalid libvirt function" do
46
- before :each do
47
- storage_pool.stub(:attach_function).with("virStoragePoolAbc", "virStoragePoolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
48
- end
49
-
50
- it "should raise an exception" do
51
- lambda { storage_pool.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
52
- end
53
- end
54
- end
55
-
56
- context "without libvirt installed" do
57
- before :each do
58
- storage_pool.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
59
- end
60
-
61
- it "should raise an exception" do
62
- lambda { storage_pool.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
63
- end
64
- end
65
- end
66
-
67
- context "when calling any libvirt function directly" do
68
- context "that is the new way" do
69
- before :each do
70
- storage_pool.stub(:ffi_lib).with("libvirt")
71
- storage_pool.stub(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int)
72
- storage_pool.stub(:send).with("virStoragePoolRefresh", [])
73
- end
74
-
75
- it "should not raise a deprecated method warning" do
76
- storage_pool.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
77
- storage_pool.Refresh([:int])
78
- end
79
- end
80
-
81
- context "with libvirt installed" do
82
- before :each do
83
- storage_pool.stub(:ffi_lib).with("libvirt")
84
- end
85
-
86
- context "and the function is a valid one" do
87
- before :each do
88
- storage_pool.stub(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
89
- storage_pool.stub(:send).with("virStoragePoolRefresh", [])
90
- end
91
-
92
- after :each do
93
- storage_pool.Refresh([:int])
94
- end
95
-
96
- it "should attach it as a binding for C's function" do
97
- storage_pool.should_receive(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
98
- end
99
-
100
- it "should call the new attached method" do
101
- storage_pool.should_receive(:send).with("virStoragePoolRefresh", [])
102
- end
103
- end
104
-
105
- context "and the function is not a valid one" do
106
- before :each do
107
- storage_pool.stub(:attach_function).with("virStoragePoolAbc", "virStoragePoolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
108
- end
109
-
110
- it "should raise an exception" do
111
- lambda { storage_pool.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
112
- end
113
- end
114
- end
115
-
116
- context "without libvirt installed" do
117
- it "should raise an exception" do
118
- lambda { storage_pool.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
119
- end
120
- end
121
- end
122
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Libvirt::Ruby::StorageVol do
4
- let(:storage_vol) { Libvirt::Ruby::StorageVol }
5
-
6
- context "when calling method #dispatcher" do
7
- context "that is now deprecated" do
8
- before :each do
9
- storage_vol.stub(:ffi_lib).with("libvirt")
10
- storage_vol.stub(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int)
11
- storage_vol.stub(:send).with("virStorageVolResize", [])
12
- end
13
-
14
- it "should raise a deprecated method warning" do
15
- storage_vol.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
16
- storage_vol.dispatcher('Resize', [], :int)
17
- end
18
- end
19
-
20
- context "with libvirt installed" do
21
- before :each do
22
- storage_vol.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
23
- storage_vol.stub(:ffi_lib).with("libvirt")
24
- end
25
-
26
- context "and a valid libvirt function" do
27
- before :each do
28
- storage_vol.stub(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
29
- storage_vol.stub(:send).with("virStorageVolResize", [])
30
- end
31
-
32
- after :each do
33
- storage_vol.dispatcher('Resize', [], :int)
34
- end
35
-
36
- it "should attach it as a binding for C's function" do
37
- storage_vol.should_receive(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
38
- end
39
-
40
- it "should call the new attached method" do
41
- storage_vol.should_receive(:send).with("virStorageVolResize", [])
42
- end
43
- end
44
-
45
- context "and an invalid libvirt function" do
46
- before :each do
47
- storage_vol.stub(:attach_function).with("virStorageVolAbc", "virStorageVolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
48
- end
49
-
50
- it "should raise an exception" do
51
- lambda { storage_vol.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
52
- end
53
- end
54
- end
55
-
56
- context "without libvirt installed" do
57
- before :each do
58
- storage_vol.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
59
- end
60
-
61
- it "should raise an exception" do
62
- lambda { storage_vol.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
63
- end
64
- end
65
- end
66
-
67
- context "when calling method #dispatcher" do
68
- context "that is the new way" do
69
- before :each do
70
- storage_vol.stub(:ffi_lib).with("libvirt")
71
- storage_vol.stub(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int)
72
- storage_vol.stub(:send).with("virStorageVolResize", [])
73
- end
74
-
75
- it "should not raise a deprecated method warning" do
76
- storage_vol.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
77
- storage_vol.Resize([:int])
78
- end
79
- end
80
-
81
- context "with libvirt installed" do
82
- before :each do
83
- storage_vol.stub(:ffi_lib).with("libvirt")
84
- end
85
-
86
- context "and the function is a valid one" do
87
- before :each do
88
- storage_vol.stub(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
89
- storage_vol.stub(:send).with("virStorageVolResize", [])
90
- end
91
-
92
- after :each do
93
- storage_vol.Resize([:int])
94
- end
95
-
96
- it "should attach it as a binding for C's function" do
97
- storage_vol.should_receive(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
98
- end
99
-
100
- it "should call the new attached method" do
101
- storage_vol.should_receive(:send).with("virStorageVolResize", [])
102
- end
103
- end
104
-
105
- context "and the function is not a valid one" do
106
- before :each do
107
- storage_vol.stub(:attach_function).with("virStorageVolAbc", "virStorageVolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
108
- end
109
-
110
- it "should raise an exception" do
111
- lambda { storage_vol.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
112
- end
113
- end
114
- end
115
-
116
- context "without libvirt installed" do
117
- it "should raise an exception" do
118
- lambda { storage_vol.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
119
- end
120
- end
121
- end
122
- end