test-kitchen 1.18.0 → 1.19.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/ECOSYSTEM.md +6 -5
  4. data/lib/kitchen/cli.rb +24 -53
  5. data/lib/kitchen/command/doctor.rb +40 -0
  6. data/lib/kitchen/config.rb +6 -0
  7. data/lib/kitchen/configurable.rb +1 -1
  8. data/lib/kitchen/data_munger.rb +2 -0
  9. data/lib/kitchen/driver/base.rb +26 -1
  10. data/lib/kitchen/driver/dummy.rb +1 -0
  11. data/lib/kitchen/driver/exec.rb +71 -0
  12. data/lib/kitchen/driver/proxy.rb +2 -1
  13. data/lib/kitchen/instance.rb +13 -4
  14. data/lib/kitchen/provisioner/base.rb +8 -0
  15. data/lib/kitchen/provisioner/chef_base.rb +3 -1
  16. data/lib/kitchen/provisioner/shell.rb +21 -23
  17. data/lib/kitchen/transport/base.rb +8 -0
  18. data/lib/kitchen/transport/exec.rb +59 -0
  19. data/lib/kitchen/verifier/base.rb +8 -0
  20. data/lib/kitchen/version.rb +1 -1
  21. data/spec/kitchen/config_spec.rb +13 -0
  22. data/spec/kitchen/driver/base_spec.rb +18 -0
  23. data/spec/kitchen/driver/exec_spec.rb +75 -0
  24. data/spec/kitchen/provisioner/chef_base_spec.rb +9 -0
  25. data/spec/kitchen/provisioner/chef_solo_spec.rb +1 -1
  26. data/spec/kitchen/provisioner/chef_zero_spec.rb +1 -1
  27. data/spec/kitchen/provisioner/shell_spec.rb +22 -20
  28. data/spec/kitchen/ssh_spec.rb +0 -29
  29. data/spec/kitchen/transport/exec_spec.rb +79 -0
  30. data/spec/kitchen/transport/ssh_spec.rb +0 -29
  31. data/spec/spec_helper.rb +26 -0
  32. data/support/busser_install_command.sh +10 -3
  33. metadata +9 -8
  34. data/features/kitchen_driver_create_command.feature +0 -64
  35. data/features/kitchen_driver_discover_command.feature +0 -25
  36. data/lib/kitchen/command/driver_discover.rb +0 -102
  37. data/lib/kitchen/generator/driver_create.rb +0 -174
@@ -1,174 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Fletcher Nichol (<fnichol@nichol.ca>)
4
- #
5
- # Copyright (C) 2013, Fletcher Nichol
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require "thor/group"
20
- require "thor/util"
21
-
22
- module Kitchen
23
- module Generator
24
- # A generator to create a new Kitchen Driver gem project.
25
- #
26
- # @author Fletcher Nichol <fnichol@nichol.ca>
27
- class DriverCreate < Thor::Group
28
- include Thor::Actions
29
-
30
- argument :name, type: :string
31
-
32
- class_option :license,
33
- aliases: "-l",
34
- default: "apachev2",
35
- desc: "License type for gem (apachev2, mit, lgplv3, reserved)"
36
-
37
- # Invoke the command.
38
- def create
39
- self.class.source_root(Kitchen.source_root.join("templates", "driver"))
40
-
41
- create_core_files
42
- create_source_files
43
- initialize_git
44
- end
45
-
46
- private
47
-
48
- # Creates top-level project files.
49
- #
50
- # @api private
51
- def create_core_files
52
- empty_directory(target_dir)
53
-
54
- create_template("CHANGELOG.md.erb", "CHANGELOG.md")
55
- create_template("Gemfile.erb", "Gemfile")
56
- create_template("Rakefile.erb", "Rakefile")
57
- create_template("README.md.erb", "README.md")
58
- create_template("gemspec.erb", "#{config[:gem_name]}.gemspec")
59
- create_template("license_#{config[:license]}.erb", license_filename)
60
- create_template("gitignore.erb", ".gitignore")
61
- create_template("tailor.erb", ".tailor")
62
- create_template("travis.yml.erb", ".travis.yml")
63
- create_file(File.join(target_dir, ".cane"))
64
- end
65
-
66
- # Creates source code files.
67
- #
68
- # @api private
69
- def create_source_files
70
- empty_directory(File.join(target_dir, "lib/kitchen/driver"))
71
-
72
- create_template(
73
- "version.rb.erb",
74
- "lib/kitchen/driver/#{name}_version.rb"
75
- )
76
- create_template(
77
- "driver.rb.erb",
78
- "lib/kitchen/driver/#{name}.rb"
79
- )
80
- end
81
-
82
- # Initialize a git repository.
83
- #
84
- # @api private
85
- def initialize_git
86
- inside(target_dir) do
87
- run("git init", capture: true)
88
- run("git add .", capture: true)
89
- end
90
- end
91
-
92
- # Render an ERb template to a destination file.
93
- #
94
- # @param erb [String] path to an ERb file
95
- # @param dest [String] destination path for the rendered template
96
- # @api private
97
- def create_template(erb, dest)
98
- template(erb, File.join(target_dir, dest), config)
99
- end
100
-
101
- # @return [String] the path to the gem skeleton project
102
- # @api private
103
- def target_dir
104
- File.join(Dir.pwd, "kitchen-#{name}")
105
- end
106
-
107
- # @return [Hash] a configuration hash which can be used by templates as
108
- # context
109
- # @api private
110
- def config
111
- @config ||= {
112
- name: name,
113
- gem_name: "kitchen-#{name}",
114
- gemspec: "kitchen-#{name}.gemspec",
115
- klass_name: ::Thor::Util.camel_case(name),
116
- constant_name: ::Thor::Util.snake_case(name).upcase,
117
- author: author,
118
- email: email,
119
- license: options[:license],
120
- license_string: license_string,
121
- year: Time.now.year,
122
- }
123
- end
124
-
125
- # @return [String] a default author name taken from git configuration if
126
- # found
127
- # @api private
128
- def author
129
- git_user_name = `git config user.name`.chomp
130
- git_user_name.empty? ? "TODO: Write your name" : git_user_name
131
- end
132
-
133
- # @return [String] a default email address taken from git configuration
134
- # if found
135
- # @api private
136
- def email
137
- git_user_email = `git config user.email`.chomp
138
- git_user_email.empty? ? "TODO: Write your email" : git_user_email
139
- end
140
-
141
- # @return [String] a rendered license string for a given license
142
- # @api private
143
- def license_string
144
- case options[:license]
145
- when "mit" then "MIT"
146
- when "apachev2" then "Apache 2.0"
147
- when "lgplv3" then "LGPL 3.0"
148
- when "reserved" then "All rights reserved"
149
- else
150
- raise ArgumentError, "No such license #{options[:license]}"
151
- end
152
- end
153
-
154
- # @return [String] the filename to use for the license file
155
- # @api private
156
- def license_filename
157
- case options[:license]
158
- when "mit" then "LICENSE.txt"
159
- when "apachev2", "reserved" then "LICENSE"
160
- when "lgplv3" then "COPYING"
161
- else
162
- raise ArgumentError, "No such license #{options[:license]}"
163
- end
164
- end
165
-
166
- # @return [String] the license comment/preamble
167
- # @api private
168
- def license_comment
169
- @license_comment ||= IO.read(File.join(target_dir, license_filename))
170
- .gsub(/^/, "# ").gsub(/\s+$/, "")
171
- end
172
- end
173
- end
174
- end