MuranoCLI 3.2.0.beta.9 → 3.2.1.pre.beta.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Rakefile +5 -0
  4. data/dockers/README.rst +7 -0
  5. data/dockers/RELEASE.rst +6 -3
  6. data/dockers/docker-test.sh +45 -17
  7. data/docs/completions/murano_completion-bash +211 -86
  8. data/lib/MrMurano/Account.rb +72 -4
  9. data/lib/MrMurano/Business.rb +163 -2
  10. data/lib/MrMurano/Commander-Entry.rb +1 -2
  11. data/lib/MrMurano/Config.rb +19 -18
  12. data/lib/MrMurano/Content.rb +26 -19
  13. data/lib/MrMurano/Gateway.rb +51 -10
  14. data/lib/MrMurano/ReCommander.rb +1 -1
  15. data/lib/MrMurano/Solution-Services.rb +80 -35
  16. data/lib/MrMurano/Solution-Users.rb +1 -0
  17. data/lib/MrMurano/SyncRoot.rb +10 -3
  18. data/lib/MrMurano/SyncUpDown-Core.rb +47 -36
  19. data/lib/MrMurano/SyncUpDown-Item.rb +46 -14
  20. data/lib/MrMurano/SyncUpDown.rb +22 -20
  21. data/lib/MrMurano/Webservice-Endpoint.rb +20 -18
  22. data/lib/MrMurano/Webservice-File.rb +63 -20
  23. data/lib/MrMurano/commands/business.rb +14 -1
  24. data/lib/MrMurano/commands/child.rb +148 -0
  25. data/lib/MrMurano/commands/devices.rb +298 -149
  26. data/lib/MrMurano/commands/element.rb +2 -1
  27. data/lib/MrMurano/commands/globals.rb +3 -0
  28. data/lib/MrMurano/commands/network.rb +152 -33
  29. data/lib/MrMurano/commands/sync.rb +2 -2
  30. data/lib/MrMurano/commands.rb +1 -0
  31. data/lib/MrMurano/verbosing.rb +13 -2
  32. data/lib/MrMurano/version.rb +1 -1
  33. data/spec/Account_spec.rb +43 -11
  34. data/spec/Content_spec.rb +5 -3
  35. data/spec/GatewayBase_spec.rb +1 -1
  36. data/spec/GatewayDevice_spec.rb +47 -8
  37. data/spec/GatewayResource_spec.rb +1 -1
  38. data/spec/GatewaySettings_spec.rb +1 -1
  39. data/spec/HttpAuthed_spec.rb +17 -3
  40. data/spec/ProjectFile_spec.rb +59 -23
  41. data/spec/Setting_spec.rb +2 -1
  42. data/spec/Solution-ServiceConfig_spec.rb +1 -1
  43. data/spec/Solution-ServiceEventHandler_spec.rb +27 -20
  44. data/spec/Solution-ServiceModules_spec.rb +7 -5
  45. data/spec/Solution-UsersRoles_spec.rb +7 -1
  46. data/spec/Solution_spec.rb +9 -1
  47. data/spec/SyncRoot_spec.rb +5 -5
  48. data/spec/SyncUpDown_spec.rb +262 -211
  49. data/spec/Verbosing_spec.rb +49 -8
  50. data/spec/Webservice-Cors_spec.rb +10 -1
  51. data/spec/Webservice-Endpoint_spec.rb +84 -65
  52. data/spec/Webservice-File_spec.rb +16 -11
  53. data/spec/Webservice-Setting_spec.rb +7 -1
  54. data/spec/_workspace.rb +9 -0
  55. data/spec/cmd_business_spec.rb +5 -10
  56. data/spec/cmd_common.rb +67 -32
  57. data/spec/cmd_config_spec.rb +9 -14
  58. data/spec/cmd_content_spec.rb +15 -26
  59. data/spec/cmd_cors_spec.rb +9 -12
  60. data/spec/cmd_device_spec.rb +31 -45
  61. data/spec/cmd_domain_spec.rb +12 -10
  62. data/spec/cmd_element_spec.rb +18 -17
  63. data/spec/cmd_exchange_spec.rb +1 -4
  64. data/spec/cmd_init_spec.rb +56 -72
  65. data/spec/cmd_keystore_spec.rb +17 -26
  66. data/spec/cmd_link_spec.rb +13 -17
  67. data/spec/cmd_password_spec.rb +9 -10
  68. data/spec/cmd_setting_application_spec.rb +95 -68
  69. data/spec/cmd_setting_product_spec.rb +59 -37
  70. data/spec/cmd_status_spec.rb +46 -84
  71. data/spec/cmd_syncdown_application_spec.rb +28 -50
  72. data/spec/cmd_syncdown_both_spec.rb +44 -93
  73. data/spec/cmd_syncdown_unit_spec.rb +858 -0
  74. data/spec/cmd_syncup_spec.rb +21 -56
  75. data/spec/cmd_token_spec.rb +0 -3
  76. data/spec/cmd_usage_spec.rb +15 -10
  77. data/spec/dry_run_formatter.rb +1 -0
  78. data/spec/fixtures/dumped_config +4 -4
  79. data/spec/spec_helper.rb +3 -0
  80. metadata +4 -2
