mcollective-test 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: '09fe1fb38a726df66f6f2eaa11d686d051be473dfbddb505192f315fb14155cd'
4
+ data.tar.gz: a2716539431f26ab49178a4ec0db25d0593be3a1d88da74242981655b9dce9c8
5
+ SHA512:
6
+ metadata.gz: c28142f4dd7d8efa665fdb5e1e98eca8c72a30bf239083a864c8f96056b3e1f3d54a46f5936733e5928a75d5865383cfc582c9e488a59effe45fa7f3b4f8b69e
7
+ data.tar.gz: 52a7ddd99061d7598c40a5191d55882a0c20cd9e0acc1a65bb2785e9985d80c3b3969ba76ff864552086eb11f14746855ef1f4214ba657eac5cd970d645d31be
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ pkg
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in mcollective-test.gemspec
6
+ gemspec
7
+
8
+ gem "rake"
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ A set of helpers to assist in writing unit and integration tests
2
+ for MCollective Agents and Applications.
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
@@ -1,39 +1,31 @@
1
- module MCollective
2
- module Test
3
- module Matchers
4
- def have_a_description(description=nil); ApplicationDescription.new(description); end
1
+ RSpec::Matchers.define(:have_a_description) do |expected|
2
+ match do |actual|
3
+ actual = actual.application_description
5
4
 
6
- class ApplicationDescription
7
- def initialize(match=nil)
8
- @match = match
9
- end
5
+ if expected
6
+ actual == expected
7
+ else
8
+ !actual.nil?
9
+ end
10
+ end
10
11
 
11
- def matches?(actual)
12
- @actual = actual.application_description
12
+ failure_message do |actual|
13
+ actual = actual.application_description
13
14
 
14
- if @match
15
- return @actual == @match
16
- else
17
- return !@actual.nil?
18
- end
19
- end
15
+ if expected
16
+ "application should have description #{expected.inspect} but got #{actual.inspect}"
17
+ else
18
+ "application should have a description, got #{actual.inspect}"
19
+ end
20
+ end
20
21
 
21
- def failure_message
22
- if @match
23
- "application should have a description '#{@match}' but got '#{@actual}'"
24
- else
25
- "application should have a description, got #{@match}"
26
- end
27
- end
22
+ failure_message_when_negated do |actual|
23
+ actual = actual.application_description
28
24
 
29
- def negative_failure_message
30
- if @match
31
- "application should not have a description matching '#{@match}' but got '#{@actual}'"
32
- else
33
- "application should not have a description"
34
- end
35
- end
36
- end
25
+ if expected
26
+ "application should not have a description matching #{expected.inspect} but got #{actual.inspect}"
27
+ else
28
+ "application should not have a description, got #{actual.inspect}"
37
29
  end
38
30
  end
39
31
  end
@@ -1,115 +1,11 @@
1
- module MCollective
2
- module Test
3
- module Matchers
4
- def have_data_items(*items); RPCResultItems.new(items);end
5
-
6
- class RPCResultItems
7
- def initialize(expected)
8
- @expected = expected
9
- @actual = []
10
- end
11
-
12
- def matches?(actual)
13
- # Data::Result has a bug in it's method missing in < 2.2.2 and < 2.3.0
14
- # which raised the wrong exception class should someone call for example
15
- # #to_ary like [x].flatten does causing the tests to fail, this works
16
- # around that bug while we fix it in core.
17
- unless actual.is_a?(Array)
18
- actual = [actual]
19
- end
20
-
21
- if actual == []
22
- return false
23
- end
24
-
25
- actual.each do |result|
26
- if result.is_a?(MCollective::RPC::Result)
27
- result = result.results
28
- elsif result.is_a?(MCollective::Data::Result)
29
- result = {:data => result.instance_variable_get("@data")}
30
- end
31
-
32
- @nodeid = result[:data][:test_sender]
33
- @actual << result
34
- @expected.each do |e|
35
- if e.is_a? Hash
36
- e.keys.each do |k|
37
- unless result[:data].keys.include?(k)
38
- return false
39
- end
40
- end
41
- e.keys.each do |k|
42
- if e[k].is_a?(String) || e[k].is_a?(Regexp)
43
- unless result[:data][k].match e[k]
44
- return false
45
- end
46
- else
47
- unless result[:data][k] == e[k]
48
- return false
49
- end
50
- end
51
- end
52
- else
53
- unless result[:data].keys.include? e
54
- return false
55
- end
56
- end
57
- end
58
- end
59
- true
60
- end
61
-
62
- def failure_message
63
- return_string = "Failure from #{@nodeid}\n"
64
- return_string << "Expected : \n"
65
- @expected.each do |e|
66
- if e.is_a? Hash
67
- e.keys.each do |k|
68
- return_string << " '#{k}' with value '#{e[k]}'\n"
69
- end
70
- else
71
- return_string << " '#{e}' to be present\n"
72
- end
73
- end
74
-
75
- return_string << "Got : \n"
76
- @actual.each do |a|
77
- if a[:sender] == @nodeid
78
- a[:data].each do |data|
79
- return_string << " '#{data[0]}' with value '#{data[1]}'\n"
80
- end
81
- end
82
- end
83
-
84
- return_string
85
- end
86
-
87
- def negative_failure_message
88
- return_string = "Failure from #{@nodeid}\n"
89
- return_string << "Did not expect : \n"
90
- @expected.each do |e|
91
- if e.is_a? Hash
92
- e.keys.each do |k|
93
- return_string << " '#{k}' with value '#{e[k]}'\n"
94
- end
95
- else
96
- return_string << " '#{e}' to not be present\n"
97
- end
98
- end
99
-
100
- return_string << "But got : \n"
101
- @actual.each do |a|
102
- if a[:sender] == @nodeid
103
- a[:data].each do |data|
104
- return_string << " '#{data[0]}' with value '#{data[1]}'\n"
105
- end
106
- end
107
- end
108
-
109
- return_string
110
- end
111
-
112
- end
1
+ RSpec::Matchers.define(:have_data_items) do |expected|
2
+ match do |actual|
3
+ if actual.is_a?(MCollective::RPC::Result)
4
+ actual.results.should include(expected)
5
+ elsif actual.is_a?(MCollective::Data::Result)
6
+ actual.instance_variable_get(:@data).should include(expected)
7
+ else
8
+ actual.should include(data: include(expected))
113
9
  end
