shelly 0.4.17 → 0.4.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OTQwZWEzYzYyMjJiMGE4ODE4NWQ0ZjVjY2E3ZGUyYjNmYjg3MGE1Zg==
5
- data.tar.gz: !binary |-
6
- NmI3YWMzMzU0YzE1OGMwZmQyZTFhNDY3ZWM2OWU4YWYxMzVkNDIxNA==
2
+ SHA1:
3
+ metadata.gz: 0e096d721714633a31e9f27597281ac05529cd3d
4
+ data.tar.gz: d679baa8bd677204515e5ff42d54d07ad0ac436b
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YmM0MDMzMTU2Yzk5ODk3OTE5ZDRiOWYzOWU5MTMzYzVhNDgwODU2ZDA5MDIy
10
- MzMzZjU2YzYyMzJhZjFiMzM1OTljODc3ZWI1OGEzYzFlZGU3MGI1NjI1NmNk
11
- OGY1Y2Q4OTM1Y2VhNzc3NGNhYjY3Mzg1ZTIwYjhmZmVmNjYyMTE=
12
- data.tar.gz: !binary |-
13
- YzkwZjU5MGQzMGExMzIzMjRmMWJjZjk0Y2RiODA3NjNhZjgwMzYyZDlkNTBl
14
- ZGQ0MjZkMjRiODlmYjM2YTk0NmEyMTZjMzUwOTUyMDNmOTQ0MjJhMTVmYzA4
15
- ODAxNWJhODNhYmQ5OTE3Yzg4ZDNkOWY5N2RkNDFjMDc2YWFmOWQ=
6
+ metadata.gz: 260dbf9bc61c1bbe9b7c0e3e134c94a82d3a543120aed4b9a6fb199c7b314eceec0e625244b96dc28dbdcf0584ac207ff7486d6194eebee1335cf237ec32acd3
7
+ data.tar.gz: e6c665a276d89d14fef5f60d8065282e08b4649bf2011af03cd3634ba553af3da4f563cda26de8efaf8114c2d20adda48fa1c973659af9883bab513abd6b3bb1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.4.18 / 2013-12-17
2
+
3
+ * [improvement] `shelly add` should ask about databases instead of database
4
+ * [improvement] Improved messages displayed while deleting the application
5
+
1
6
  ## 0.4.17 / 2013-12-03
2
7
 
3
8
  * [bugfix] Remove ssh_key from Shelly Cloud only if it was already uploaded
@@ -228,14 +228,19 @@ Wait until cloud is in 'turned off' state and try again.}
228
228
  method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
229
229
  def delete
230
230
  app = multiple_clouds(options[:cloud], "delete")
231
- say "You are about to delete application: #{app}."
232
- say "Press Control-C at any moment to cancel."
233
- say "Please confirm each question by typing yes and pressing Enter."
231
+
232
+ say_new_line
233
+ say "You are going to:"
234
+ say " * remove all files stored in the persistent storage for #{app},"
235
+ say " * remove all database data for #{app},"
236
+ say " * remove #{app} cloud from Shelly Cloud"
237
+ say_new_line
238
+ say "This action is permanent and can not be undone.", :red
234
239
  say_new_line
235
- ask_to_delete_files
236
- ask_to_delete_database
237
- ask_to_delete_application
240
+ ask_to_delete_application app
241
+
238
242
  app.delete
243
+
239
244
  say_new_line
240
245
  say "Scheduling application delete - done"
241
246
  if App.inside_git_repository?
@@ -428,7 +433,8 @@ Wait until cloud is in 'turned off' state and try again.}
428
433
 
429
434
  def ask_for_databases
430
435
  kinds = Shelly::App::DATABASE_CHOICES
431
- databases = ask("Which database do you want to use #{kinds.join(", ")} (postgresql - default):")
436
+ databases = ask("Which databases do you want to use " \
437
+ "#{kinds.join(", ")} (postgresql - default):")
432
438
  begin
433
439
  databases = databases.split(/[\s,]/).reject(&:blank?)
434
440
  valid = valid_databases?(databases)
@@ -43,19 +43,13 @@ module Shelly
43
43
  say_error "Email can't be blank, please try again"
44
44
  end
45
45
 
46
- def ask_to_delete_files
47
- delete_files_question = "I want to delete all files stored on Shelly Cloud (yes/no):"
48
- exit 1 unless yes?(delete_files_question)
49
- end
50
-
51
- def ask_to_delete_database
52
- delete_database_question = "I want to delete all database data stored on Shelly Cloud (yes/no):"
53
- exit 1 unless yes?(delete_database_question)
54
- end
46
+ def ask_to_delete_application(app)
47
+ code_name = ask "Please confirm with the name of the cloud:"
55
48
 