@@ -6,7 +6,9 @@
6
6
  # Unauthorized copying of this file is strictly prohibited.
7
7
 
8
8
  require 'tempfile'
9
+ require 'webmock'
9
10
  require 'yaml'
11
+
10
12
  require 'MrMurano/version'
11
13
  require 'MrMurano/HttpAuthed'
12
14
  require 'MrMurano/ProjectFile'
@@ -17,8 +19,8 @@ require 'HttpAuthed_spec'
17
19
 
18
20
  RSpec.describe MrMurano::Webservice::Settings do
19
21
  include_context 'WORKSPACE'
22
+
20
23
  before(:example) do
21
- MrMurano::SyncRoot.instance.reset
22
24
  $cfg = MrMurano::Config.new
23
25
  $cfg.load
24
26
  $cfg['net.host'] = 'bizapi.hosted.exosite.io'
@@ -32,6 +34,10 @@ RSpec.describe MrMurano::Webservice::Settings do
32
34
  @base_uri = "#{$cfg['net.protocol']}://#{$cfg['net.host']}/api:1/solution/XYZ/cors"
33
35
  end
34
36
 
37
+ after(:example) do
38
+ WebMock.reset!
39
+ end
40
+
35
41
  it 'initializes' do
36
42
  uri = @srv.endpoint('/')
37
43
  expect(uri.to_s).to eq("#{@base_uri}/")
data/spec/_workspace.rb CHANGED
@@ -10,6 +10,15 @@ require 'pathname'
10
10
  require 'tmpdir'
11
11
 
12
12
  RSpec.shared_context 'WORKSPACE' do
13
+ before(:context) do
14
+ @timeit_time0 = Time.now
15
+ end
16
+
17
+ after(:context) do
18
+ elapsed_secs = Time.now - @timeit_time0
19
+ puts "\n .. elapsed: #{elapsed_secs.round(2)} secs."
20
+ end
21
+
13
22
  around(:example) do |ex|
14
23
  @testdir = Pathname.new(Dir.pwd).realpath
15
24
  $exited_abnormally = true
@@ -20,49 +20,44 @@ RSpec.describe 'murano business', :cmd, :needs_password do
20
20
 
21
21
  context 'list' do
22
22
  it 'as table' do
23
- out, err, status = Open3.capture3(capcmd('murano', 'business', 'list'))
23
+ out, err = murano_command_run('business list')
24
24
  expect(err).to eq('')
25
25
  olines = out.lines
26
26
  expect(olines[0]).to match(/^(\+-+){3}\+$/)
27
27
  expect(olines[1]).to match(/^\| bizid\s+\| role\s+\| name\s+\|$/)
28
28
  expect(olines[2]).to match(/^(\+-+){3}\+$/)
29
29
  expect(olines[-1]).to match(/^(\+-+){3}\+$/)
30
- expect(status.exitstatus).to eq(0)
31
30
  end
32
31
 
33
32
  it 'as json' do
34
- out, err, status = Open3.capture3(capcmd('murano', 'business', 'list', '-c', 'outformat=json'))
33
+ out, err = murano_command_run('business list', '-c', 'outformat=json')
35
34
  expect(err).to eq('')
