MuranoCLI 3.0.2 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +30 -59
  3. data/Gemfile +9 -3
  4. data/MuranoCLI.gemspec +11 -4
  5. data/bin/murano +2 -90
  6. data/lib/MrMurano.rb +5 -1
  7. data/lib/MrMurano/{spec_commander.rb → Commander-Entry.rb} +1 -2
  8. data/lib/MrMurano/Solution.rb +12 -15
  9. data/lib/MrMurano/SolutionId.rb +1 -5
  10. data/lib/MrMurano/SyncAllowed.rb +2 -2
  11. data/lib/MrMurano/SyncUpDown.rb +6 -3
  12. data/lib/MrMurano/progress.rb +11 -2
  13. data/lib/MrMurano/verbosing.rb +3 -2
  14. data/lib/MrMurano/version.rb +2 -2
  15. data/spec/Account-Passwords_spec.rb +34 -48
  16. data/spec/Account_spec.rb +58 -63
  17. data/spec/Business_spec.rb +151 -139
  18. data/spec/ConfigFile_spec.rb +15 -11
  19. data/spec/ConfigMigrate_spec.rb +23 -12
  20. data/spec/Config_spec.rb +57 -54
  21. data/spec/Content_spec.rb +233 -201
  22. data/spec/GatewayBase_spec.rb +35 -27
  23. data/spec/GatewayDevice_spec.rb +149 -149
  24. data/spec/GatewayResource_spec.rb +115 -102
  25. data/spec/GatewaySettings_spec.rb +69 -62
  26. data/spec/Http_spec.rb +66 -56
  27. data/spec/MakePretties_spec.rb +82 -73
  28. data/spec/Mock_spec.rb +38 -29
  29. data/spec/ProjectFile_spec.rb +118 -106
  30. data/spec/Setting_spec.rb +24 -15
  31. data/spec/Solution-ServiceConfig_spec.rb +168 -140
  32. data/spec/Solution-ServiceEventHandler_spec.rb +186 -188
  33. data/spec/Solution-ServiceModules_spec.rb +314 -232
  34. data/spec/Solution-UsersRoles_spec.rb +136 -86
  35. data/spec/Solution_spec.rb +78 -50
  36. data/spec/SyncRoot_spec.rb +26 -24
  37. data/spec/SyncUpDown_spec.rb +268 -249
  38. data/spec/Verbosing_spec.rb +95 -93
  39. data/spec/Webservice-Cors_spec.rb +141 -95
  40. data/spec/Webservice-Endpoint_spec.rb +382 -346
  41. data/spec/Webservice-File_spec.rb +148 -109
  42. data/spec/Webservice-Setting_spec.rb +47 -41
  43. data/spec/cmd_business_spec.rb +17 -17
  44. data/spec/cmd_common.rb +27 -7
  45. data/spec/cmd_config_spec.rb +31 -20
  46. data/spec/cmd_content_spec.rb +80 -68
  47. data/spec/cmd_cors_spec.rb +11 -5
  48. data/spec/cmd_device_spec.rb +16 -14
  49. data/spec/cmd_domain_spec.rb +10 -8
  50. data/spec/cmd_exchange_spec.rb +3 -3
  51. data/spec/cmd_init_spec.rb +100 -101
  52. data/spec/cmd_keystore_spec.rb +17 -12
  53. data/spec/cmd_link_spec.rb +22 -37
  54. data/spec/cmd_password_spec.rb +11 -7
  55. data/spec/cmd_setting_application_spec.rb +47 -33
  56. data/spec/cmd_setting_product_spec.rb +32 -27
  57. data/spec/cmd_status_spec.rb +125 -114
  58. data/spec/cmd_syncdown_spec.rb +70 -65
  59. data/spec/cmd_syncup_spec.rb +19 -15
  60. data/spec/cmd_usage_spec.rb +14 -10
  61. metadata +29 -15
@@ -1,12 +1,19 @@
1
+ # Last Modified: 2017.09.13 /coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ # Copyright © 2016-2017 Exosite LLC.
5
+ # License: MIT. See LICENSE.txt.
6
+ # vim:tw=0:ts=2:sw=2:et:ai
7
+
1
8
  require 'fileutils'
9
+ require 'json'
2
10
  require 'open3'
3
11
  require 'pathname'
4
- require 'json'
5
12
  require 'vine'
6
13
  require 'cmd_common'
7
14
 
