berkshelf 2.0.0.beta → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/CHANGELOG.md +19 -1
  2. data/CONTRIBUTING.md +1 -3
  3. data/Gemfile +0 -20
  4. data/Guardfile +3 -3
  5. data/LICENSE +6 -5
  6. data/README.md +1 -0
  7. data/Thorfile +48 -67
  8. data/berkshelf.gemspec +48 -37
  9. data/features/apply_command.feature +17 -11
  10. data/features/config.feature +11 -11
  11. data/features/configure_command.feature +8 -8
  12. data/features/contingent_command.feature +37 -8
  13. data/features/cookbook_command.feature +17 -14
  14. data/features/groups_install.feature +24 -20
  15. data/features/install_command.feature +24 -33
  16. data/features/licenses.feature +112 -0
  17. data/features/list_command.feature +17 -5
  18. data/features/lockfile.feature +307 -188
  19. data/features/outdated_command.feature +1 -4
  20. data/features/package_command.feature +41 -19
  21. data/features/shelf/list.feature +39 -0
  22. data/features/shelf/show.feature +152 -0
  23. data/features/shelf/uninstall.feature +103 -0
  24. data/features/show_command.feature +49 -17
  25. data/features/step_definitions/filesystem_steps.rb +12 -3
  26. data/features/step_definitions/utility_steps.rb +0 -1
  27. data/features/support/env.rb +11 -4
  28. data/features/update_command.feature +22 -10
  29. data/features/upload_command.feature +174 -127
  30. data/features/vendor_install.feature +6 -6
  31. data/generator_files/Berksfile.erb +1 -1
  32. data/generator_files/metadata.rb.erb +7 -7
  33. data/lib/berkshelf.rb +39 -27
  34. data/lib/berkshelf/base_generator.rb +2 -3
  35. data/lib/berkshelf/berksfile.rb +69 -17
  36. data/lib/berkshelf/cached_cookbook.rb +17 -1
  37. data/lib/berkshelf/chef.rb +2 -4
  38. data/lib/berkshelf/chef/config.rb +51 -75
  39. data/lib/berkshelf/chef/cookbook.rb +1 -2
  40. data/lib/berkshelf/chef/cookbook/chefignore.rb +1 -1
  41. data/lib/berkshelf/cli.rb +144 -194
  42. data/lib/berkshelf/command.rb +11 -12
  43. data/lib/berkshelf/commands/shelf.rb +130 -0
  44. data/lib/berkshelf/commands/test_command.rb +11 -0
  45. data/lib/berkshelf/community_rest.rb +1 -2
  46. data/lib/berkshelf/config.rb +14 -10
  47. data/lib/berkshelf/cookbook_generator.rb +30 -24
  48. data/lib/berkshelf/cookbook_source.rb +1 -1
  49. data/lib/berkshelf/cookbook_store.rb +0 -1
  50. data/lib/berkshelf/core_ext.rb +1 -1
  51. data/lib/berkshelf/core_ext/file.rb +1 -1
  52. data/lib/berkshelf/downloader.rb +3 -1
  53. data/lib/berkshelf/errors.rb +128 -53
  54. data/lib/berkshelf/formatters.rb +2 -6
  55. data/lib/berkshelf/formatters/human_readable.rb +8 -2
  56. data/lib/berkshelf/formatters/json.rb +7 -1
  57. data/lib/berkshelf/formatters/null.rb +0 -1
  58. data/lib/berkshelf/git.rb +16 -16
  59. data/lib/berkshelf/init_generator.rb +28 -26
  60. data/lib/berkshelf/location.rb +12 -11
  61. data/lib/berkshelf/locations/chef_api_location.rb +2 -2
  62. data/lib/berkshelf/locations/git_location.rb +0 -1
  63. data/lib/berkshelf/locations/github_location.rb +0 -1
  64. data/lib/berkshelf/locations/path_location.rb +1 -2
  65. data/lib/berkshelf/locations/site_location.rb +3 -2
  66. data/lib/berkshelf/lockfile.rb +29 -10
  67. data/lib/berkshelf/mixin/config.rb +155 -0
  68. data/lib/berkshelf/mixin/logging.rb +0 -1
  69. data/lib/berkshelf/mixin/shellout.rb +71 -0
  70. data/lib/berkshelf/resolver.rb +7 -4
  71. data/lib/berkshelf/test.rb +1 -3
  72. data/lib/berkshelf/ui.rb +8 -4
  73. data/lib/berkshelf/version.rb +1 -1
  74. data/lib/thor/monkies/shell.rb +0 -1
  75. data/spec/config/berkshelf.pem +27 -0
  76. data/spec/config/knife.rb +12 -0
  77. data/spec/config/validator.pem +27 -0
  78. data/spec/spec_helper.rb +4 -8
  79. data/spec/support/chef_api.rb +14 -9
  80. data/spec/support/chef_server.rb +3 -4
  81. data/spec/unit/berkshelf/berksfile_spec.rb +1 -1
  82. data/spec/unit/berkshelf/cookbook_generator_spec.rb +12 -6
  83. data/spec/unit/berkshelf/cookbook_source_spec.rb +13 -1
  84. data/spec/unit/berkshelf/init_generator_spec.rb +5 -0
  85. data/spec/unit/chef/config_spec.rb +9 -10
  86. metadata +216 -93
  87. data/features/info_command.feature +0 -39
  88. data/features/open_command.feature +0 -36
  89. data/lib/berkshelf/cli_commands/test_command.rb +0 -11
  90. data/lib/berkshelf/mixin.rb +0 -10
  91. data/lib/berkshelf/mixin/path_helpers.rb +0 -30
  92. data/spec/support/knife.rb +0 -18