36
35
  expect { JSON.parse(out) }.to_not raise_error
37
- expect(status.exitstatus).to eq(0)
38
36
  end
39
37
 
40
38
  it 'only ids' do
41
- out, err, status = Open3.capture3(capcmd('murano', 'business', 'list', '--idonly'))
39
+ out, err = murano_command_run('business list', '--idonly')
42
40
  expect(err).to eq('')
43
41
  expect(out).to match(/^(\S+\s)*\S+$/)
44
- expect(status.exitstatus).to eq(0)
45
42
  end
46
43
 
47
44
  it 'output to file' do
48
- out, err, status = Open3.capture3(capcmd('murano', 'business', 'list', '--idonly', '-o', 'bob'))
45
+ out, err = murano_command_run('business list', '--idonly', '-o', 'bob')
49
46
  expect(err).to eq('')
50
47
  expect(out).to eq('')
51
- expect(status.exitstatus).to eq(0)
52
48
  expect(File.exist?('bob')).to be true
53
49
  data = IO.read('bob')
54
50
  expect(data).to match(/^(\S+\s)*\S+$/)
55
51
  end
56
52
 
57
53
  it 'fewer fields' do
58
- out, err, status = Open3.capture3(capcmd('murano', 'business', 'list', '--brief'))
54
+ out, err = murano_command_run('business list', '--brief')
59
55
  expect(err).to eq('')
60
56
  olines = out.lines
61
57
  expect(olines[0]).to match(/^(\+-+)+\+$/)
62
58
  expect(olines[1]).to match(/^(\| \S+\s+)+\|$/)
63
59
  expect(olines[2]).to match(/^(\+-+)+\+$/)
64
60
  expect(olines[-1]).to match(/^(\+-+)+\+$/)
65
- expect(status.exitstatus).to eq(0)
66
61
  end
67
62
  end
68
63
  end
data/spec/cmd_common.rb CHANGED
@@ -10,7 +10,9 @@ require 'highline'
10
10
  require 'highline/import'
11
11
  require 'os'
12
12
  require 'pathname'
13
+ require 'rainbow'
13
14
  require 'shellwords'
15
+ require 'time'
14
16
  require 'timeout'
15
17
  require 'tmpdir'
16
18
  require 'webmock/rspec'
@@ -23,30 +25,39 @@ require 'MrMurano/HttpAuthed'
23
25
  # - Note that this comes before importing Commander.
24
26
  $exited_abnormally = false
25
27
 
28
+ $catpured_io = false
29
+
26
30
  def capture_stdio
31
+ return if $catpured_io
27
32
  $murcli_wasout = $stdout
28
33
  $murcli_waserr = $stderr
29
34
  $murcli_wasterm = $terminal
35
+ $catpured_io = true
30
36
  end
31
37
  capture_stdio
32
38
 
33
39
  def restore_stdio
40
+ return unless $catpured_io
34
41
  $stdout = $murcli_wasout
35
42
  $stderr = $murcli_waserr
36
43
  $terminal = $murcli_wasterm
44
+ $murcli_wasout = nil
45
+ $murcli_waserr = nil
46
+ $murcli_wasterm = nil
47
+ $catpured_io = false
37
48
  end
38
49
 
39
50
  at_exit do
40
51
  if $exited_abnormally
41
52
  restore_stdio
