minitest-chef-handler 0.5.2 → 0.5.3

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.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.5.3 / 07-10-2012
2
+
3
+ * 1 bub fix:
4
+
5
+ * Fix cookbook's path lookup when Chef's cookbook_path is an Array instead of a String.
6
+
1
7
  === 0.5.2 / 06-25-2012
2
8
 
3
9
  * 1 bug fix:
@@ -7,9 +7,13 @@ require 'minitest-chef-handler/runner'
7
7
  require 'minitest-chef-handler/assertions'
8
8
  require 'minitest-chef-handler/infections'
9
9
 
10
+ require 'minitest-chef-handler/lookup'
11
+
10
12
  module MiniTest
11
13
  module Chef
12
14
  class Handler < ::Chef::Handler
15
+ include Lookup
16
+
13
17
  def initialize(options = {})
14
18
  @options = options
15
19
  end
@@ -18,7 +22,7 @@ module MiniTest
18
22
  # do not run tests if chef failed
19
23
  return if failed?
20
24
 
21
- require_test_suites
25
+ require_test_suites(@options.delete(:path))
22
26
  runner = Runner.new(run_status)
23
27
 
24
28
  if custom_runner?
@@ -34,58 +38,6 @@ module MiniTest
34
38
  end
35
39
  end
36
40
 
37
- private
38
-
39
- #
40
- # Load the test suites.
41
- # If the option "path" is specified we use it to load the tests from it.
42
- # The option can be a string or an array of paths.
43
- # Otherwise we load the tests according to the recipes seen.
44
- #
45
- def require_test_suites
46
- paths = @options.delete(:path) || seen_recipes_paths
47
- Array(paths).each do |path|
48
- Dir.glob(path).each {|test_suite| require test_suite}
49
- end
50
- end
51
-
52
- #
53
- # Collect test paths based in the recipes ran.
54
- # It loads the tests based in the name of the cookbook and the name of the recipe.
55
- # The tests must be under the cookbooks directory.
56
- #
57
- # Examples:
58
- #
59
- # If the seen recipes includes the recipe "foo" we try to load tests from:
60
- #
61
- # cookbooks/foo/tests/default_test.rb
62
- # cookbooks/foo/tests/default/*_test.rb
63
- #
64
- # cookbooks/foo/specs/default_spec.rb
65
- # cookbooks/foo/specs/default/*_spec.rb
66
- #
67
- # If the seen recipes includes the recipe "foo::install" we try to load tests from:
68
- #
69
- # cookbooks/foo/tests/install_test.rb
70
- # cookbooks/foo/tests/install/*_test.rb
71
- #
72
- # cookbooks/foo/specs/install_spec.rb
73
- # cookbooks/foo/specs/install/*_spec.rb
74
- #
75
- def seen_recipes_paths
76
- run_status.node.run_state[:seen_recipes].keys.map do |recipe_name|
77
- cookbook_name, recipe_short_name = ::Chef::Recipe.parse_recipe_name(recipe_name)
78
- base_path = ::Chef::Config[:cookbook_path]
79
-
80
- file_test_pattern = "%s/%s/tests/%s_test.rb" % [base_path, cookbook_name, recipe_short_name]
81
- dir_test_pattern = "%s/%s/tests/%s/*_test.rb" % [base_path, cookbook_name, recipe_short_name]
82
- file_spec_pattern = "%s/%s/specs/%s_spec.rb" % [base_path, cookbook_name, recipe_short_name]
83
- dir_spec_pattern = "%s/%s/specs/%s/*_spec.rb" % [base_path, cookbook_name, recipe_short_name]
84
-
85
- [file_test_pattern, dir_test_pattern, file_spec_pattern, dir_spec_pattern]
86
- end.flatten
87
- end
88
-
89
41
  def miniunit_options
90
42
  options = []
91
43
  options << ['-n', @options[:filter]] if @options[:filter]