8
15
  RSpec.describe 'murano setting', :cmd, :needs_password do
9
- include_context "CI_CMD"
16
+ include_context 'CI_CMD'
10
17
 
11
18
  before(:example) do
12
19
  @product_name = rname('settingtest')
@@ -22,16 +29,16 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
22
29
  expect(status.exitstatus).to eq(0)
23
30
  end
24
31
 
25
- context "Writes (using Device2.identity_format)" do
32
+ context 'Writes (using Device2.identity_format)' do
26
33
  before(:example) do
27
34
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'read', 'Device2.identity_format', '-c', 'outformat=json'))
28
35
  expect { @json_before = JSON.parse(out) }.to_not raise_error
29
36
  expect(err).to eq('')
30
37
  expect(status.exitstatus).to eq(0)
31
38
  end
32
- # {"prefix"=>"", "type"=>"opaque", "options"=>{"casing"=>"mixed", "length"=>0}}
39
+ # {'prefix'=>'', 'type'=>'opaque', 'options'=>{'casing'=>'mixed', 'length'=>0}}
33
40
 
34
- it "a string value" do
41
+ it 'a string value' do
35
42
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', 'fidget'))
36
43
  expect(err).to eq('')
37
44
  expect(out).to eq('')
@@ -46,7 +53,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
46
53
  expect(json_after).to match(@json_before)
47
54
  end
48
55
 
49
- it "a forced string value" do
56
+ it 'a forced string value' do
50
57
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', '--string', 'fidget'))
51
58
  expect(err).to eq('')
52
59
  expect(out).to eq('')
@@ -61,8 +68,8 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
61
68
  expect(json_after).to match(@json_before)
62
69
  end
63
70
 
64
- it "a forced string value on STDIN" do
65
- out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', '--string'), :stdin_data=>'fidget')
71
+ it 'a forced string value on STDIN' do
72
+ out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', '--string'), stdin_data: 'fidget')
66
73
  expect(err).to eq('')
67
74
  expect(out).to eq('')
68
75
  expect(status.exitstatus).to eq(0)
@@ -77,7 +84,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
77
84
  end
78
85
 
79
86
  # This may not be testable in integration. (since it does things that get filtered out)
80
- it "all intermediate keys" #do
87
+ it 'all intermediate keys' #do
81
88
  # out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'one.two.three', 'fidget'))
82
89
  # expect(err).to eq('')
83
90
  # expect(out).to eq('')
@@ -92,8 +99,8 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
92
99
  # expect(json_after).to match(@json_before)
93
100
  # end
94
101
 
95
- context "a number value" do
96
- it "integer 12" do
102
+ context 'a number value' do
103
+ it 'integer 12' do
97
104
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num', '12'))
98
105
  expect(err).to eq('')
99
106
  expect(out).to eq('')
@@ -108,7 +115,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
108
115
  expect(json_after).to match(@json_before)
109
116
  end
110
117
 
111
- it "float 12.67" do
118
+ it 'float 12.67' do
112
119
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num', '12.67'))
113
120
  expect(err).to eq('')
114
121
  expect(out).to eq('')
@@ -123,15 +130,15 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
123
130
  expect(json_after).to match(@json_before)
124
131
  end
125
132
 
126
- it "fiftyHalf" do
133
+ it 'fiftyHalf' do
127
134
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num', 'fiftyHalf'))
128
135
  expect(err).to eq("\e[31mValue \"fiftyHalf\" is not a number\e[0m\n")
129
136
  expect(out).to eq('')
130
137
  expect(status.exitstatus).to eq(2)
131
138
  end
132
139
 
133
- it "on STDIN" do
134
- out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num'), :stdin_data=>'12')
140
+ it 'on STDIN' do
141
+ out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num'), stdin_data: '12')
135
142
  expect(err).to eq('')
136
143
  expect(out).to eq('')
137
144
  expect(status.exitstatus).to eq(0)
@@ -146,13 +153,13 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
146
153
  end
147
154
  end
148
155
 
149
- it "a json object blob" #do
156
+ it 'a json object blob' #do
150
157
  # out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'type', 'base16'))
151
158
  # expect(err).to eq('')
152
159
  # expect(out).to eq('')
153
160
  # expect(status.exitstatus).to eq(0)
154
161
  #
155
- # out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options', '--json', '{"casing": "lower", "length": 0}'))
162
+ # out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options', '--json', "{'casing': 'lower', 'length': 0}"))
156
163
  # expect(err).to eq('')