@@ -0,0 +1,155 @@
1
+ module Berkshelf
2
+ module Mixin
3
+ module Config
4
+ def self.included(base)
5
+ base.send(:extend, ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ # Load a Chef configuration from the given path.
10
+ #
11
+ # @raise [Berkshelf::ConfigNotFound]
12
+ # if the specified path does not exist on the system
13
+ def from_file(filepath)
14
+ self.new(filepath)
15
+ rescue Errno::ENOENT => e
16
+ raise Berkshelf::ConfigNotFound.new(self.class.name, filepath)
17
+ end
18
+
19
+ # Load the contents of the most probable Chef config. See {location}
20
+ # for more information on how this logic is decided.
21
+ def load
22
+ self.new(location)
23
+ end
24
+
25
+ # Class method for defining a default option.
26
+ #
27
+ # @param [#to_sym] option
28
+ # the symbol to store as the key
29
+ # @param [Object] value
30
+ # the return value
31
+ def default_option(option, value)
32
+ default_options[option.to_sym] = value
33
+ end
34
+
35
+ # A list of all the default options set by this class.
36
+ #
37
+ # @return [Hash]
38
+ def default_options
39
+ @default_options ||= {}
40
+ end
41
+
42
+ # The default location of the configuration file.
43
+ #
44
+ # @param [#to_s] path
45
+ # the path to the default location of the configuration file
46
+ def default_location(path)
47
+ @default_location = File.expand_path(path)
48
+ end
49
+
50
+ # @return [String, nil]
51
+ attr_reader :default_location
52
+
53
+ # Converts a path to a path usable for your current platform
54
+ #
55
+ # @param [String] path
56
+ #
57
+ # @return [String]
58
+ def platform_specific_path(path)
59
+ if RUBY_PLATFORM =~ /mswin|mingw|windows/
60
+ system_drive = ENV['SYSTEMDRIVE'] ? ENV['SYSTEMDRIVE'] : ""
61
+ path = win_slashify File.join(system_drive, path.split('/')[2..-1])
62
+ end
63
+
64
+ path
65
+ end
66
+
67
+ private
68
+ # @abstract
69
+ # include and override {location} in your class to define the
70
+ # default location logic
71
+ def location
72
+ default_location || raise(AbstractFunction, "You must implement #{self.class}#location to define default location logic!")
73
+ end
74
+
75
+ # Convert a unixy filepath to a windowsy filepath. Swaps forward slashes for
76
+ # double backslashes
77
+ #
78
+ # @param [String] path
79
+ # filepath to convert
80
+ #
81
+ # @return [String]
82
+ # converted filepath
83
+ def win_slashify(path)
84
+ path.gsub(File::SEPARATOR, (File::ALT_SEPARATOR || '\\'))
85
+ end
86
+ end
87
+
88
+ # The path to the file.
89
+ #
90
+ # @return [String, nil]
91
+ attr_reader :path
92
+
93
+ # Create a new configuration file from the given path.
94
+ #
95
+ # @param [#to_s, nil] filepath
96
+ # the filepath to read
97
+ def initialize(filepath = nil)
98
+ @path = filepath ? File.expand_path(filepath.to_s) : nil
99
+ load
100
+ end
101
+
102
+ # Read and evaluate the contents of the filepath, if one was given at the
103
+ # start.
104
+ #
105
+ # @return [Berkshelf::Mixin::Config]
106
+ def load
107
+ configuration # Need to call this to make sure it's populated
108
+ self.instance_eval(IO.read(path), path, 1) if path && File.exists?(path)
109
+ self
110
+ end
111
+
112
+ # Force a reload the contents of this file from disk.
113
+ #
114
+ # @return [Berkshelf::Mixin::Config]
115
+ def reload!
116
+ @configuration = nil
117
+ load
118
+ self
119
+ end
120
+
121
+ # Return the configuration value for the given key.
122
+ #
123
+ # @param [#to_sym] key
124
+ # they key to find a configuration value for
125
+ def [](key)
126
+ configuration[key.to_sym]
127
+ end
128
+
129
+ def method_missing(m, *args, &block)
130
+ if args.length > 0
131
+ configuration[m.to_sym] = (args.length == 1) ? args[0] : args
132
+ else
133
+ configuration[m.to_sym]
134
+ end
135
+ end
136
+
137
+ # Save the contents of the file to the originally-supplied path.
138
+ def save
139
+ File.open(path, 'w+') { |f| f.write(to_rb + "\n") }
140
+ end
141
+
142
+ # Convert the file back to Ruby.
143
+ #
144
+ # @return [String]
145
+ def to_rb
146
+ configuration.map { |k,v| "#{k}(#{v.inspect})" }.join("\n")
147
+ end
148
+
149
+ private
150
+ def configuration
151
+ @configuration ||= self.class.default_options.dup
152
+ end
153
+ end
154
+ end
155
+ end
@@ -1,6 +1,5 @@
1
1
  module Berkshelf
2
2
  module Mixin
3
- # @author Jamie Winsor <reset@riotgames.com>
4
3
  module Logging
5
4
  def log
6
5
  Berkshelf::Logger
@@ -0,0 +1,71 @@
1
+ require 'hashie'
2
+
3
+ module Berkshelf
4
+ module Mixin
5
+ module Shellout
6
+ # Perform a cross-platform shell command, returning the process result.
7
+ # This uses Process.spawn under the hood for Ruby 1.9, so see
8
+ # {Process.spawn} for more information.
9
+ #
10
+ # On JRuby, a system command is used and $stdout and $stderr are captured.
11
+ #
12
+ # @param [String] command
13
+ # @param [Hash] options
14
+ # a list of options to send to {Process.spawn}
15
+ # @return [Hashie::Mash]
16
+ # information about the command including:
17
+ # - stderr
18
+ # - stdout
19
+ # - exitstatus
20
+ # - pid
21
+ # - success?
22
+ # - failure?
23
+ def shellout(command)
24
+ if defined?(RUBY_PLATFORM) && RUBY_PLATFORM == 'java' # jruby
25
+ out, err, e = capture do
26
+ system(command)
27
+ end
28
+ else
29
+ begin
30
+ out_file, err_file = Tempfile.new('berkshelf.stdout'), Tempfile.new('berkshelf.stderr')
31
+ pid = Process.spawn({}, command, out: out_file.to_i, err: err_file.to_i)
32
+ Process.waitpid(pid)
33
+
34
+ out, err = File.read(out_file), File.read(err_file)
35
+ e = $?
36
+ rescue Errno::ENOENT
37
+ out, err = "", "command not found: #{command}"
38
+ e = $?
39
+ end
40
+ end
41
+
42
+ Hashie::Mash.new({
43
+ stdout: out.strip,
44
+ stderr: err.strip,
45
+ exitstatus: e.exitstatus,
46
+ pid: e.pid,
47
+ success?: e.success?,
48
+ failure?: !e.success?
49
+ })
50
+ end
51
+
52
+ private
53
+ # Execute the given block, capturing $stdout, $stderr, and the returned process.
54
+ #
55
+ # @return [Array<StringIO, StringIO, Process>]
56
+ # a tuple of $stdout, $stderr, and the Process
57
+ def capture(&block)
58
+ out, err = StringIO.new, StringIO.new
59
+ $stdout, $stderr = out, err
60
+
61
+ yield
62
+
63
+ out.rewind
64
+ err.rewind
65
+ return out.read, err.read, $?
66
+ ensure
67
+ $stdout, $stderr = STDOUT, STDERR
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,6 +1,9 @@
1
1
  module Berkshelf
2
- # @author Jamie Winsor <reset@riotgames.com>
3
2
  class Resolver
3
+ require_relative 'cookbook_source'
4
+ require_relative 'locations/git_location'
5
+ require_relative 'locations/path_location'
6
+
4
7
  extend Forwardable
5
8
 
6
9
  # @return [Berkshelf::Berksfile]
@@ -132,7 +135,7 @@ module Berkshelf
132
135
  # @return [Boolean]
133
136
  def install_source(source)
134
137
  cached_cookbook, location = downloader.download(source)
135
- Berkshelf.formatter.install source.name, cached_cookbook.version, location
138
+ Berkshelf.formatter.install(source.name, cached_cookbook.version, location)
136
139
  end
137
140
 
138
141
  # Use the given source to create a constraint solution if the source has been downloaded or can
@@ -164,8 +167,8 @@ module Berkshelf
164
167
  get_source(source).cached_cookbook = cached
165
168
  end
166
169
 
167
- path = source.location.is_a?(PathLocation) ? "#{source.location}" : nil
168
- Berkshelf.formatter.use cached.cookbook_name, cached.version, path
170
+ path = source.location.is_a?(PathLocation) ? source.location.to_s : nil
171
+ Berkshelf.formatter.use(cached.cookbook_name, cached.version, path)
169
172
 
170
173
  true
171
174
  end
@@ -3,8 +3,6 @@ module Berkshelf
3
3
  # stubs across a run (See RiotGames/berkshelf#208). As a work-around, we pass
4
4
  # "special" mocks and stubs into the TEST environment variable. This class
5
5
  # parses and then requires the appropriate mocks during the run.
6
- #
7
- # @author Seth Vargo <sethvargo@gmail.com>
8
6
  class Mocks
9
7
  require 'rspec/mocks/standalone'
10
8
 
@@ -34,4 +32,4 @@ end
34
32
 
35
33
  unless (keys = Berkshelf::Mocks.env_keys & ENV.keys).empty?
36
34
  Berkshelf::Mocks.new(keys)
37
- end
35
+ end
@@ -10,12 +10,16 @@ module Berkshelf
10
10
  @mute = false
11
11
  end
12
12
 
13
- def say(message = "", color = nil, force_new_line = nil)
13
+ def say(message = '', color = nil, force_new_line = (message.to_s !~ /( |\t)\Z/))
14
14
  return if quiet?
15
15
 
16
- super(message, color)
16
+ super(message, color, force_new_line)
17
+ end
18
+
19
+ # @see {say}
20
+ def info(message = '', color = nil, force_new_line = (message.to_s !~ /( |\t)\Z/))
21
+ say(message, color, force_new_line)
17
22
  end
18
- alias_method :info, :say
19
23
 
20
24
  def say_status(status, message, log_status = true)
21
25
  return if quiet?
@@ -25,7 +29,7 @@ module Berkshelf
25
29
 
26
30
  def warn(message, color = :yellow)
27
31
  return if quiet?
28
-
32
+
29
33
  say(message, color)
30
34
  end
31
35
 
@@ -1,3 +1,3 @@
1
1
  module Berkshelf
2
- VERSION = "2.0.0.beta"
2
+ VERSION = '2.0.0'
3
3
  end
@@ -1,5 +1,4 @@
1
1
  require 'berkshelf/ui'
2
2
 
3
- # @author Seth Vargo <sethvargo@gmail.com>
4
3
  # Include the Berkshelf UI methods - this is used by both Vagrant and Berkshelf
5
4
  Thor::Base.shell.send(:include, Berkshelf::UI)
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEAs3u5qfmdEWtzYHvXpbQRyefhUjeTG7nwhn/LaYY6ou19xxW0
3
+ I5MKSBqCxUCHqODRc7ox8zSF37x3jMBHbSczOcfbWsSe/qGnmvZZQhHmXCje2zkW
4
+ ByaRHmmatzkz1aAqAmZm/wdSuVLXytsbrPXuaj/MiHa6QH3e/ZFaYME7rMkouqfC
5
+ pUlSa2tZ9Ko1ZCCwjkiifuP4yQFsS6/G6b8c7F8wdq4byfJ9o6FN34lJHrzfG0ZV
6
+ hwS47Bdn6FDBQ6PVxrBsvQNE2n7QlNLfXWi4Tb8OpmQif01FjxleAr5kamx3GD+s
7
+ jC7fKHE9bZ0apZ1MVmkz9PhFmOigV5jl9Att+QIDAQABAoIBAQCCG6qXgQ9PVWkq
8
+ BBxrToGmr6UzCH5nlv65QWKfeGKBQU/wRdd0Al9trWomu4Sb831iOxOCjgyOB/1R
9
+ 1wDwK36C4FIvFmF7jIwHVZWWw4sOO8JxgIxrWpXQShWRxLHCpnxNiRYYwaJCHb+4
10
+ meUSGKVf+Ce4tPiHT7eacQfnI6yyr1hWusKu0I8w7NsfeNc+/Rpne6mifLfaB/9u
11
+ b9kgfD15HGEsuUaMLZ/y1HFWvw2G2Og1cDrIpBIVtUAhA+DnjjLe/YoETeSmQAxH
12
+ ioQpJJ/gSqtTczIoyPXXiwaF5wUTQrsn5zZhTs9mAQy7hcSR92IH2xBSmK3+wlz0
13
+ vHZIq9rRAoGBAOeRUTRDgj+f+BlH1qFqf4EfkBN5quVM2808LYBGZWfA5/6o9jSN
14
+ AM84VXq3S8Wy5V6UMcSv4mOqEr3tEUYE8or9r/RxzpGahSdi8Ttju9vvpJH5I3xr
15
+ xx2ZK/vlrAfr6JHlE4bqqc5unCslUt2/liCWpERQ3cFcPydQb7Imrm+DAoGBAMZr
16
+ mcxBeMyQHG6Kcpc7EQXZ5i7a8T6ksPu7FbAZ70Meb9UMtVIYpVBalutCXKhl7D4K
17
+ qrCmV2gQryBz+S7AecFZSKvXdb7ueYzf8EcI/v+loNu9v9/4m4YV3bPBkMhW5kcK
18
+ xFnVIsYqUlR+dsS8JfjSCpk4lePVSSt7B26eIFfTAoGBAJHPDKSuBWtunNe+RkUp
19
+ O9PgPeYlbBgqBxT52WS17tAfxXSyiySXzHSuchRtKgb4GDkvcw73+MLsqhRxG7lN
20
+ EDO4fXyb1IgWFdWxFVhh+j4IbUWE7HVBoAThF7Lq8SGjx7Nl3J/NTtKvDyKTw9Pg
21
+ +PTYJeLmUFuabCGjIlG4zYllAoGBAIwe5oB4597GEl35xUyI+M+B/myuTtknIpjS
22
+ mFFBL1bdwqnYjJ+KKgwhvRwsRBTjzT5O+BVBks45ogKwA5OBdzoUXB6GTG9mJ05V
23
+ wm/XqYRNqdgkGsEG5oV9IZBUrHLd80bOErVBr4nzzyo+GI98MvCRG8zySd+X+lEL
24
+ U8dJQZvjAoGAWorll+fomfie6t5XbkpwMo8rn60yFUiRE7HWxA2qDj3IpoE6SfNE
25
+ eOpsf1Zzx30r8answ9lPnd753ACdgNzE66ScWD+cQeB6OlMZMaW5tVSjddZ7854L
26
+ 00znt8b1OLkVY33xfsa89wKH343304BhVHABPMxm5Leua/H21/BqSK0=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,12 @@
1
+ current_dir = File.expand_path(File.dirname(__FILE__))
2
+
3
+ log_level :info
4
+ log_location STDOUT
5
+ node_name "berkshelf"
6
+ client_key "#{current_dir}/berkshelf.pem"
7
+ validation_client_name "validator"
8
+ validation_key "#{current_dir}/validator.pem"
9
+ chef_server_url "http://localhost:4000"
10
+ cache_type 'BasicFile'
11
+ cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
12
+ cookbook_path []
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAxvMbzsVt0PJ0ozcpQZC+zpaWYAZe/nHnSFeTkm9BAtQUA8vp
3
+ cKMJTXNw4Lm3jcotrPATMgGgwVG7ram689JcQSnwSgIFinr5ZLRB22qyGdqHHmAf
4
+ w4RVde6dJON2IqI51JzQ5Pfs+M1SYcKiCzcBHvFddug5VcMjipFLv7QPKDmal8Ep
5
+ tOtRhb8Ad2DBXV7gX3e8ZaKfQgA0uc07g1KmcjR7vOG25nxY6NRxTwWn5+uMVgCp
6
+ 1xjbBeq7XF2gJPYVNsNRu8C3/rMX7D3NuKpJGj3CsKOtECREsq+7lk7A7OPzrP0g
7
+ Um/dUSeV99FLavrJNZ8TRc+BLZD/RiE1x0wG9wIDAQABAoIBAAbRchSGA5tzk7e8
8
+ Pje3BDMESicEUOEbejeqeK4+DdZQ+lae+GMZ00nKOQYal0XOtf4FREMkdyPo7yum
9
+ c3fDr9Gz5D5FD3eNe1qOKuugHnZwXM0Xsj77HAqsoMoQ2Y2aTa0Rqr8OGBr2vmoH
10
+ R5Jm0i0DTJa0orJju6YWEKiDPTm9oCT025M3G4kswM4jnzQiTciksfEYJGIK1Alk
11
+ Lcct/8TtyoYNhzYfzFi2wIQx4Iy6o/2AqWjvcJT2RI3cge5CBOXR7Y1Zqt5/vWm+
12
+ MvSy+krujFTTKpJKbatOsRGoCX6e8IcIQ4MtOj9jSPQPvGcQrjEdks6+zKID6INW
13
+ ZZYrvqECgYEA8EKB/oYzNueoBvaFcw1ONUNScYnr9IS/7oZnciw53cMwDumsH9qB
14
+ NbEH6m1/2EQhOU5KoAQX2qd8KNQ6oIL1ae51ACtdEBP9Sb9j2q+IlEOf3bLga+w1
15
+ DXeQ0wx4ZHyF6a2AJK4qVO+nDnYw074VxaApLXDyfXpIS7N9lOJxeb8CgYEA0/vF
16
+ mt/+r6v2YOVWtSah44lIyaDj3N6fjYcI34aJvowwe+Njfnd2o4BkqhthQKOnl6FI
17
+ SQPrLBdwc4OvN9oWMZHX2b0ols0Bf5ZxAfqMvCS2JG+SiiZT+p+cPnCitfPZ6zn7
18
+ 5SMpVMqlMS8GxNze8ZkieQ7PaF28rF0xUJZIkMkCgYEAwspJNqB7OVKMCkkoXOU2
19
+ uTxBxUe7A9309mAF0q1EpSUw+4Y8RP8UrwE+l7P7aM2j2iA9pIptBJuxsDCQ7739
20
+ Vss8FM0TgIuUWYxQWubh5sMFA+uYxCcXxDliM5nyqhXDRHekYxjJvV8npDPy1llQ
21
+ sY9ukyb1kwHnR2jYsjL9KWUCgYAmB1vKzfZVs4bOmTX154lRVXaOXWOjYvjCnf/0
22
+ gaFCYsnr374gmPPanxTwA1tuCi3toMxj9OUCku3kezI61c/3co+Di1C1xO9I4UdC
23
+ sJ0Av6FBZham2/ti0bFo7jHybF2iulM7JxSqFnSOHz6aoHkKZItvpj2FHpPTZCCN
24
+ sXgxKQKBgDyBsl4/LCG+eQrxaL6Y7DHP9oNTw5hRbQWlZlXfygyUbKCqj1OfOrVu
25
+ hDAn/ElMLgSgRbI8nXq68cu6UE4wO4Di6fQyCb2pP7tgS+0swbq85YoMbHh/z+yN
26
+ WUvLQHfN4RHJStY3JX/cBcSoIiArNbuFcPThM02YBDhbiW+NQhZV
27
+ -----END RSA PRIVATE KEY-----
@@ -7,7 +7,6 @@ require 'bundler'
7
7
  require 'spork'
8
8
 
9
9
  Spork.prefork do
10
- require 'json_spec'
11
10
  require 'pp'
12
11
  require 'rspec'
13
12
  require 'webmock/rspec'
@@ -15,7 +14,7 @@ Spork.prefork do
15
14
 
16
15
  APP_ROOT = File.expand_path('../../', __FILE__)
17
16
  ENV["BERKSHELF_PATH"] = File.join(APP_ROOT, "spec", "tmp", "berkshelf")
18
- ENV["BERKSHELF_CHEF_CONFIG"] = File.join(APP_ROOT, "spec", "knife.rb")
17
+ ENV["BERKSHELF_CHEF_CONFIG"] = File.join(APP_ROOT, "spec", "config", "knife.rb")
19
18
 
20
19
  Dir[File.join(APP_ROOT, "spec/support/**/*.rb")].each {|f| require f}
21
20
 
@@ -29,7 +28,6 @@ Spork.prefork do
29
28
 
30
29
  RSpec.configure do |config|
31
30
  config.include Berkshelf::RSpec::FileSystemMatchers
32
- config.include JsonSpec::Helpers
33
31
  config.include Berkshelf::RSpec::ChefAPI
34
32
  config.include Berkshelf::RSpec::ChefServer
35
33
 
@@ -43,12 +41,12 @@ Spork.prefork do
43
41
  config.filter_run focus: true
44
42
  config.run_all_when_everything_filtered = true
45
43
 
46
- config.before(:all) do
44
+ config.before(:suite) do
47
45
  Berkshelf::RSpec::ChefServer.start
48
46
  WebMock.disable_net_connect!(allow_localhost: true, net_http_connect_on_start: true)
49
47
  end
50
48
 
51
- config.after(:all) do
49
+ config.after(:suite) do
52
50
  Berkshelf::RSpec::ChefServer.stop
53
51
  end
54
52
 
@@ -119,7 +117,7 @@ Spork.prefork do
119
117
  path = ''
120
118
  capture(:stdout) do
121
119
  Dir.chdir(remote_bucket) do
122
- Berkshelf::Cli.new.invoke(:cookbook, [name], skip_vagrant: true, force: true)
120
+ Berkshelf::Cli.new.invoke(:cookbook, [name], skip_vagrant: true, skip_test_kitchen: true, force: true)
123
121
  end
124
122
 
125
123
  Dir.chdir(path = remote_bucket.join(name)) do
@@ -174,8 +172,6 @@ Spork.prefork do
174
172
  def run(cmd)
175
173
  `#{cmd}`
176
174
  end
177
-
178
- Berkshelf::RSpec::Knife.load_knife_config(File.join(APP_ROOT, 'spec/knife.rb'))
179
175
  end
180
176
 
181
177
  Spork.each_run do