114
10
  end
115
11
  end
@@ -1,48 +1,29 @@
1
- module MCollective
2
- module Test
3
- module Matchers
4
- def rpc_success; RPCStatus.new(0); end
5
- def rpc_aborted; RPCStatus.new(1); end
6
- def rpc_unknown_action; RPCStatus.new(2); end
7
- def rpc_missing_data; RPCStatus.new(3); end
8
- def rpc_invalid_data; RPCStatus.new(4); end
9
- def rpc_unknown; RPCStatus.new(5); end
10
-
11
- alias be_successful rpc_success
12
- alias be_aborted_error rpc_aborted
13
- alias be_unknown_action_error rpc_unknown_action
14
- alias be_missing_data_error rpc_missing_data
15
- alias be_invalid_data_error rpc_invalid_data
16
- alias be_unknown_error rpc_unknown
17
-
18
- class RPCStatus
19
- def initialize(code)
20
- @code = code
21
- end
22
-
23
- def matches?(actual)
24
- if actual == []
25
- return false
26
- end
27
- [actual].flatten.each do |result|
28
- result = result.results if result.is_a?(MCollective::RPC::Result)
29
-
30
- @actual = result[:statuscode]
31
-
32
- unless @actual == @code
33
- return false
34
- end
35
- end
36
- end
1
+ {
2
+ 0 => :rpc_success,
3
+ 1 => :rpc_aborted,
4
+ 2 => :rpc_unknown_action,
5
+ 3 => :rpc_missing_data,
6
+ 4 => :rpc_invalid_data,
7
+ 5 => :rpc_unknown
8
+ }.each do |code, name|
9
+ RSpec::Matchers.define(name) do
10
+ match do |actual|
11
+ actual[:statuscode] == code
12
+ end
37
13
 
38
- def failure_message
39
- "expected :statuscode == #{@code} but got '#{@actual}'"
40
- end
14
+ failure_message do |actual|
15
+ "expected :statuscode == #{code} but got #{actual[:statuscode]}"
16
+ end
41
17
 
42
- def negative_failure_message
43
- "expected :statucode != #{@code} but got '#{@actual}'"
44
- end
45
- end
18
+ failure_message_when_negated do |actual|
19
+ "expected :statuscode != #{code} but got #{actual[:statuscode]}"
46
20
  end
47
21
  end
48
22
  end
23
+
24
+ RSpec::Matchers.alias_matcher :be_successful, :rpc_success
25
+ RSpec::Matchers.alias_matcher :be_aborted_error, :rpc_aborted
26
+ RSpec::Matchers.alias_matcher :be_unknown_error, :rpc_unknown_action
27
+ RSpec::Matchers.alias_matcher :be_missing_data_error, :rpc_missing_data
28
+ RSpec::Matchers.alias_matcher :be_invalid_data_error, :rpc_invalid_data
29
+ RSpec::Matchers.alias_matcher :be_unknown_error, :rpc_unknown
@@ -2,7 +2,6 @@ module MCollective
2
2
  module Test
3
3
  module Matchers
4
4
  require 'mcollective/test/matchers/rpc_result_items.rb'
5
- require 'mcollective/test/matchers/rpc_metadata.rb'
6
5
  require 'mcollective/test/matchers/rpc_status.rb'
7
6
  require 'mcollective/test/matchers/application_description.rb'
8
7
  end
@@ -1,8 +1,10 @@
1
1
  module MCollective
2
2
  module Test
3
3
  module Util
4
+ include Mocha::API
5
+
4
6
  def create_facts_mock(factsource)
5
- facts = Mocha::Mock.new('facts')
7
+ facts = mock('facts')
6
8
  facts.stubs(:get_facts).returns(factsource)
7
9
 
8
10
  factsource.each_pair do |k, v|
@@ -15,7 +17,7 @@ module MCollective
15
17
  def create_config_mock(config)