157
164
  # expect(out).to eq('')
158
165
  # expect(status.exitstatus).to eq(0)
@@ -167,10 +174,10 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
167
174
  # expect(json_after).to match(@json_before)
168
175
  # end
169
176
 
170
- it "a json object blob with stdin"
177
+ it 'a json object blob with stdin'
171
178
 
172
179
  # This may not be testable in integration.
173
- it "a dictionary" #do
180
+ it 'a dictionary' #do
174
181
  # out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options', '--dict', 'casing', 'lower'))
175
182
  # expect(err).to eq('')
176
183
  # expect(out).to eq('')
@@ -185,7 +192,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
185
192
  # expect(json_after).to match(@json_before)
186
193
  # end
187
194
 
188
- it "merges into a dictionary" do
195
+ it 'merges into a dictionary' do
189
196
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', '.', '--dict', '--merge', 'prefix', 'tix', 'type', 'base10'))
190
197
  expect(err).to eq('')
191
198
  expect(out).to eq('')
@@ -202,19 +209,17 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
202
209
  end
203
210
  end
204
211
 
205
- context "Writes (using Webservice.cors)" do
212
+ context 'Writes (using Webservice.cors)' do
206
213
  before(:example) do
207
214
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'read', 'Webservice.cors', '-c', 'outformat=json'))
208
215
  expect { @json_before = JSON.parse(out) }.to_not raise_error
209
216
  expect(err).to eq('')
210
217
  expect(status.exitstatus).to eq(0)
211
218
  end
212
- # {"origin"=>true,
213
- # "methods"=>["HEAD", "GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"],
214
- # "headers"=>["Content-Type", "Cookie", "Authorization"],
215
- # "credentials"=>true}
219
+ # {'origin'=>true,
220
+ # 'methods'=>['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
221
+ # 'headers'=>['Content-Type', 'Cookie', 'Authorization'],
222
+ # 'credentials'=>true}
216
223
  end
217
-
218
224
  end
219
225
 
220
- # vim: set ai et sw=2 ts=2 :
@@ -1,5 +1,5 @@
1
- # Last Modified: 2017.08.17 /coding: utf-8
2
- # frozen_string_literal: probably not yet
1
+ # Last Modified: 2017.09.12 /coding: utf-8
2
+ # frozen_string_literal: true
3
3
 
4
4
  # Copyright © 2016-2017 Exosite LLC.
5
5
  # License: MIT. See LICENSE.txt.
@@ -8,13 +8,14 @@
8
8
  require 'fileutils'
9
9
  require 'json'
10
10
  require 'open3'
11
+ require 'os'
11
12
  require 'pathname'
12
13
  require 'rbconfig'
13
14
 
14
15
  require 'cmd_common'
15
16
 
16
17
  RSpec.describe 'murano status', :cmd, :needs_password do
17
- include_context "CI_CMD"
18
+ include_context 'CI_CMD'
18
19
 
19
20
  before(:example) do
20
21
  @product_name = rname('statusTest')
@@ -47,8 +48,8 @@ RSpec.describe 'murano status', :cmd, :needs_password do
47
48
  # pre-exist, in a sense, and are therefore described as being updated,
48
49
  # not added.
49
50
  (0..2).each do |ln|
50
- #expect(olines[ln].to_s).to a_string_starting_with("Adding item ")
51
- expect(olines[ln].to_s).to a_string_starting_with("Updating item ")
51
+ #expect(olines[ln].to_s).to a_string_starting_with('Adding item ')
52
+ expect(olines[ln].to_s).to a_string_starting_with('Updating item ')
52
53
  end
53
54
 
54
55
  expect(err).to eq('')
@@ -68,79 +69,79 @@ RSpec.describe 'murano status', :cmd, :needs_password do
68
69
  end
69
70
 
70
71
  def match_syncable_contents(slice)