42
53
  warn('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
43
- warn(%( ____ ))
44
- warn(%{ ,%( Y`. })
45
- warn(%( / \ ))
46
- warn(%( \ () () / ))
47
- warn(%{ `. /\ ,%( })
48
- warn(%( 8====| "" |====8 ))
49
- warn(%( `LLLU' ))
54
+ warn(%( ____ ))
55
+ warn(%{ ,%( Y`. })
56
+ warn(%( / \ ))
57
+ warn(%( \ () () / ))
58
+ warn(%{ `. /\ ,%( })
59
+ warn(%( 8====| "" |====8 ))
60
+ warn(%( `LLLU' ))
50
61
  warn(%( ))
51
62
  warn('¡Unexpected spec exit killed rspec!')
52
63
  warn('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
@@ -159,9 +170,9 @@ RSpec.shared_context 'CI_CMD' do
159
170
  # *** Utility fcns: Murano Solutions management: create/delete/expunge.
160
171
 
161
172
  def murano_solutions_expunge_yes
162
- out, err, status = Open3.capture3(
163
- capcmd('murano', 'solutions', 'expunge', '-y')
164
- )
173
+ # (lb): Cannot really use murano_command_run or murano_command_exits
174
+ # because we don't know if it'll exit or not.
175
+ out, err, status = Open3.capture3(capcmd('murano', 'solutions', 'expunge', '-y'))
165
176
  expect(out).to \
166
177
  eq('').or \
167
178
  eq("No solutions found\n").or \
@@ -175,53 +186,45 @@ RSpec.shared_context 'CI_CMD' do
175
186
  murano_solutions_expunge_yes if defined?(PRE_EXPUNGE) && PRE_EXPUNGE
176
187
 
177
188
  @proj_name_prod = rname('MurCLITestProd')
178
- out, err, status = Open3.capture3(
179
- capcmd('murano', 'product', 'create', @proj_name_prod, '--save')
189
+ # NOTE: Do not use alias, which resolves to base command, but without options.
190
+ # E.g., use 'solution create', ...; and not 'product create'.
191
+ out, err = murano_command_run(
192
+ 'solution create', '--type', 'product', @proj_name_prod, '--save',
180
193
  )
181
194
  expect(err).to eq('')
182
195
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
183
- expect(status.exitstatus).to eq(0)
184
196
 
185
197
  @proj_name_appy = rname('MurCLITestAppy')
186
- out, err, status = Open3.capture3(
187
- capcmd('murano', 'application', 'create', @proj_name_appy, '--save')
198
+ out, err = murano_command_run(
199
+ 'solution create', '--type', 'application', @proj_name_appy, '--save',
188
200
  )
189
201
  expect(err).to eq('')
190
202
  soln_id = out
191
203
  expect(soln_id.chomp).to match(/^[a-zA-Z0-9]+$/)
192
- expect(status.exitstatus).to eq(0)
193
204
 
194
205
  project_up_link unless skip_link
195
206
  end
196
207
 
197
208
  def project_up_link
198
- out, err, status = Open3.capture3(capcmd('murano', 'assign', 'set'))
199
- #expect(out).to a_string_starting_with("Linked product #{@proj_name_prod}")
209
+ out, err = murano_command_run('assign set')
200
210
  olines = out.lines
201
211
  expect(strip_fancy(olines[0])).to eq(
202
212
  "Linked '#{@proj_name_prod}' to '#{@proj_name_appy}'\n"
203
213
  )
204
214
  expect(olines[1]).to eq("Created default event handler\n")
205
215
  expect(err).to eq('')
206
- expect(status.exitstatus).to eq(0)
207
216
  end
208
217
 
209
218
  def project_down
210
219
  return if defined?(PRE_EXPUNGE) && PRE_EXPUNGE
211
220
 
212
- out, err, status = Open3.capture3(
213
- capcmd('murano', 'solution', 'delete', @proj_name_appy, '-y')
214
- )
221
+ out, err = murano_command_run('solution delete', @proj_name_appy, '-y')
215
222
  expect(out).to eq('')
216
223
  expect(err).to eq('')
217
- expect(status.exitstatus).to eq(0)
218
224
 
219
- out, err, status = Open3.capture3(
220
- capcmd('murano', 'solution', 'delete', @proj_name_prod, '-y')
221
- )
225
+ out, err = murano_command_run('solution delete', @proj_name_prod, '-y')
222
226
  expect(out).to eq('')
223
227
  expect(err).to eq('')
224
- expect(status.exitstatus).to eq(0)
225
228
  end
226
229
 
227
230
  # Utility fcns: Strings.
@@ -239,7 +242,7 @@ RSpec.shared_context 'CI_CMD' do
239
242
  end
240
243
 
241
244
  def strip_color(str)
242
- str.gsub(/\e\[(\d+)m/, '')
245
+ str.gsub(/\e\[[;0-9]+m/, '')
243
246
  end
244
247
 
245
248
  def strip_fancy(str)
@@ -268,6 +271,10 @@ RSpec.shared_context 'CI_CMD' do
268
271
  murano_command_runner(cmd, *args)
269
272
  end
270
273
 
274
+ def murano_command_run_gentle(cmd, *args)
275
+ murano_command_runner(cmd, *args, skip_cfg: true)
276
+ end
277
+
271
278
  def murano_command_exits(cmd, *args)
272
279
  murano_command_runner(cmd, *args, wont_run: true)
273
280
  end
@@ -276,7 +283,9 @@ RSpec.shared_context 'CI_CMD' do
276
283
  murano_command_runner(cmd, *args, wont_parse: true)
277
284
  end
278
285
 
279
- def murano_command_runner(cmd, *args, wont_run: false, wont_parse: false)
286
+ def murano_command_runner(
287
+ cmd, *args, wont_run: false, wont_parse: false, skip_cfg: false
288
+ )
280
289
  # This is a functional test, so tell WebMock to back off.
281
290
  allow_net_conn = WebMock::Config.instance.allow_net_connect != false
282
291
  WebMock.allow_net_connect!
@@ -303,10 +312,17 @@ RSpec.shared_context 'CI_CMD' do
303
312
  # at_exit, it uses runner.command_exit to tell ReCommander's at_exit
304
313
  # monkey patch not to call Commander.run!. Via rspec, we don't use the
305
314
  # at_exit hook, or ReCommander.
306
- $cfg = MrMurano::Config.new(::Commander::Runner.instance)
307
- $cfg.load
308
- $cfg['tool.no-progress'] = true
315
+ unless skip_cfg
316
+ $cfg = MrMurano::Config.new(::Commander::Runner.instance)
317
+ $cfg.load
318
+ $cfg['tool.no-progress'] = true
319
+
320
+ # In case the test runner installed a project file.
321
+ $project = MrMurano::ProjectFile.new
322
+ $project.load
323
+ end
309
324
  $cfg.validate_cmd
325
+
310
326
  runner = ::Commander::Runner.instance
311
327
  unless defined?(runner.command_exit) && runner.command_exit
312
328
  # (lb): Commander's at_exit hook calls runner.run! which runs the
@@ -314,6 +330,7 @@ RSpec.shared_context 'CI_CMD' do
314
330
  # few different ways to reset Runner.instance, but nothing worked;
315
331
  # our best bet is to just call the command directly.
316
332
  the_cmd = command(cmd.to_sym)
333
+ raise "Specified command not recognized! “#{cmd}”" if the_cmd.nil?
317
334
  when_called = the_cmd.peek_when_called.dup
318
335
 
319
336
  runner.force_args(args.dup)
@@ -332,6 +349,12 @@ RSpec.shared_context 'CI_CMD' do
332
349
  # This is unexpected. Leave $exited_abnormally so we warn the user.
333
350
  restore_stdio
334
351
  raise
352
+ rescue SystemExit => _err
353
+ # This happens if the CLI calls exit, but the test runner was not
354
+ # expecting it to exit (because otherwise the test runner would
355
+ # have called this method with wont_run: true). So long as our
356
+ # $exited_abnormally works as intended, we have nothing to do.
357
+ raise
335
358
  end
336
359
  end
337
360
  end
@@ -350,6 +373,9 @@ RSpec.shared_context 'CI_CMD' do
350
373
 
351
374
  WebMock.disable_net_connect! unless allow_net_conn
352
375
 
376
+ HighLine.use_color = true
377
+ Rainbow.enabled = true
378
+
353
379
  [strip_color(tmpout.string), strip_color(tmperr.string)]
354
380
  end
355
381
 
@@ -363,6 +389,15 @@ RSpec.shared_context 'CI_CMD' do
363
389
 
364
390
  # *** before() and around()
365
391
 
392
+ before(:context) do
393
+ @timeit_time0 = Time.now
394
+ end
395
+
396
+ after(:context) do
397
+ elapsed_secs = Time.now - @timeit_time0
398
+ puts "\n .. elapsed: #{elapsed_secs.round(2)} secs."
399
+ end
400
+
366
401
  # Before: Load Config.
367
402
  before(:example) do
368
403
  $cfg = MrMurano::Config.new
@@ -13,17 +13,15 @@ RSpec.describe 'murano config', :cmd do
13
13
  include_context 'CI_CMD'
14
14
 
15
15
  it 'Needs a key' do
16
- out, err, status = Open3.capture3(capcmd('murano', 'config'))
17
- expect(status).to eq(0)
18
- expect(out).to eq("\e[31mNeed a config key\e[0m\n")
16
+ out, err = murano_command_run('config')
17
+ expect(out).to eq("Need a config key\n")
19
18
  expect(err).to eq('')
20
19
  end
21
20
 
22
21
  it 'Sets a key' do
23
- out, err, status = Open3.capture3(capcmd(%w[murano config bob build]))
22
+ out, err = murano_command_run('config', 'bob', 'build')
24
23
  expect(out).to eq('')
25
- expect(err).to eq('')
26
- expect(status).to eq(0)
24
+ expect(err).to eq("WARNING: Unknown key ‘tool.bob’ set to ‘build’\n")
27
25
 
28
26
  afile = IO.read(File.join(@tmpdir, '.murano/config'))
29
27
  bfile = (@testdir + 'spec' + 'fixtures' + 'mrmuranorc_tool_bob').read
@@ -33,10 +31,9 @@ RSpec.describe 'murano config', :cmd do
33
31
  it 'Sets a user key' do
34
32
  user_cfg = File.join(ENV['HOME'], '.murano', 'config')
35
33
  File.unlink(user_cfg) if File.exist? user_cfg
36
- out, err, status = Open3.capture3(capcmd(%w[murano config bob build --user]))
37
- expect(status).to eq(0)
34
+ out, err = murano_command_run('config', 'bob', 'build', '--user')
38
35
  expect(out).to eq('')
39
- expect(err).to eq('')
36
+ expect(err).to eq("WARNING: Unknown key ‘tool.bob’ set to ‘build’\n")
40
37
 
41
38
  afile = IO.read(user_cfg)
42
39
  bfile = (@testdir + 'spec' + 'fixtures' + 'mrmuranorc_tool_bob').read
@@ -50,10 +47,9 @@ RSpec.describe 'murano config', :cmd do
50
47
  File.join(@tmpdir, '.murano', 'config'),
51
48
  verbose: true
52
49
  )
53
- out, err, status = Open3.capture3(capcmd(%w[murano config --project doThisTest.bob]))
54
- expect(status).to eq(0)
50
+ out, err = murano_command_run('config', '--project', 'doThisTest.bob')
55
51
  expect(out).to eq("build\n")
56
- expect(err).to eq('')
52
+ expect(err).to eq("WARNING: Unknown key ‘doThisTest.bob’ set to ‘build’\n")
57
53
  end
58
54
 
59
55
  it 'Removes a key' do
@@ -64,8 +60,7 @@ RSpec.describe 'murano config', :cmd do
64
60
  rcf,
65
61
  verbose: true
66
62
  )
67
- out, err, status = Open3.capture3(capcmd(%w[murano config --project --unset doThisTest.bob]))
68
- expect(status).to eq(0)
63
+ out, err = murano_command_run('config', '--project', '--unset', 'doThisTest.bob')
69
64
  expect(out).to eq('')
70
65
  expect(err).to eq('')
71
66
 
@@ -15,25 +15,23 @@ RSpec.describe 'murano content', :cmd, :needs_password do
15
15
 
16
16
  before(:example) do
17
17
  @product_name = rname('contestTest')
18
- out, err, status = Open3.capture3(
19
- capcmd('murano', 'product', 'create', @product_name, '--save')
18
+ out, err = murano_command_run(
19
+ 'solution create', '--type', 'product', @product_name, '--save',
20
20
  )
21
21
  expect(err).to eq('')
22
22
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
23
- expect(status.exitstatus).to eq(0)
24
23
  end
25
24
 
26
25
  after(:example) do
27
- out, err, status = Open3.capture3(
28
- capcmd('murano', 'solution', 'delete', '--yes', @product_name)
26
+ out, err = murano_command_run(
27
+ 'solution delete', '--yes', @product_name,
29
28
  )
30
29
  expect(out).to eq('')
31
30
  expect(err).to eq('')
32
- expect(status.exitstatus).to eq(0)
33
31
  end
34
32
 
35
33
  it 'life cycle', :club_10s do
36
- out, err, status = Open3.capture3(capcmd('murano', 'content', 'list'))
34
+ out, err = murano_command_run('content list')
37
35
  #expect(out.lines).to match(
38
36
  # [
39
37
  # a_string_matching(/^(\+-+){2}\+$/),
@@ -44,18 +42,16 @@ RSpec.describe 'murano content', :cmd, :needs_password do
44
42
  #)
45
43
  #expect(err).to eq('')
46
44
  expect(out.lines).to match([])
47
- expect(err).to eq("\e[33mDid not find any content\e[0m\n")
48
- expect(status.exitstatus).to eq(0)
45
+ expect(err).to eq("Did not find any content\n")
49
46
 
50
47
  FileUtils.copy(File.join(@testdir, 'spec/fixtures/dumped_config'), 'myFile')
51
- out, err, status = Open3.capture3(
52
- capcmd('murano', 'content', 'upload', 'myFile', '--tags', 'random=junk')
48
+ out, err = murano_command_run(
49
+ 'content upload', 'myFile', '--tags', 'random=junk',
53
50
  )
54
51
  expect(out).to eq('')
55
52
  expect(err).to eq('')
56
- expect(status.exitstatus).to eq(0)
57
53
 
58
- out, err, status = Open3.capture3(capcmd('murano', 'content', 'list'))
54
+ out, err = murano_command_run('content list')
59
55
  expect(err).to eq('')
60
56
  expect(out.lines).to match(
61
57
  [
@@ -66,9 +62,8 @@ RSpec.describe 'murano content', :cmd, :needs_password do
66
62
  a_string_matching(/^(\+-+){2}\+$/),
67
63
  ]
68
64
  )
69
- expect(status.exitstatus).to eq(0)
70
65
 
71
- out, err, status = Open3.capture3(capcmd('murano', 'content', 'info', 'myFile'))
66
+ out, err = murano_command_run('content info', 'myFile')
72
67
  expect(err).to eq('')
73
68
  expect { out = YAML.load(out) }.to_not raise_error
74
69
  expect(out).to match(
@@ -80,27 +75,22 @@ RSpec.describe 'murano content', :cmd, :needs_password do
80
75
  'random' => 'junk',
81
76
  }
82
77
  )
83
- expect(status.exitstatus).to eq(0)
84
78
 
85
- out, err, status = Open3.capture3(
86
- capcmd('murano', 'content', 'download', 'myFile', '-o', 'testDown')
79
+ out, err = murano_command_run(
80
+ 'content download', 'myFile', '-o', 'testDown',
87
81
  )
88
82
  expect(out).to eq('')
89
83
  expect(err).to eq('')
90
- expect(status.exitstatus).to eq(0)
91
84
  expect(File.exist?('testDown')).to be true
92
85
  dcf = IO.read('myFile')
93
86
  tdf = IO.read('testDown')
94
87
  expect(tdf).to eq(dcf)
95
88
 
96
- out, err, status = Open3.capture3(
97
- capcmd('murano', 'content', 'delete', 'myFile', '-y')
98
- )
89
+ murano_command_run('content delete', 'myFile', '-y')
99
90
  expect(out).to eq('')
100
91
  expect(err).to eq('')
101
- expect(status.exitstatus).to eq(0)
102
92
 
103
- out, err, status = Open3.capture3(capcmd('murano', 'content', 'list'))
93
+ out, err = murano_command_run('content list')
104
94
  #expect(out.lines).to match(
105
95
  # [
106
96
  # a_string_matching(/^(\+-+){2}\+$/),
@@ -111,8 +101,7 @@ RSpec.describe 'murano content', :cmd, :needs_password do
111
101
  #)
112
102
  #expect(err).to eq('')
113
103
  expect(out.lines).to match([])
114
- expect(err).to eq("\e[33mDid not find any content\e[0m\n")
115
- expect(status.exitstatus).to eq(0)
104
+ expect(err).to eq("Did not find any content\n")
116
105
  end
117
106
  end
118
107