16
18
  pluginconf = {}
17
19
 
18
- cfg = Mocha::Mock.new('config')
20
+ cfg = mock('config')
19
21
  cfg.stubs(:configured).returns(true)
20
22
  cfg.stubs(:rpcauthorization).returns(false)
21
23
  cfg.stubs(:main_collective).returns("mcollective")
@@ -55,7 +57,7 @@ module MCollective
55
57
  end
56
58
 
57
59
  def create_logger_mock
58
- logger = Mocha::Mock.new(:logger)
60
+ logger = mock(:logger)
59
61
 
60
62
  [:log, :start, :debug, :info, :warn].each do |meth|
61
63
  logger.stubs(meth)
@@ -69,7 +71,7 @@ module MCollective
69
71
  end
70
72
 
71
73
  def create_connector_mock
72
- connector = Mocha::Mock.new(:connector)
74
+ connector = mock(:connector)
73
75
 
74
76
  [:connect, :receive, :publish, :subscribe, :unsubscribe, :disconnect].each do |meth|
75
77
  connector.stubs(meth)
@@ -0,0 +1,13 @@
1
+ spec = Gem::Specification.new do |s|
2
+ s.name = "mcollective-test"
3
+ s.version = "0.5.0"
4
+ s.author = "R.I.Pienaar"
5
+ s.email = "rip@devco.net"
6
+ s.homepage = "https://github.com/ripienaar/mcollective-test/"
7
+ s.summary = "Test helper for MCollective"
8
+ s.description = "Helpers, matchers and other utilities for writing agent, application and integration tests"
9
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
10
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
11
+ end
12
+ s.require_path = "lib"
13
+ end
metadata CHANGED
@@ -1,77 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mcollective-test
3
- version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 4
9
- - 3
10
- version: 0.4.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - R.I.Pienaar
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-03-14 00:00:00 +00:00
19
- default_executable:
11
+ date: 2024-08-24 00:00:00.000000000 Z
20
12
  dependencies: []
21
-
22
- description: Helpers, matchers and other utilities for writing agent, application and integration tests
13
+ description: Helpers, matchers and other utilities for writing agent, application
14
+ and integration tests
23
15
  email: rip@devco.net
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
19
+ files:
20
+ - ".gitignore"
21
+ - Gemfile
22
+ - README.md
23
+ - Rakefile
31
24
  - lib/mcollective/test.rb
25
+ - lib/mcollective/test/application_test.rb
26
+ - lib/mcollective/test/data_test.rb
32
27
  - lib/mcollective/test/local_agent_test.rb
33
28
  - lib/mcollective/test/matchers.rb
34
- - lib/mcollective/test/remote_agent_test.rb
35
- - lib/mcollective/test/data_test.rb
36
- - lib/mcollective/test/matchers/rpc_metadata.rb
29
+ - lib/mcollective/test/matchers/application_description.rb
37
30
  - lib/mcollective/test/matchers/rpc_result_items.rb
38
31
  - lib/mcollective/test/matchers/rpc_status.rb
39
- - lib/mcollective/test/matchers/application_description.rb
32
+ - lib/mcollective/test/remote_agent_test.rb
40
33
  - lib/mcollective/test/util.rb
41
- - lib/mcollective/test/application_test.rb
42
- has_rdoc: true
34
+ - mcollective-test.gemspec
43
35
  homepage: https://github.com/ripienaar/mcollective-test/
44
36
  licenses: []
45
-
46
- post_install_message:
37
+ metadata: {}
38
+ post_install_message:
47
39
  rdoc_options: []
48
-
49
- require_paths:
40
+ require_paths:
50
41
  - lib
51
- required_ruby_version: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
54
44
  - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
60
- required_rubygems_version: !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
63
49
  - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
69
52
  requirements: []
70
-
71
- rubyforge_project:
72
- rubygems_version: 1.3.7
73
- signing_key:
74
- specification_version: 3
53
+ rubygems_version: 3.2.33
54
+ signing_key:
55
+ specification_version: 4
75
56
  summary: Test helper for MCollective
76
57
  test_files: []
77
-
@@ -1,40 +0,0 @@
1
- module MCollective
2
- module Test
3
- module Matchers
4
- def have_valid_metadata; RPCMetadata.new; end
5
-
6
- class RPCMetadata
7
- def matches?(actual)
8
- actual = actual.meta
9
-
10
- @msg = "Unknown error"
11
-
12
- [:name, :description, :author, :license, :version, :url, :timeout].each do |item|
13
- unless actual.include?(item)
14
- @msg = "needs a '#{item}' item"
15
- return false
16
- end
17
- end
18
-
19
- [:name, :description, :author, :license, :version, :url].each do |item|
20
- unless actual[item].is_a?(String)
21
- @msg = "#{item} should be a string"
22
- return false
23
- end
24
- end
25
-
26
- unless actual[:timeout].is_a?(Numeric)
27
- @msg = "timeout should be numeric"
28
- return false
29
- end
30
-
31
- return true
32
- end
33
-
34
- def failure_message
35
- "Invalid meta data: #{@msg}"
36
- end
37
- end
38
- end
39
- end
40
- end