71
- expect(slice).to include(
72
- a_string_matching(/ \+ \w .*modules\/table_util\.lua/),
73
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua/),
74
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua:4/),
75
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua:7/),
76
- # singleRoute only appears in some of the tests.
77
- a_string_matching(/ \+ \w .*routes\/singleRoute\.lua/),
78
- a_string_matching(/ \+ \w .*files\/js\/script\.js/),
79
- a_string_matching(/ \+ \w .*files\/icon\.png/),
80
- a_string_matching(/ \+ \w .*files\/index\.html/),
81
- )
72
+ expect(slice).to include(
73
+ a_string_matching(%r{ \+ \w .*modules/table_util\.lua}),
74
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua}),
75
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua:4}),
76
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua:7}),
77
+ # singleRoute only appears in some of the tests.
78
+ a_string_matching(%r{ \+ \w .*routes/singleRoute\.lua}),
79
+ a_string_matching(%r{ \+ \w .*files/js/script\.js}),
80
+ a_string_matching(%r{ \+ \w .*files/icon\.png}),
81
+ a_string_matching(%r{ \+ \w .*files/index\.html}),
82
+ )
82
83
  end
83
84
 
84
85
  def match_syncable_contents_resources(slice)
85
- expect(slice).to include(
86
- a_string_matching(/ \+ \w state/),
87
- a_string_matching(/ \+ \w temperature/),
88
- a_string_matching(/ \+ \w uptime/),
89
- a_string_matching(/ \+ \w humidity/),
90
- )
86
+ expect(slice).to include(
87
+ a_string_matching(/ \+ \w state/),
88
+ a_string_matching(/ \+ \w temperature/),
89
+ a_string_matching(/ \+ \w uptime/),
90
+ a_string_matching(/ \+ \w humidity/),
91
+ )
91
92
  end
92
93
 
93
- def match_syncable_contents_except_singleRoute(slice)
94
- expect(slice).to include(
95
- a_string_matching(/ \+ \w .*modules\/table_util\.lua/),
96
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua/),
97
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua:4/),
98
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua:7/),
99
- # singleRoute does not appear in old Solutionfile tests
100
- # that don't specify it.
101
- #a_string_matching(/ \+ \w .*routes\/singleRoute\.lua/),
102
- a_string_matching(/ \+ \w .*files\/js\/script\.js/),
103
- a_string_matching(/ \+ \w .*files\/icon\.png/),
104
- a_string_matching(/ \+ \w .*files\/index\.html/),
105
- )
94
+ def match_syncable_contents_except_single_route(slice)
95
+ expect(slice).to include(
96
+ a_string_matching(%r{ \+ \w .*modules/table_util\.lua}),
97
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua}),
98
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua:4}),
99
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua:7}),
100
+ # singleRoute does not appear in old Solutionfile tests
101
+ # that don't specify it.
102
+ #a_string_matching(%r{ \+ \w .*routes/singleRoute\.lua}),
103
+ a_string_matching(%r{ \+ \w .*files/js/script\.js}),
104
+ a_string_matching(%r{ \+ \w .*files/icon\.png}),
105
+ a_string_matching(%r{ \+ \w .*files/index\.html}),
106
+ )
106
107
  end
107
108
 
108
109
  def match_remote_boilerplate_v1_0_0_service(slice)