@@ -0,0 +1,73 @@
1
+ module MiniTest
2
+ module Chef
3
+ module Lookup
4
+
5
+ # Load the test suites.
6
+ #
7
+ # If the option "path" is specified we use it to load the tests from it.
8
+ # The option can be a string or an array of paths.
9
+ # Otherwise we load the tests according to the recipes seen.
10
+ #
11
+ def require_test_suites(options_path)
12
+ paths = options_path || seen_recipes_paths
13
+ Array(paths).each do |path|
14
+ Dir.glob(path).each {|test_suite| require test_suite}
15
+ end
16
+ end
17
+
18
+ # Collect test paths based in the recipes ran.
19
+ #
20
+ # It loads the tests based in the name of the cookbook and the name of the recipe.
21
+ # The tests must be under the cookbooks directory.
22
+ #
23
+ # Examples:
24
+ #
25
+ # If the seen recipes includes the recipe "foo" we try to load tests from:
26
+ #
27
+ # cookbooks/foo/tests/default_test.rb
28
+ # cookbooks/foo/tests/default/*_test.rb
29
+ #
30
+ # cookbooks/foo/specs/default_spec.rb
31
+ # cookbooks/foo/specs/default/*_spec.rb
32
+ #
33
+ # If the seen recipes includes the recipe "foo::install" we try to load tests from:
34
+ #
35
+ # cookbooks/foo/tests/install_test.rb
36
+ # cookbooks/foo/tests/install/*_test.rb
37
+ #
38
+ # cookbooks/foo/specs/install_spec.rb
39
+ # cookbooks/foo/specs/install/*_spec.rb
40
+ #
41
+ def seen_recipes_paths
42
+ run_status.node.run_state[:seen_recipes].keys.map do |recipe_name|
43
+ cookbook_name, recipe_short_name = ::Chef::Recipe.parse_recipe_name(recipe_name)
44
+ base_path = ::Chef::Config[:cookbook_path]
45
+
46
+ cookbook_paths = lookup_cookbook(base_path, cookbook_name)
47
+
48
+ cookbook_paths.map do |path|
49
+ file_test_pattern = "%s/tests/%s_test.rb" % [path, recipe_short_name]
50
+ dir_test_pattern = "%s/tests/%s/*_test.rb" % [path, recipe_short_name]
51
+ file_spec_pattern = "%s/specs/%s_spec.rb" % [path, recipe_short_name]
52
+ dir_spec_pattern = "%s/specs/%s/*_spec.rb" % [path, recipe_short_name]
53
+
54
+ [file_test_pattern, dir_test_pattern, file_spec_pattern, dir_spec_pattern]
55
+ end.flatten
56
+ end.flatten
57
+ end
58
+
59
+ # Internal - look for the right path to the cookbook given one or
60
+ # several base paths.
61
+ #
62
+ # Path: String or Array representing the recipes base paths.
63
+ # Name: Name of the cookbook
64
+ #
65
+ # Returns paths founded for the speficied cookbook.
66
+ def lookup_cookbook(path, name)
67
+ path_expr = Array(path).join(',')
68
+
69
+ Dir.glob("{%s}/$%s" % [path_expr, name])
70
+ end
71
+ end
72
+ end
73
+ end
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
12
  gem.name = "minitest-chef-handler"
13
13
  gem.require_paths = ["lib"]
14
- gem.version = '0.5.2'
14
+ gem.version = '0.5.3'
15
15
 
16
16
  gem.add_dependency('minitest')
17
17
  gem.add_dependency('chef')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-chef-handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
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-06-25 00:00:00.000000000 Z
12
+ date: 2012-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &70277779223160 !ruby/object:Gem::Requirement
16
+ requirement: &70309173979160 !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: *70277779223160
24
+ version_requirements: *70309173979160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: chef
27
- requirement: &70277779222700 !ruby/object:Gem::Requirement
27
+ requirement: &70309173978700 !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: :runtime
34
34
  prerelease: false
35
- version_requirements: *70277779222700
35
+ version_requirements: *70309173978700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70277779222260 !ruby/object:Gem::Requirement
38
+ requirement: &70309173978280 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70277779222260
46
+ version_requirements: *70309173978280
47
47
  description: Run Minitest suites as Chef report handlers
48
48
  email:
49
49
  - david.calavera@gmail.com
@@ -83,6 +83,7 @@ files:
83
83
  - lib/minitest-chef-handler/assertions.rb
84
84
  - lib/minitest-chef-handler/context.rb
85
85
  - lib/minitest-chef-handler/infections.rb
86
+ - lib/minitest-chef-handler/lookup.rb
86
87
  - lib/minitest-chef-handler/resources.rb
87
88
  - lib/minitest-chef-handler/runner.rb
88
89
  - lib/minitest-chef-handler/spec.rb
@@ -106,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
107
  version: '0'
107
108
  segments:
108
109
  - 0
109
- hash: -4169045649435813440
110
+ hash: 3961635280245186970
110
111
  required_rubygems_version: !ruby/object:Gem::Requirement
111
112
  none: false
112
113
  requirements:
@@ -115,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
116
  version: '0'
116
117
  segments:
117
118
  - 0
118
- hash: -4169045649435813440
119
+ hash: 3961635280245186970
119
120
  requirements: []
120
121
  rubyforge_project:
121
122
  rubygems_version: 1.8.11