56
- def ask_to_delete_application
57
- delete_application_question = "I want to delete the application (yes/no):"
58
- exit 1 unless yes?(delete_application_question)
49
+ unless code_name == app.code_name
50
+ say_error "The name does not match. Operation aborted."
51
+ exit 1
52
+ end
59
53
  end
60
54
 
61
55
  def ask_for_acceptance_of_terms
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.4.17"
2
+ VERSION = "0.4.18"
3
3
  end
@@ -375,7 +375,9 @@ More info at http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository\e[0m
375
375
  end
376
376
 
377
377
  it "should use database provided by user (separated by comma or space)" do
378
- $stdout.should_receive(:print).with("Which database do you want to use postgresql, mongodb, redis, none (postgresql - default): ")
378
+ $stdout.should_receive(:print).
379
+ with("Which databases do you want to use " \
380
+ "postgresql, mongodb, redis, none (postgresql - default): ")
379
381
  @app.should_receive(:databases=).with(["postgresql", "mongodb", "redis"])
380
382
  fake_stdin(["", "postgresql ,mongodb redis"]) do
381
383
  invoke(@main, :add)
@@ -383,8 +385,12 @@ More info at http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository\e[0m
383
385
  end
384
386
 
385
387
  it "should ask again for databases if unsupported kind typed" do
386
- $stdout.should_receive(:print).with("Which database do you want to use postgresql, mongodb, redis, none (postgresql - default): ")
387
- $stdout.should_receive(:print).with("Unknown database kind. Supported are: postgresql, mongodb, redis, none: ")
388
+ $stdout.should_receive(:print).
389
+ with("Which databases do you want to use " \
390
+ "postgresql, mongodb, redis, none (postgresql - default): ")
391
+ $stdout.should_receive(:print).
392
+ with("Unknown database kind. Supported are: " \
393
+ "postgresql, mongodb, redis, none: ")
388
394
  fake_stdin(["", "postgresql,doesnt-exist", "none"]) do
389
395
  invoke(@main, :add)
390
396
  end
@@ -1173,7 +1179,7 @@ Wait until cloud is in 'turned off' state and try again.")
1173
1179
  it "should ensure multiple_clouds check" do
1174
1180
  @client.stub(:delete)
1175
1181
  @main.should_receive(:multiple_clouds).and_return(@app)
1176
- fake_stdin(["yes", "yes", "yes"]) do
1182
+ fake_stdin(["foo-staging"]) do
1177
1183
  invoke(@main, :delete)
1178
1184
  end
1179
1185
  end
@@ -1184,37 +1190,47 @@ Wait until cloud is in 'turned off' state and try again.")
1184
1190
  f.write("foo-staging:\nfoo-production:\n") }
1185
1191
  end
1186
1192
 
1187
- it "should ask about delete application parts" do
1188
- $stdout.should_receive(:puts).with("You are about to delete application: foo-staging.")
1189
- $stdout.should_receive(:puts).with("Press Control-C at any moment to cancel.")
1190
- $stdout.should_receive(:puts).with("Please confirm each question by typing yes and pressing Enter.")
1193
+ it "should display warning and ask about deleting the application" do
1194
+ $stdout.should_receive(:puts).with("You are going to:")
1195
+ $stdout.should_receive(:puts).
1196
+ with(" * remove all files stored in the persistent storage for" \
1197
+ " foo-staging,")
1198
+ $stdout.should_receive(:puts).
1199
+ with(" * remove all database data for foo-staging,")
1200
+ $stdout.should_receive(:puts).
1201
+ with(" * remove foo-staging cloud from Shelly Cloud")
1191
1202
  $stdout.should_receive(:puts).with("\n")
1192
- $stdout.should_receive(:print).with("I want to delete all files stored on Shelly Cloud (yes/no): ")
1193
- $stdout.should_receive(:print).with("I want to delete all database data stored on Shelly Cloud (yes/no): ")
1194
- $stdout.should_receive(:print).with("I want to delete the application (yes/no): ")
1203
+ $stdout.should_receive(:puts).
1204
+ with(red "This action is permanent and can not be undone.")
1195
1205
  $stdout.should_receive(:puts).with("\n")
1206
+ $stdout.should_receive(:print).
1207
+ with("Please confirm with the name of the cloud: ")
1196
1208
  $stdout.should_receive(:puts).with("Scheduling application delete - done")
1197
1209
  $stdout.should_receive(:puts).with("Removing git remote - done")
1198
1210
  @main.options = {:cloud => "foo-staging"}
1199
- fake_stdin(["yes", "yes", "yes"]) do
1211
+ fake_stdin(["foo-staging"]) do
1200
1212
  invoke(@main, :delete)
1201
1213
  end
1202
1214
  end
1203
1215
 
1204
- it "should return exit 1 when user doesn't type 'yes'" do
1205
- @app.should_not_receive(:delete)
1206
- lambda{
1207
- fake_stdin(["yes", "yes", "no"]) do
1208
- @main.options = {:cloud => "foo-staging"}
1209
- invoke(@main, :delete)
1210
- end
1211
- }.should raise_error(SystemExit)
1216
+ context 'when given code name does not match' do
1217
+ it "should print message and return exit 1" do
1218
+ @app.should_not_receive(:delete)
1219
+ $stdout.should_receive(:puts).
1220
+ with(red "The name does not match. Operation aborted.")
1221
+ lambda{
1222
+ fake_stdin(["foo-production"]) do
1223
+ @main.options = {:cloud => "foo-staging"}
1224
+ invoke(@main, :delete)
1225
+ end
1226
+ }.should raise_error(SystemExit)
1227
+ end
1212
1228
  end
1213
1229
 
1214
1230
  it "should remove git remote" do
1215
1231
  @app.should_receive(:remove_git_remote)
1216
1232
  @main.options = {:cloud => "foo-staging"}
1217
- fake_stdin(["yes", "yes", "yes"]) do
1233
+ fake_stdin(["foo-staging"]) do
1218
1234
  invoke(@main, :delete)
1219
1235
  end
1220
1236
  end
@@ -1229,7 +1245,7 @@ Wait until cloud is in 'turned off' state and try again.")
1229
1245
  it "should say that Git remote missing" do
1230
1246
  Shelly::App.stub(:inside_git_repository?).and_return(false)
1231
1247
  $stdout.should_receive(:puts).with("Missing git remote")
1232
- fake_stdin(["yes", "yes", "yes"]) do
1248
+ fake_stdin(["foo-staging"]) do
1233
1249
  @main.options = {:cloud => "foo-staging"}
1234
1250
  invoke(@main, :delete)
1235
1251
  end
@@ -1243,17 +1259,23 @@ Wait until cloud is in 'turned off' state and try again.")
1243
1259
  end
1244
1260
 
1245
1261
  it "should take the cloud from Cloudfile" do
1246
- $stdout.should_receive(:puts).with("You are about to delete application: foo-staging.")
1247
- $stdout.should_receive(:puts).with("Press Control-C at any moment to cancel.")
1248
- $stdout.should_receive(:puts).with("Please confirm each question by typing yes and pressing Enter.")
1262
+ $stdout.should_receive(:puts).with("You are going to:")
1263
+ $stdout.should_receive(:puts).
1264
+ with(" * remove all files stored in the persistent storage for" \
1265
+ " foo-staging,")
1266
+ $stdout.should_receive(:puts).
1267
+ with(" * remove all database data for foo-staging,")
1268
+ $stdout.should_receive(:puts).
1269
+ with(" * remove foo-staging cloud from Shelly Cloud")
1249
1270
  $stdout.should_receive(:puts).with("\n")
1250
- $stdout.should_receive(:print).with("I want to delete all files stored on Shelly Cloud (yes/no): ")
1251
- $stdout.should_receive(:print).with("I want to delete all database data stored on Shelly Cloud (yes/no): ")
1252
- $stdout.should_receive(:print).with("I want to delete the application (yes/no): ")
1271
+ $stdout.should_receive(:puts).
1272
+ with(red "This action is permanent and can not be undone.")
1253
1273
  $stdout.should_receive(:puts).with("\n")
1274
+ $stdout.should_receive(:print).
1275
+ with("Please confirm with the name of the cloud: ")
1254
1276
  $stdout.should_receive(:puts).with("Scheduling application delete - done")
1255
1277
  $stdout.should_receive(:puts).with("Removing git remote - done")
1256
- fake_stdin(["yes", "y", "yes"]) do
1278
+ fake_stdin(["foo-staging"]) do
1257
1279
  invoke(@main, :delete)
1258
1280
  end
1259
1281
  end
metadata CHANGED
@@ -1,209 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.17
4
+ version: 0.4.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shelly Cloud team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-03 00:00:00.000000000 Z
11
+ date: 2013-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- type: :development
15
- prerelease: false
16
14
  name: rspec
17
- version_requirements: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 2.11.0
22
15
  requirement: !ruby/object:Gem::Requirement
23
16
  requirements:
24
17
  - - ~>
25
18
  - !ruby/object:Gem::Version
26
19
  version: 2.11.0
27
- - !ruby/object:Gem::Dependency
28
20
  type: :development
29
21
  prerelease: false
30
- name: rake
31
22
  version_requirements: !ruby/object:Gem::Requirement
32
23
  requirements:
33
- - - ! '>='
34
- - !ruby/object:Gem::Version
35
- version: '0'
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
24
+ - - ~>
39
25
  - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: 2.11.0
41
27
  - !ruby/object:Gem::Dependency
42
- type: :development
43
- prerelease: false
44
- name: simplecov
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
28
+ name: rake
50
29
  requirement: !ruby/object:Gem::Requirement
51
30
  requirements:
52
- - - ! '>='
31
+ - - '>='
53
32
  - !ruby/object:Gem::Version
54
33
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
34
  type: :development
57
35
  prerelease: false
58
- name: ruby_gntp
59
36
  version_requirements: !ruby/object:Gem::Requirement
60
37
  requirements:
61
- - - ! '>='
38
+ - - '>='
62
39
  - !ruby/object:Gem::Version
63
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
64
43
  requirement: !ruby/object:Gem::Requirement
65
44
  requirements:
66
- - - ! '>='
45
+ - - '>='
67
46
  - !ruby/object:Gem::Version
68
47
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
48
  type: :development
71
49
  prerelease: false
72
- name: rb-fsevent
73
50
  version_requirements: !ruby/object:Gem::Requirement
74
51
  requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fakefs
78
57
  requirement: !ruby/object:Gem::Requirement
79
58
  requirements:
80
- - - ! '>='
59
+ - - '>='
81
60
  - !ruby/object:Gem::Version
82
61
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
62
  type: :development
85
63
  prerelease: false
86
- name: fakefs
87
64
  version_requirements: !ruby/object:Gem::Requirement
88
65
  requirements:
89
- - - ! '>='
66
+ - - '>='
90
67
  - !ruby/object:Gem::Version
91
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fakeweb
92
71
  requirement: !ruby/object:Gem::Requirement
93
72
  requirements:
94
- - - ! '>='
73
+ - - '>='
95
74
  - !ruby/object:Gem::Version
96
75
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
76
  type: :development
99
77
  prerelease: false
100
- name: fakeweb
101
78
  version_requirements: !ruby/object:Gem::Requirement
102
79
  requirements:
103
- - - ! '>='
80
+ - - '>='
104
81
  - !ruby/object:Gem::Version
105
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: wijet-thor
106
85
  requirement: !ruby/object:Gem::Requirement
107
86
  requirements:
108
- - - ! '>='
87
+ - - ~>
109
88
  - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
89
+ version: 0.14.10
112
90
  type: :runtime
113
91
  prerelease: false
114
- name: wijet-thor
115
92
  version_requirements: !ruby/object:Gem::Requirement
116
93
  requirements:
117
94
  - - ~>
118
95
  - !ruby/object:Gem::Version
119
96
  version: 0.14.10
97
+ - !ruby/object:Gem::Dependency
98
+ name: rest-client
120
99
  requirement: !ruby/object:Gem::Requirement
121
100
  requirements:
122
- - - ~>
101
+ - - '>='
123
102
  - !ruby/object:Gem::Version
124
- version: 0.14.10
125
- - !ruby/object:Gem::Dependency
103
+ version: '0'
126
104
  type: :runtime
127
105
  prerelease: false
128
- name: rest-client
129
106
  version_requirements: !ruby/object:Gem::Requirement
130
107
  requirements:
131
- - - ! '>='
108
+ - - '>='
132
109
  - !ruby/object:Gem::Version
133
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mime-types
134
113
  requirement: !ruby/object:Gem::Requirement
135
114
  requirements:
136
- - - ! '>='
115
+ - - ~>
137
116
  - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
117
+ version: '1.16'
140
118
  type: :runtime
141
119
  prerelease: false
142
- name: mime-types
143
120
  version_requirements: !ruby/object:Gem::Requirement
144
121
  requirements:
145
122
  - - ~>
146
123
  - !ruby/object:Gem::Version
147
124
  version: '1.16'
125
+ - !ruby/object:Gem::Dependency
126
+ name: json
148
127
  requirement: !ruby/object:Gem::Requirement
149
128
  requirements:
150
- - - ~>
129
+ - - '>='
151
130
  - !ruby/object:Gem::Version
152
- version: '1.16'
153
- - !ruby/object:Gem::Dependency
131
+ version: '0'
154
132
  type: :runtime
155
133
  prerelease: false
156
- name: json
157
134
  version_requirements: !ruby/object:Gem::Requirement
158
135
  requirements:
159
- - - ! '>='
136
+ - - '>='
160
137
  - !ruby/object:Gem::Version
161
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: progressbar
162
141
  requirement: !ruby/object:Gem::Requirement
163
142
  requirements:
164
- - - ! '>='
143
+ - - '>='
165
144
  - !ruby/object:Gem::Version
166
145
  version: '0'
167
- - !ruby/object:Gem::Dependency
168
146
  type: :runtime
169
147
  prerelease: false
170
- name: progressbar
171
148
  version_requirements: !ruby/object:Gem::Requirement
172
149
  requirements:
173
- - - ! '>='
150
+ - - '>='
174
151
  - !ruby/object:Gem::Version
175
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: launchy
176
155
  requirement: !ruby/object:Gem::Requirement
177
156
  requirements:
178
- - - ! '>='
157
+ - - '>='
179
158
  - !ruby/object:Gem::Version
180
159
  version: '0'
181
- - !ruby/object:Gem::Dependency
182
160
  type: :runtime
183
161
  prerelease: false
184
- name: launchy
185
162
  version_requirements: !ruby/object:Gem::Requirement
186
163
  requirements:
187
- - - ! '>='
164
+ - - '>='
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: netrc
190
169
  requirement: !ruby/object:Gem::Requirement
191
170
  requirements:
192
- - - ! '>='
171
+ - - '>='
193
172
  - !ruby/object:Gem::Version
194
173
  version: '0'
195
- - !ruby/object:Gem::Dependency
196
174
  type: :runtime
197
175
  prerelease: false
198
- name: netrc
199
176
  version_requirements: !ruby/object:Gem::Requirement
200
177
  requirements:
201
- - - ! '>='
202
- - !ruby/object:Gem::Version
203
- version: '0'
204
- requirement: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ! '>='
178
+ - - '>='
207
179
  - !ruby/object:Gem::Version
208
180
  version: '0'
209
181
  description: Tool for managing applications and clouds at shellycloud.com
@@ -310,44 +282,18 @@ require_paths:
310
282
  - lib
311
283
  required_ruby_version: !ruby/object:Gem::Requirement
312
284
  requirements:
313
- - - ! '>='
285
+ - - '>='
314
286
  - !ruby/object:Gem::Version
315
287
  version: '0'
316
288
  required_rubygems_version: !ruby/object:Gem::Requirement
317
289
  requirements:
318
- - - ! '>='
290
+ - - '>='
319
291
  - !ruby/object:Gem::Version
320
292
  version: '0'
321
293
  requirements: []
322
294
  rubyforge_project: shelly
323
- rubygems_version: 2.1.5
295
+ rubygems_version: 2.1.11
324
296
  signing_key:
325
297
  specification_version: 4
326
298
  summary: Shelly Cloud command line tool
327
- test_files:
328
- - spec/helpers.rb
329
- - spec/input_faker.rb
330
- - spec/shelly/app_spec.rb
331
- - spec/shelly/backup_spec.rb
332
- - spec/shelly/cli/backup_spec.rb
333
- - spec/shelly/cli/cert_spec.rb
334
- - spec/shelly/cli/config_spec.rb
335
- - spec/shelly/cli/database_spec.rb
336
- - spec/shelly/cli/deploy_spec.rb
337
- - spec/shelly/cli/file_spec.rb
338
- - spec/shelly/cli/logs_spec.rb
339
- - spec/shelly/cli/main_spec.rb
340
- - spec/shelly/cli/organization_spec.rb
341
- - spec/shelly/cli/runner_spec.rb
342
- - spec/shelly/cli/user_spec.rb
343
- - spec/shelly/client_spec.rb
344
- - spec/shelly/cloudfile_spec.rb
345
- - spec/shelly/download_progress_bar_spec.rb
346
- - spec/shelly/model_spec.rb
347
- - spec/shelly/organization_spec.rb
348
- - spec/shelly/ssh_key_spec.rb
349
- - spec/shelly/ssh_keys_spec.rb
350
- - spec/shelly/structure_validator_spec.rb
351
- - spec/shelly/user_spec.rb
352
- - spec/spec_helper.rb
353
- - spec/thor/options_spec.rb
299
+ test_files: []