109
110
  expect(slice).to include(
110
- #a_string_matching(/ - \w device2_event/),
111
- #a_string_matching(/ - \w interface_addGatewayResource/),
112
- #a_string_matching(/ - \w interface_addIdentity/),
113
- #a_string_matching(/ - \w interface_clearContent/),
114
- #a_string_matching(/ - \w interface_deleteContent/),
115
- #a_string_matching(/ - \w interface_downloadContent/),
116
- #a_string_matching(/ - \w interface_getGatewayResource/),
117
- #a_string_matching(/ - \w interface_getGatewaySettings/),
118
- #a_string_matching(/ - \w interface_getIdentity/),
119
- #a_string_matching(/ - \w interface_getIdentityState/),
120
- #a_string_matching(/ - \w interface_infoContent/),
121
- #a_string_matching(/ - \w interface_listContent/),
122
- #a_string_matching(/ - \w interface_listIdentities/),
123
- #a_string_matching(/ - \w interface_makeIdentity/),
124
- #a_string_matching(/ - \w interface_removeGatewayResource/),
125
- #a_string_matching(/ - \w interface_removeIdentity/),
126
- #a_string_matching(/ - \w interface_setIdentityState/),
127
- #a_string_matching(/ - \w interface_updateGatewayResource/),
128
- #a_string_matching(/ - \w interface_updateGatewaySettings/),
129
- #a_string_matching(/ - \w interface_updateIdentity/),
130
- #a_string_matching(/ - \w interface_uploadContent/),
131
- #a_string_matching(/ - \w timer_timer (Application Event Handlers)/),
132
- #a_string_matching(/ - \w tsdb_exportJob (Application Event Handlers)/),
133
- #a_string_matching(/ - \w user_account (Application Event Handlers)/),
134
- #a_string_matching(/ - \w timer_timer/),
135
- #a_string_matching(/ - \w tsdb_exportJob/),
136
- #a_string_matching(/ - \w user_account/),
111
+ #a_string_matching(%r{ - \w device2_event}),
112
+ #a_string_matching(%r{ - \w interface_addGatewayResource}),
113
+ #a_string_matching(%r{ - \w interface_addIdentity}),
114
+ #a_string_matching(%r{ - \w interface_clearContent}),
115
+ #a_string_matching(%r{ - \w interface_deleteContent}),
116
+ #a_string_matching(%r{ - \w interface_downloadContent}),
117
+ #a_string_matching(%r{ - \w interface_getGatewayResource}),
118
+ #a_string_matching(%r{ - \w interface_getGatewaySettings}),
119
+ #a_string_matching(%r{ - \w interface_getIdentity}),
120
+ #a_string_matching(%r{ - \w interface_getIdentityState}),
121
+ #a_string_matching(%r{ - \w interface_infoContent}),
122
+ #a_string_matching(%r{ - \w interface_listContent}),
123
+ #a_string_matching(%r{ - \w interface_listIdentities}),
124
+ #a_string_matching(%r{ - \w interface_makeIdentity}),
125
+ #a_string_matching(%r{ - \w interface_removeGatewayResource}),
126
+ #a_string_matching(%r{ - \w interface_removeIdentity}),
127
+ #a_string_matching(%r{ - \w interface_setIdentityState}),
128
+ #a_string_matching(%r{ - \w interface_updateGatewayResource}),
129
+ #a_string_matching(%r{ - \w interface_updateGatewaySettings}),
130
+ #a_string_matching(%r{ - \w interface_updateIdentity}),
131
+ #a_string_matching(%r{ - \w interface_uploadContent}),
132
+ #a_string_matching(%r{ - \w timer_timer (Application Event Handlers)}),
133
+ #a_string_matching(%r{ - \w tsdb_exportJob (Application Event Handlers)}),
134
+ #a_string_matching(%r{ - \w user_account (Application Event Handlers)}),
135
+ #a_string_matching(%r{ - \w timer_timer}),
136
+ #a_string_matching(%r{ - \w tsdb_exportJob}),
137
+ #a_string_matching(%r{ - \w user_account}),
137
138
  a_string_matching(/ M \w timer_timer\.lua/),
138
139
  a_string_matching(/ M \w tsdb_exportJob\.lua/),
139
140
  a_string_matching(/ M \w user_account\.lua/),
140
141
  )
141
142
  end
142
143
 
143
- context "without ProjectFile" do
144
+ context 'without ProjectFile' do
144
145
  before(:example) do
145
146
  FileUtils.cp_r(File.join(@testdir, 'spec/fixtures/syncable_content/.'), '.')
146
147
  FileUtils.move('assets', 'files')
@@ -151,7 +152,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
151
152
  )
152
153
  end
153
154
 
154
- it "status" do
155
+ it 'status' do
155
156
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
156
157
  expect(err).to eq('')
157
158
  # Two problems with this output.
@@ -170,49 +171,55 @@ RSpec.describe 'murano status', :cmd, :needs_password do
170
171
  #match_remote_boilerplate_v1_0_0_service(olines[14..35])
171
172
 
172
173
  # NOTE: On Windows, touch doesn't work, so items differ.
173
- # Check the platform, e.g., "linux-gnu", or other.
174
+ # Check the platform, e.g., 'linux-gnu', or other.
174
175
  # 2017-07-14 08:51: Is there a race condition here? [lb] saw
175
176
  # differences earlier, but then not after adding this...
176
- #is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
177
- #if is_windows
177
+ #is_windows = (
178
+ # RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
179
+ #)
180
+ #if OS.windows?
178
181
  # expect(olines[14]).to eq("Items that differ:\n")
179
182
  # expect(olines[15..16]).to contain_exactly(
180
- # a_string_matching(/ M \w .*services\/timer_timer\.lua/),
181
- # a_string_matching(/ M \w .*services\/tsdb_exportJob\.lua/),
183
+ # a_string_matching(%r{ M \w .*services/timer_timer\.lua}),
184
+ # a_string_matching(%r{ M \w .*services/tsdb_exportJob\.lua}),
182
185
  # )
