busser 0.7.1 → 0.9.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 (53) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +32 -0
  3. data/.github/workflows/pr-title.yml +28 -0
  4. data/.github/workflows/publish.yml +45 -0
  5. data/.gitignore +0 -1
  6. data/.markdownlint.yaml +6 -0
  7. data/.release-please-manifest.json +3 -0
  8. data/.rubocop.yml +9 -0
  9. data/.yamllint +6 -0
  10. data/CHANGELOG.md +44 -0
  11. data/CONTRIBUTING.md +103 -0
  12. data/Gemfile +10 -6
  13. data/README.md +82 -21
  14. data/Rakefile +6 -23
  15. data/bin/busser +2 -4
  16. data/busser.gemspec +12 -15
  17. data/features/deserialize_command.feature +4 -1
  18. data/features/plugin_install_command.feature +1 -1
  19. data/features/support/env.rb +4 -16
  20. data/lib/busser/cli.rb +6 -7
  21. data/lib/busser/command/deserialize.rb +16 -11
  22. data/lib/busser/command/plugin.rb +4 -5
  23. data/lib/busser/command/plugin_create.rb +23 -24
  24. data/lib/busser/command/plugin_install.rb +21 -14
  25. data/lib/busser/command/plugin_list.rb +3 -4
  26. data/lib/busser/command/setup.rb +17 -18
  27. data/lib/busser/command/suite.rb +3 -4
  28. data/lib/busser/command/suite_cleanup.rb +3 -3
  29. data/lib/busser/command/suite_path.rb +2 -3
  30. data/lib/busser/command/test.rb +4 -4
  31. data/lib/busser/cucumber/hooks.rb +1 -9
  32. data/lib/busser/cucumber.rb +69 -49
  33. data/lib/busser/helpers.rb +4 -5
  34. data/lib/busser/plugin.rb +12 -6
  35. data/lib/busser/rubygems.rb +35 -39
  36. data/lib/busser/runner_plugin/dummy.rb +2 -3
  37. data/lib/busser/runner_plugin.rb +1 -2
  38. data/lib/busser/thor.rb +3 -4
  39. data/lib/busser/ui.rb +15 -5
  40. data/lib/busser/version.rb +1 -2
  41. data/lib/busser.rb +3 -4
  42. data/release-please-config.json +13 -0
  43. data/renovate.json +8 -0
  44. data/spec/busser/command/deserialize_spec.rb +110 -0
  45. data/spec/busser/helpers_spec.rb +11 -10
  46. data/spec/busser/plugin_spec.rb +133 -0
  47. data/spec/busser/ui_spec.rb +35 -29
  48. data/spec/spec_helper.rb +1 -7
  49. metadata +29 -89
  50. data/.cane +0 -0
  51. data/.simplecov +0 -10
  52. data/.travis.yml +0 -52
  53. data/Guardfile +0 -18
@@ -42,7 +42,7 @@ class SneakyUI
42
42
  end
43
43
  end
44
44
 
45
- # Stub that mimicks a Process::Status object
45
+ # Stub that mimics a Process::Status object
46
46
  class FakeStatus
47
47
 
48
48
  attr_reader :exitstatus
@@ -65,35 +65,35 @@ describe Busser::UI do
65
65
  end
66
66
 
67
67
  it "#banner should display a formatted message" do
68
- ui.invoke_banner("coffee").must_equal "-----> coffee"
68
+ _(ui.invoke_banner("coffee")).must_equal "-----> coffee"
69
69
  end
70
70
 
71
71
  it "#info should display a formatted message" do
72
- ui.invoke_info("beans").must_equal " beans"
72
+ _(ui.invoke_info("beans")).must_equal " beans"
73
73
  end
74
74
 
75
75
  it "#warn should display a formatted message" do
76
- ui.invoke_warn("grinder").must_equal ">>>>>> grinder"
76
+ _(ui.invoke_warn("grinder")).must_equal ">>>>>> grinder"
77
77
  end
78
78
 
79
79
  it "#fatal should display a formatted message on stderr" do
80
- capture_stderr { ui.invoke_fatal("grinder") }.must_equal "!!!!!! grinder\n"
80
+ _(capture_stderr { ui.invoke_fatal("grinder") }).must_equal "!!!!!! grinder\n"
81
81
  end
82
82
 
83
83
  describe "#die" do
84
84
  it "prints a message to stderr" do
85
- capture_stderr { ui.invoke_die("noes") }.must_equal "!!!!!! noes\n"
85
+ _(capture_stderr { ui.invoke_die("noes") }).must_equal "!!!!!! noes\n"
86
86
  end
87
87
 
88
88
  it "calls exit with 1 by default" do
89
89
  capture_stderr do
90
- ui.invoke_die("fail").must_equal 1
90
+ _(ui.invoke_die("fail")).must_equal 1
91
91
  end