183
186
  #else
184
- expect(olines[14]).to eq("Nothing that differs\n")
187
+ expect(olines[14]).to eq("Nothing that differs\n")
185
188
  #end
186
189
 
187
190
  expect(status.exitstatus).to eq(0)
188
191
  end
189
192
 
190
- it "matches file path", :broken_on_windows do
193
+ it 'matches file path', :broken_on_windows do
191
194
  out, err, status = Open3.capture3(capcmd('murano', 'status', '**/icon.png'))
192
195
  expect(err).to eq('')
193
- expect(out.lines).to match([
194
- "Only on local machine:\n",
195
- a_string_matching(/ \+ \w .*files\/icon\.png/),
196
- "Nothing new remotely\n",
197
- "Nothing that differs\n",
198
- ])
196
+ expect(out.lines).to match(
197
+ [
198
+ "Only on local machine:\n",
199
+ a_string_matching(%r{ \+ \w .*files/icon\.png}),
200
+ "Nothing new remotely\n",
201
+ "Nothing that differs\n",
202
+ ]
203
+ )
199
204
  expect(status.exitstatus).to eq(0)
200
205
  end
201
206
 
202
- it "matches route", :broken_on_windows do
207
+ it 'matches route', :broken_on_windows do
203
208
  out, err, status = Open3.capture3(capcmd('murano', 'status', '#put#'))
204
209
  expect(err).to eq('')
205
- expect(out.lines).to match([
206
- "Only on local machine:\n",
207
- a_string_matching(/ \+ \w .*routes\/manyRoutes\.lua:4/),
208
- "Nothing new remotely\n",
209
- "Nothing that differs\n",
210
- ])
210
+ expect(out.lines).to match(
211
+ [
212
+ "Only on local machine:\n",
213
+ a_string_matching(%r{ \+ \w .*routes/manyRoutes\.lua:4}),
214
+ "Nothing new remotely\n",
215
+ "Nothing that differs\n",
216
+ ]
217
+ )
211
218
  expect(status.exitstatus).to eq(0)
212
219
  end
213
220
  end
214
221
 
215
- context "with ProjectFile" do
222
+ context 'with ProjectFile' do
216
223
  before(:example) do
217
224
  # We previously called syncdown, which created the project/services/
218
225
  # directory, but don't fret, this copy command will overlay files and
@@ -227,7 +234,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
227
234
  FileUtils.copy(File.join(@testdir, 'spec/fixtures/ProjectFiles/only_meta.yaml'), 'test.murano')
228
235
  end
229
236
 
230
- it "status" do
237
+ it 'status' do
231
238
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
232
239
  expect(err).to eq('')
233
240
  olines = out.lines
@@ -237,13 +244,15 @@ RSpec.describe 'murano status', :cmd, :needs_password do
237
244
  expect(olines[13]).to eq("Nothing new remotely\n")
238
245
 
239
246
  # NOTE: On Windows, touch doesn't work, so items differ.
240
- # Check the platform, e.g., "linux-gnu", or other.
241
- is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
242
- if is_windows
247
+ # Check the platform, e.g., 'linux-gnu', or other.
248
+ #is_windows = (
249
+ # RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
250
+ #)
251
+ if OS.windows?
243
252
  expect(olines[14]).to eq("Items that differ:\n")
244
253
  expect(olines[15..16]).to include(
245
- a_string_matching(/ M \w .*services\/timer_timer\.lua/),
246
- a_string_matching(/ M \w .*services\/tsdb_exportJob\.lua/),
254
+ a_string_matching(%r{ M \w .*services/timer_timer\.lua}),
255
+ a_string_matching(%r{ M \w .*services/tsdb_exportJob\.lua}),
247
256
  )
248
257
  else
249
258
  expect(olines[14]).to eq("Nothing that differs\n")
@@ -254,45 +263,47 @@ RSpec.describe 'murano status', :cmd, :needs_password do
254
263
  end
255
264
 
256
265
  # XXX wait, should a Solutionfile even work with Okami?
257
- context "with Solutionfile 0.2.0" do
266
+ context 'with Solutionfile 0.2.0' do
258
267
  before(:example) do
259
268
  FileUtils.cp_r(File.join(@testdir, 'spec/fixtures/syncable_content/.'), '.')
260
- FileUtils.move('assets','files')
269
+ FileUtils.move('assets', 'files')
261
270
  FileUtils.mkpath('specs')
262
- FileUtils.copy(File.join(@testdir, 'spec/fixtures/product_spec_files/lightbulb.yaml'),
263
- 'specs/resources.yaml')
271
+ FileUtils.copy(
272
+ File.join(@testdir, 'spec/fixtures/product_spec_files/lightbulb.yaml'),
273
+ 'specs/resources.yaml'
274
+ )
264
275
  File.open('Solutionfile.json', 'wb') do |io|
265
276
  io << {
266
- :default_page => 'index.html',
267
- :file_dir => 'files',
268
- :custom_api => 'routes/manyRoutes.lua',
269
- :modules => {
270
- :table_util => 'modules/table_util.lua'
277
+ default_page: 'index.html',
278
+ file_dir: 'files',
279
+ custom_api: 'routes/manyRoutes.lua',
280
+ modules: {
281
+ table_util: 'modules/table_util.lua',
282
+ },
283
+ event_handler: {
284
+ device: {
285
+ datapoint: 'services/devdata.lua',
286
+ },
271
287
  },
272
- :event_handler => {
273
- :device => {
274
- :datapoint => 'services/devdata.lua'
275
- }
276
- }
277
288
  }.to_json
278
289
  end
279
290
  end
280
291
 
281
- it "status" do
292
+ it 'status' do
282
293
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
283
294
  expect(err).to eq('')
284
295
  # Not a single match, because the order of items within groups can shift
285
296
  olines = out.lines
286
297
  expect(olines[0]).to eq("Only on local machine:\n")
287
298
  match_syncable_contents_resources(olines[1..4])
288
- match_syncable_contents_except_singleRoute(olines[5..11])
299
+ match_syncable_contents_except_single_route(olines[5..11])
289
300
  #expect(olines[12]).to eq("Only on remote server:\n")
290
301
  #match_remote_boilerplate_v1_0_0_service(olines[13..15])
291
302
  expect(olines[12]).to eq("Nothing new remotely\n")
292
303
  #expect(olines[16]).to eq("Nothing that differs\n")
293
304
  ##expect(olines[11]).to eq("Items that differ:\n")
294
305
  ##expect(olines[12..12]).to contain_exactly(
295
- ## a_string_matching(/ M \w .*services\/devdata\.lua/),
306
+ ## a_string_matching(%r{ M \w .*services/devdata\.lua}),
296
307
  ##)
297
308
  expect(olines[13]).to eq("Items that differ:\n")
298
309
  match_remote_boilerplate_v1_0_0_service(olines[14..16])
@@ -301,7 +312,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
301
312
  end
302
313
 
303
314
  # XXX wait, should a Solutionfile even work with Okami?
304
- context "with Solutionfile 0.3.0" do
315
+ context 'with Solutionfile 0.3.0' do
305
316
  before(:example) do
306
317
  FileUtils.cp_r(File.join(@testdir, 'spec/fixtures/syncable_content/.'), '.')
307
318
  FileUtils.move('assets', 'files')
@@ -317,26 +328,26 @@ RSpec.describe 'murano status', :cmd, :needs_password do
317
328
  routes: 'routes/manyRoutes.lua',
318
329
  # Note that singleRoute.lua is not included, so it won't be seen by status command.
319
330
  modules: {
320
- table_util: 'modules/table_util.lua'
331
+ table_util: 'modules/table_util.lua',
321
332
  },
322
333
  services: {
323
334
  device: {
324
- datapoint: 'services/devdata.lua'
325
- }
335
+ datapoint: 'services/devdata.lua',
336
+ },
326
337
  },
327
338
  version: '0.3.0',
328
339
  }.to_json
329
340
  end
330
341
  end
331
342
 
332
- it "status" do
343
+ it 'status' do
333
344
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
334
345
  # pp out.split "\n"
335
346
  expect(err).to eq('')
336
347
  olines = out.lines
337
348
  expect(olines[0]).to eq("Only on local machine:\n")
338
349
  match_syncable_contents_resources(olines[1..4])
339
- match_syncable_contents_except_singleRoute(olines[5..11])
350
+ match_syncable_contents_except_single_route(olines[5..11])
340
351
  #expect(olines[12]).to eq("Only on remote server:\n")
341
352
  #match_remote_boilerplate_v1_0_0_service(olines[13..15])
342
353
  expect(olines[12]).to eq("Nothing new remotely\n")