92
92
  end
93
93
 
94
94
  it "exits with a custom exit status" do
95
95
  capture_stderr do
96
- ui.invoke_die("fail", 16).must_equal 16
96
+ _(ui.invoke_die("fail", 16)).must_equal 16
97
97
  end
98
98
  end
99
99
  end
@@ -103,45 +103,48 @@ describe Busser::UI do
103
103
  it "calls #run with correct options" do
104
104
  ui.invoke_run!("doitpls")
105
105
 
106
- ui.run_args.must_equal([
106
+ _(ui.run_args).must_equal([
107
107
  "doitpls",
108
108
  { :capture => false, :verbose => false}
109
109
  ])
110
110
  end
111
111
 
112
112
  it "returns true if command succeeded" do
113
- ui.invoke_run!("great-stuff").must_equal true
113
+ _(ui.invoke_run!("great-stuff")).must_equal true
114
114
  end
115
115
 
116
116
  it "re-raises any exceptions from the underlying fork/exec" do
117
117
  ui.stubs(:run).raises(Errno::ENOMEM)
118
118
 
119
- capture_stderr {
120
- proc { ui.invoke_run!("failwhale") }.must_raise Errno::ENOMEM
121
- }.must_match /raised an exception/
119
+ output = capture_stderr do
120
+ _ { ui.invoke_run!("failwhale") }.must_raise Errno::ENOMEM
121
+ end
122
+
123
+ _(output).must_match(/raised an exception/)
122
124
  end
123
125
 
124
126
  it "terminates the program if the command failed" do
125
127
  ui.status = FakeStatus.new(false)
126
128
  capture_stderr { ui.invoke_run!("failwhale") }
127
129
 
128
- ui.died?.must_equal true
130
+ _(ui.died?).must_equal true
129
131
  end
130
132
 
131
133
  it "terminates with the exit code of the failed command" do
132
134
  ui.status = FakeStatus.new(false, 24)
133
135
 
134
136
  capture_stderr do
135
- ui.invoke_run!("failwhale").must_equal 24
137
+ _(ui.invoke_run!("failwhale")).must_equal 24
136
138
  end
137
139
  end
138
140
 
139
141
  it "terminates the program if status is nil" do
140
142
  ui.status = nil
141
- capture_stderr { ui.invoke_run!("failwhale") }.
142
- must_match /did not return a valid status/
143
+ output = capture_stderr { ui.invoke_run!("failwhale") }
144
+
145
+ _(output).must_match(/did not return a valid status/)
143
146
 
144
- ui.died?.must_equal true
147
+ _(ui.died?).must_equal true
145
148
  end
146
149
  end
147
150
 
@@ -150,7 +153,7 @@ describe Busser::UI do
150
153
  it "calls #run_ruby_script with correct default options" do
151
154
  ui.invoke_run_ruby_script!("theworks.rb")
152
155
 
153
- ui.run_ruby_script_args.must_equal([
156
+ _(ui.run_ruby_script_args).must_equal([
154
157
  "theworks.rb",
155
158
  { :capture => false, :verbose => false }
156
159
  ])
@@ -159,45 +162,48 @@ describe Busser::UI do
159
162
  it "calls #run_ruby_script with correct default options" do
160
163
  ui.invoke_run_ruby_script!("theworks.rb", :verbose => true)
161
164
 
162
- ui.run_ruby_script_args.must_equal([
165
+ _(ui.run_ruby_script_args).must_equal([
163
166
  "theworks.rb",
164
167
  { :capture => false, :verbose => true }
165
168
  ])
166
169
  end
167
170
 
168
171
  it "returns true if command succeeded" do
169
- ui.invoke_run_ruby_script!("thewin.rb").must_equal true
172
+ _(ui.invoke_run_ruby_script!("thewin.rb")).must_equal true
170
173
  end
171
174
 
172
175
  it "re-raises any exceptions from the underlying fork/exec" do
173
176
  ui.stubs(:run_ruby_script).raises(Errno::ENOMEM)
174
177
 
175
- capture_stderr {
176
- proc { ui.invoke_run_ruby_script!("nope.rb") }.must_raise Errno::ENOMEM
177
- }.must_match /raised an exception/
178
+ output = capture_stderr do
179
+ _ { ui.invoke_run_ruby_script!("nope.rb") }.must_raise Errno::ENOMEM
180
+ end
181
+
182
+ _(output).must_match(/raised an exception/)
178
183
  end
179
184
 
180
185
  it "terminates the program if the script failed" do
181
186
  ui.status = FakeStatus.new(false)
182
187
  capture_stderr { ui.invoke_run_ruby_script!("nope.rb") }
183
188
 
184
- ui.died?.must_equal true
189
+ _(ui.died?).must_equal true
185
190
  end
186
191
 
187
192
  it "terminates with the exit code of the failed script" do
188
193
  ui.status = FakeStatus.new(false, 97)
189
194
 
190
195
  capture_stderr do
191
- ui.invoke_run_ruby_script!("nadda.rb").must_equal 97
196
+ _(ui.invoke_run_ruby_script!("nadda.rb")).must_equal 97
192
197
  end
193
198
  end
194
199
 
195
200
  it "terminates the program if status is nil" do
196
201
  ui.status = nil
197
- capture_stderr { ui.invoke_run_ruby_script!("nope.rb") }.
198
- must_match /did not return a valid status/
202
+ output = capture_stderr { ui.invoke_run_ruby_script!("nope.rb") }
203
+
204
+ _(output).must_match(/did not return a valid status/)
199
205
 
200
- ui.died?.must_equal true
206
+ _(ui.died?).must_equal true
201
207
  end
202
208
  end
203
209
 
data/spec/spec_helper.rb CHANGED
@@ -16,11 +16,5 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
- require 'fakefs/safe'
20
19
  require 'minitest/autorun'
21
- require 'mocha/setup'
22
-
23
- if ENV["COVERAGE"]
24
- require 'simplecov'
25
- SimpleCov.command_name "unit"
26
- end
20
+ require 'mocha/minitest'
metadata CHANGED
@@ -1,79 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: busser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Nichol
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-20 00:00:00.000000000 Z
11
+ date: 2026-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "<="
18
- - !ruby/object:Gem::Version
19
- version: 0.19.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "<="
25
- - !ruby/object:Gem::Version
26
- version: 0.19.0
27
- - !ruby/object:Gem::Dependency
28
- name: aruba
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
16
  requirements:
38
17
  - - ">="
39
18
  - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.3'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.3'
55
- - !ruby/object:Gem::Dependency
56
- name: cane
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
19
+ version: '1.1'
20
+ type: :runtime
63
21
  prerelease: false
64
22
  version_requirements: !ruby/object:Gem::Requirement
65
23
  requirements:
66
24
  - - ">="
67
25
  - !ruby/object:Gem::Version
68
- version: '0'
26
+ version: '1.1'
69
27
  - !ruby/object:Gem::Dependency
70
- name: countloc
28
+ name: base64
71
29
  requirement: !ruby/object:Gem::Requirement
72
30
  requirements:
73
31
  - - ">="
74
32
  - !ruby/object:Gem::Version
75
33
  version: '0'
76
- type: :development
34
+ type: :runtime
77
35
  prerelease: false
78
36
  version_requirements: !ruby/object:Gem::Requirement
79
37
  requirements:
@@ -81,19 +39,19 @@ dependencies:
81
39
  - !ruby/object:Gem::Version
82
40
  version: '0'
83
41
  - !ruby/object:Gem::Dependency
84
- name: fakefs
42
+ name: aruba
85
43
  requirement: !ruby/object:Gem::Requirement
86
44
  requirements:
87
45
  - - ">="
88
46
  - !ruby/object:Gem::Version
89
- version: '0'
47
+ version: '2.0'
90
48
  type: :development
91
49
  prerelease: false
92
50
  version_requirements: !ruby/object:Gem::Requirement
93
51
  requirements:
94
52
  - - ">="
95
53
  - !ruby/object:Gem::Version
96
- version: '0'
54
+ version: '2.0'
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: minitest
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,20 +94,6 @@ dependencies:
136
94
  - - ">="
137
95
  - !ruby/object:Gem::Version
138
96
  version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
97
  description: Busser - Runs tests for projects in Test Kitchen
154
98
  email:
155
99
  - fnichol@nichol.ca
@@ -158,13 +102,17 @@ executables:
158
102
  extensions: []
159
103
  extra_rdoc_files: []
160
104
  files:
161
- - ".cane"
105
+ - ".github/workflows/ci.yml"
106
+ - ".github/workflows/pr-title.yml"
107
+ - ".github/workflows/publish.yml"
162
108
  - ".gitignore"
163
- - ".simplecov"
164
- - ".travis.yml"
109
+ - ".markdownlint.yaml"
110
+ - ".release-please-manifest.json"
111
+ - ".rubocop.yml"
112
+ - ".yamllint"
165
113
  - CHANGELOG.md
114
+ - CONTRIBUTING.md
166
115
  - Gemfile
167
- - Guardfile
168
116
  - LICENSE
169
117
  - README.md
170
118
  - Rakefile
@@ -200,7 +148,11 @@ files:
200
148
  - lib/busser/thor.rb
201
149
  - lib/busser/ui.rb
202
150
  - lib/busser/version.rb
151
+ - release-please-config.json
152
+ - renovate.json
153
+ - spec/busser/command/deserialize_spec.rb
203
154
  - spec/busser/helpers_spec.rb
155
+ - spec/busser/plugin_spec.rb
204
156
  - spec/busser/ui_spec.rb
205
157
  - spec/spec_helper.rb
206
158
  - templates/plugin/CHANGELOG.md.erb
@@ -223,9 +175,9 @@ files:
223
175
  - templates/plugin/version.rb.erb
224
176
  homepage: https://github.com/test-kitchen/busser
225
177
  licenses:
226
- - Apache 2.0
178
+ - Apache-2.0
227
179
  metadata: {}
228
- post_install_message:
180
+ post_install_message:
229
181
  rdoc_options: []
230
182
  require_paths:
231
183
  - lib
@@ -233,27 +185,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
233
185
  requirements:
234
186
  - - ">="
235
187
  - !ruby/object:Gem::Version
236
- version: 1.9.1
188
+ version: '3.2'
237
189
  required_rubygems_version: !ruby/object:Gem::Requirement
238
190
  requirements:
239
191
  - - ">="
240
192
  - !ruby/object:Gem::Version
241
193
  version: '0'
242
194
  requirements: []
243
- rubyforge_project:
244
- rubygems_version: 2.4.2
245
- signing_key:
195
+ rubygems_version: 3.5.9
196
+ signing_key:
246
197
  specification_version: 4
247
198
  summary: Busser - Runs tests for projects in Test Kitchen
248
- test_files:
249
- - features/deserialize_command.feature
250
- - features/files/base64.txt
251
- - features/plugin_create_command.feature
252
- - features/plugin_install_command.feature
253
- - features/setup_command.feature
254
- - features/suite_cleanup_command.feature
255
- - features/suite_path_command.feature
256
- - features/support/env.rb
257
- - spec/busser/helpers_spec.rb
258
- - spec/busser/ui_spec.rb
259
- - spec/spec_helper.rb
199
+ test_files: []
data/.cane DELETED
File without changes
data/.simplecov DELETED
@@ -1,10 +0,0 @@
1
- SimpleCov.profiles.define 'gem' do
2
- command_name 'Specs'
3
-
4
- add_filter '.gem/'
5
- add_filter '/spec/'
6
- add_filter '/lib/vendor/'
7
-
8
- add_group 'Libraries', '/lib/'
9
- end
10
- SimpleCov.start 'gem'
data/.travis.yml DELETED
@@ -1,52 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.2
5
- - 2.1
6
- - 2.0.0
7
- - 1.9.3
8
- - ruby-head
9
-
10
- env:
11
- - RUBYGEMS_VERSION=
12
- - RUBYGEMS_VERSION=2.4.5
13
- - RUBYGEMS_VERSION=2.2.2
14
- - RUBYGEMS_VERSION=2.1.11
15
- - RUBYGEMS_VERSION=2.0.14
16
- - RUBYGEMS_VERSION=1.8.29
17
-
18
- before_install:
19
- - if [ -n "$RUBYGEMS_VERSION" ]; then gem update --system $RUBYGEMS_VERSION; fi
20
- - gem --version
21
-
22
- bundler_args: --without guard
23
-
24
- sudo: false
25
-
26
- matrix:
27
- allow_failures:
28
- - rvm: ruby-head
29
- exclude:
30
- - rvm: 2.2
31
- env: RUBYGEMS_VERSION=2.2.2
32
- - rvm: 2.2
33
- env: RUBYGEMS_VERSION=2.1.11
34
- - rvm: 2.2
35
- env: RUBYGEMS_VERSION=2.0.14
36
- - rvm: 2.2
37
- env: RUBYGEMS_VERSION=1.8.29
38
- - rvm: 2.1
39
- env: RUBYGEMS_VERSION=1.8.29
40
- - rvm: 2.0.0
41
- env: RUBYGEMS_VERSION=1.8.29
42
- - rvm: ruby-head
43
- env: RUBYGEMS_VERSION=2.2.2
44
- - rvm: ruby-head
45
- env: RUBYGEMS_VERSION=2.1.11
46
- - rvm: ruby-head
47
- env: RUBYGEMS_VERSION=2.0.14
48
- - rvm: ruby-head
49
- env: RUBYGEMS_VERSION=1.8.29
50
-
51
- notifications:
52
- irc: "chat.freenode.net#kitchenci"
data/Guardfile DELETED
@@ -1,18 +0,0 @@
1
- guard 'minitest' do
2
- watch(%r|^spec/(.*)_spec\.rb|)
3
- watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
4
- watch(%r|^spec/spec_helper\.rb|) { "spec" }
5
- end
6
-
7
- guard 'cucumber' do
8
- watch(%r{^features/.+\.feature$})
9
- watch(%r{^features/support/.+$}) { 'features' }
10
- watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
11
- Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
12
- end
13
- end
14
-
15
- guard 'cane' do
16
- watch(%r|.*\.rb|)
17
- watch('.cane')
18
- end