MuranoCLI 3.0.2 → 3.0.4
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +30 -59
- data/Gemfile +9 -3
- data/MuranoCLI.gemspec +11 -4
- data/bin/murano +2 -90
- data/lib/MrMurano.rb +5 -1
- data/lib/MrMurano/{spec_commander.rb → Commander-Entry.rb} +1 -2
- data/lib/MrMurano/Solution.rb +12 -15
- data/lib/MrMurano/SolutionId.rb +1 -5
- data/lib/MrMurano/SyncAllowed.rb +2 -2
- data/lib/MrMurano/SyncUpDown.rb +6 -3
- data/lib/MrMurano/progress.rb +11 -2
- data/lib/MrMurano/verbosing.rb +3 -2
- data/lib/MrMurano/version.rb +2 -2
- data/spec/Account-Passwords_spec.rb +34 -48
- data/spec/Account_spec.rb +58 -63
- data/spec/Business_spec.rb +151 -139
- data/spec/ConfigFile_spec.rb +15 -11
- data/spec/ConfigMigrate_spec.rb +23 -12
- data/spec/Config_spec.rb +57 -54
- data/spec/Content_spec.rb +233 -201
- data/spec/GatewayBase_spec.rb +35 -27
- data/spec/GatewayDevice_spec.rb +149 -149
- data/spec/GatewayResource_spec.rb +115 -102
- data/spec/GatewaySettings_spec.rb +69 -62
- data/spec/Http_spec.rb +66 -56
- data/spec/MakePretties_spec.rb +82 -73
- data/spec/Mock_spec.rb +38 -29
- data/spec/ProjectFile_spec.rb +118 -106
- data/spec/Setting_spec.rb +24 -15
- data/spec/Solution-ServiceConfig_spec.rb +168 -140
- data/spec/Solution-ServiceEventHandler_spec.rb +186 -188
- data/spec/Solution-ServiceModules_spec.rb +314 -232
- data/spec/Solution-UsersRoles_spec.rb +136 -86
- data/spec/Solution_spec.rb +78 -50
- data/spec/SyncRoot_spec.rb +26 -24
- data/spec/SyncUpDown_spec.rb +268 -249
- data/spec/Verbosing_spec.rb +95 -93
- data/spec/Webservice-Cors_spec.rb +141 -95
- data/spec/Webservice-Endpoint_spec.rb +382 -346
- data/spec/Webservice-File_spec.rb +148 -109
- data/spec/Webservice-Setting_spec.rb +47 -41
- data/spec/cmd_business_spec.rb +17 -17
- data/spec/cmd_common.rb +27 -7
- data/spec/cmd_config_spec.rb +31 -20
- data/spec/cmd_content_spec.rb +80 -68
- data/spec/cmd_cors_spec.rb +11 -5
- data/spec/cmd_device_spec.rb +16 -14
- data/spec/cmd_domain_spec.rb +10 -8
- data/spec/cmd_exchange_spec.rb +3 -3
- data/spec/cmd_init_spec.rb +100 -101
- data/spec/cmd_keystore_spec.rb +17 -12
- data/spec/cmd_link_spec.rb +22 -37
- data/spec/cmd_password_spec.rb +11 -7
- data/spec/cmd_setting_application_spec.rb +47 -33
- data/spec/cmd_setting_product_spec.rb +32 -27
- data/spec/cmd_status_spec.rb +125 -114
- data/spec/cmd_syncdown_spec.rb +70 -65
- data/spec/cmd_syncup_spec.rb +19 -15
- data/spec/cmd_usage_spec.rb +14 -10
- metadata +29 -15
data/spec/SyncRoot_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Last Modified: 2017.
|
1
|
+
# Last Modified: 2017.09.12 /coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
# Copyright © 2016-2017 Exosite LLC.
|
@@ -13,7 +13,7 @@ require 'MrMurano/SyncUpDown'
|
|
13
13
|
require '_workspace'
|
14
14
|
|
15
15
|
RSpec.describe MrMurano::SyncRoot do
|
16
|
-
include_context
|
16
|
+
include_context 'WORKSPACE'
|
17
17
|
|
18
18
|
after(:example) do
|
19
19
|
MrMurano::SyncRoot.instance.reset
|
@@ -27,7 +27,7 @@ RSpec.describe MrMurano::SyncRoot do
|
|
27
27
|
# warning: method redefined; discarding old description
|
28
28
|
# /exo/clients/exosite/MuranoCLIs/MuranoCLI+landonb/spec/SyncRoot_spec.rb:30:
|
29
29
|
# warning: previous definition of description was here
|
30
|
-
|
30
|
+
unless defined?(User)
|
31
31
|
class User
|
32
32
|
def self.description
|
33
33
|
%(describe user)
|
@@ -35,7 +35,7 @@ RSpec.describe MrMurano::SyncRoot do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
MrMurano::SyncRoot.instance.add('user', User, 'U', true)
|
38
|
-
|
38
|
+
unless defined?(Role)
|
39
39
|
class Role
|
40
40
|
def self.description
|
41
41
|
%(describe role)
|
@@ -52,58 +52,60 @@ RSpec.describe MrMurano::SyncRoot do
|
|
52
52
|
|
53
53
|
@options = {}
|
54
54
|
@options.define_singleton_method(:method_missing) do |mid, *args|
|
55
|
-
if mid.to_s
|
56
|
-
self[
|
55
|
+
if mid.to_s =~ /^(.+)=$/
|
56
|
+
self[Regexp.last_match(1).to_sym] = args.first
|
57
57
|
else
|
58
58
|
self[mid]
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
it
|
63
|
+
it 'has defaults' do
|
64
64
|
ret = MrMurano::SyncRoot.instance.bydefault
|
65
65
|
expect(ret).to eq(['user'])
|
66
66
|
end
|
67
67
|
|
68
|
-
it
|
69
|
-
ret=[]
|
68
|
+
it 'iterates on each' do
|
69
|
+
ret = []
|
70
70
|
MrMurano::SyncRoot.instance.each { |a, _b, _c, _d| ret << a }
|
71
|
-
expect(ret).to eq([
|
71
|
+
expect(ret).to eq(%w[user role])
|
72
72
|
end
|
73
73
|
|
74
|
-
it
|
74
|
+
it 'iterates only on selected' do
|
75
75
|
@options.role = true
|
76
|
-
ret=[]
|
76
|
+
ret = []
|
77
77
|
MrMurano::SyncRoot.instance.each_filtered(@options) { |a, _b, _c, _d| ret << a }
|
78
|
-
expect(ret).to eq([
|
78
|
+
expect(ret).to eq(['role'])
|
79
79
|
end
|
80
80
|
|
81
|
-
it
|
81
|
+
it 'selects all' do
|
82
82
|
@options.all = true
|
83
83
|
MrMurano::SyncRoot.instance.check_same(@options)
|
84
|
-
expect(@options).to eq(
|
84
|
+
expect(@options).to eq(all: true, user: true, role: true)
|
85
85
|
end
|
86
86
|
|
87
|
-
it
|
87
|
+
it 'selects defaults when none' do
|
88
88
|
MrMurano::SyncRoot.instance.check_same(@options)
|
89
|
-
expect(@options).to eq(
|
89
|
+
expect(@options).to eq(user: true)
|
90
90
|
end
|
91
91
|
|
92
|
-
it
|
92
|
+
it 'selects custom defaults when none' do
|
93
93
|
$cfg['sync.bydefault'] = 'role'
|
94
94
|
MrMurano::SyncRoot.instance.check_same(@options)
|
95
|
-
expect(@options).to eq(
|
95
|
+
expect(@options).to eq(role: true)
|
96
96
|
end
|
97
97
|
|
98
|
-
it
|
98
|
+
it 'builds option params' do
|
99
99
|
ret = []
|
100
100
|
MrMurano::SyncRoot.instance.each_option do |s, l, d|
|
101
101
|
ret << [s, l, d]
|
102
102
|
end
|
103
|
-
expect(ret).to eq(
|
104
|
-
[
|
105
|
-
|
106
|
-
|
103
|
+
expect(ret).to eq(
|
104
|
+
[
|
105
|
+
['-U', '--[no-]user', 'describe user'],
|
106
|
+
['-G', '--[no-]role', 'describe role'],
|
107
|
+
]
|
108
|
+
)
|
107
109
|
end
|
108
110
|
end
|
109
111
|
|
data/spec/SyncUpDown_spec.rb
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# Last Modified: 2017.09.12 /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 'MrMurano/verbosing'
|
2
9
|
require 'MrMurano/version'
|
3
10
|
require 'MrMurano/Config'
|
@@ -20,9 +27,7 @@ class TSUD
|
|
20
27
|
@project_section = :routes
|
21
28
|
end
|
22
29
|
|
23
|
-
|
24
|
-
@api_id
|
25
|
-
end
|
30
|
+
attr_reader :api_id
|
26
31
|
|
27
32
|
def api_id?
|
28
33
|
@valid_api_id
|
@@ -42,10 +47,10 @@ RSpec::Matchers.define :pathname_globs do |glob|
|
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
45
|
-
ITEM_UPDATED_AT=
|
50
|
+
ITEM_UPDATED_AT = '2017-06-24T00:45:15.564Z'
|
46
51
|
|
47
52
|
RSpec.describe MrMurano::SyncUpDown do
|
48
|
-
include_context
|
53
|
+
include_context 'WORKSPACE'
|
49
54
|
before(:example) do
|
50
55
|
MrMurano::SyncRoot.instance.reset
|
51
56
|
$cfg = MrMurano::Config.new
|
@@ -59,35 +64,37 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
59
64
|
$cfg['application.id'] = 'XYZ'
|
60
65
|
end
|
61
66
|
|
62
|
-
context
|
63
|
-
it
|
67
|
+
context 'status' do
|
68
|
+
it 'warns with missing directory' do
|
64
69
|
t = TSUD.new
|
65
70
|
expect(t).to receive(:warning).once.with(/Skipping missing location.*/)
|
66
71
|
ret = t.status
|
67
72
|
expect(ret).to eq(
|
68
|
-
|
73
|
+
toadd: [], todel: [], tomod: [], unchg: [], skipd: [], clash: []
|
69
74
|
)
|
70
75
|
end
|
71
76
|
|
72
|
-
it
|
77
|
+
it 'finds nothing in empty directory' do
|
73
78
|
FileUtils.mkpath(@project_dir + '/tsud')
|
74
79
|
t = TSUD.new
|
75
80
|
ret = t.status
|
76
81
|
expect(ret).to eq(
|
77
|
-
|
82
|
+
toadd: [], todel: [], tomod: [], unchg: [], skipd: [], clash: []
|
78
83
|
)
|
79
84
|
end
|
80
85
|
|
81
|
-
it
|
86
|
+
it 'finds things there but not here' do
|
82
87
|
FileUtils.mkpath(@project_dir + '/tsud')
|
83
88
|
t = TSUD.new
|
84
|
-
expect(t).to receive(:list).once.and_return(
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
+
expect(t).to receive(:list).once.and_return(
|
90
|
+
[
|
91
|
+
{ name: 1 },
|
92
|
+
{ name: 2 },
|
93
|
+
{ name: 3 },
|
94
|
+
]
|
95
|
+
)
|
89
96
|
ret = t.status
|
90
|
-
expect(ret).to eq(
|
97
|
+
expect(ret).to eq(
|
91
98
|
toadd: [],
|
92
99
|
todel: [
|
93
100
|
{
|
@@ -104,24 +111,27 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
104
111
|
name: 3,
|
105
112
|
synckey: 3,
|
106
113
|
synctype: TSUD.description,
|
107
|
-
}
|
114
|
+
},
|
115
|
+
],
|
108
116
|
tomod: [],
|
109
117
|
unchg: [],
|
110
118
|
skipd: [],
|
111
|
-
clash: []
|
112
|
-
|
119
|
+
clash: []
|
120
|
+
)
|
113
121
|
end
|
114
122
|
|
115
|
-
it
|
123
|
+
it 'finds things there but not here; asdown' do
|
116
124
|
FileUtils.mkpath(@project_dir + '/tsud')
|
117
125
|
t = TSUD.new
|
118
|
-
expect(t).to receive(:list).once.and_return(
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
126
|
+
expect(t).to receive(:list).once.and_return(
|
127
|
+
[
|
128
|
+
{ name: 1 },
|
129
|
+
{ name: 2 },
|
130
|
+
{ name: 3 },
|
131
|
+
]
|
132
|
+
)
|
133
|
+
ret = t.status(asdown: true)
|
134
|
+
expect(ret).to eq(
|
125
135
|
todel: [],
|
126
136
|
toadd: [
|
127
137
|
{ name: 1, synckey: 1, synctype: TSUD.description },
|
@@ -131,21 +141,21 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
131
141
|
tomod: [],
|
132
142
|
unchg: [],
|
133
143
|
skipd: [],
|
134
|
-
clash: []
|
135
|
-
|
144
|
+
clash: []
|
145
|
+
)
|
136
146
|
end
|
137
147
|
|
138
|
-
it
|
148
|
+
it 'finds things here but not there' do
|
139
149
|
FileUtils.mkpath(@project_dir + '/tsud')
|
140
150
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
141
151
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
142
152
|
t = TSUD.new
|
143
153
|
expect(t).to receive(:to_remote_item).and_return(
|
144
|
-
{name: 'one.lua'},
|
145
|
-
|
154
|
+
{ name: 'one.lua' },
|
155
|
+
name: 'two.lua',
|
146
156
|
)
|
147
157
|
ret = t.status
|
148
|
-
expect(ret).to match(
|
158
|
+
expect(ret).to match(
|
149
159
|
toadd: [
|
150
160
|
{
|
151
161
|
name: 'one.lua',
|
@@ -164,25 +174,27 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
164
174
|
tomod: [],
|
165
175
|
unchg: [],
|
166
176
|
skipd: [],
|
167
|
-
clash: []
|
168
|
-
|
177
|
+
clash: []
|
178
|
+
)
|
169
179
|
end
|
170
180
|
|
171
|
-
it
|
181
|
+
it 'finds things here and there' do
|
172
182
|
FileUtils.mkpath(@project_dir + '/tsud')
|
173
183
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
174
184
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
175
185
|
t = TSUD.new
|
176
|
-
expect(t).to receive(:list).once.and_return(
|
177
|
-
|
178
|
-
|
179
|
-
|
186
|
+
expect(t).to receive(:list).once.and_return(
|
187
|
+
[
|
188
|
+
{ name: 'one.lua' },
|
189
|
+
{ name: 'two.lua' },
|
190
|
+
]
|
191
|
+
)
|
180
192
|
expect(t).to receive(:to_remote_item).and_return(
|
181
|
-
{name: 'one.lua'},
|
182
|
-
|
193
|
+
{ name: 'one.lua' },
|
194
|
+
name: 'two.lua',
|
183
195
|
)
|
184
196
|
ret = t.status
|
185
|
-
expect(ret).to match(
|
197
|
+
expect(ret).to match(
|
186
198
|
tomod: [
|
187
199
|
{
|
188
200
|
name: 'one.lua',
|
@@ -201,25 +213,27 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
201
213
|
toadd: [],
|
202
214
|
unchg: [],
|
203
215
|
skipd: [],
|
204
|
-
clash: []
|
205
|
-
|
216
|
+
clash: []
|
217
|
+
)
|
206
218
|
end
|
207
219
|
it "finds things here and there; but they're the same" do
|
208
220
|
FileUtils.mkpath(@project_dir + '/tsud')
|
209
221
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
210
222
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
211
223
|
t = TSUD.new
|
212
|
-
expect(t).to receive(:list).once.and_return(
|
213
|
-
|
214
|
-
|
215
|
-
|
224
|
+
expect(t).to receive(:list).once.and_return(
|
225
|
+
[
|
226
|
+
{ name: 'one.lua' },
|
227
|
+
{ name: 'two.lua' },
|
228
|
+
]
|
229
|
+
)
|
216
230
|
expect(t).to receive(:to_remote_item).and_return(
|
217
|
-
{name: 'one.lua'},
|
218
|
-
|
231
|
+
{ name: 'one.lua' },
|
232
|
+
name: 'two.lua',
|
219
233
|
)
|
220
234
|
expect(t).to receive(:docmp).twice.and_return(false)
|
221
235
|
ret = t.status
|
222
|
-
expect(ret).to match(
|
236
|
+
expect(ret).to match(
|
223
237
|
unchg: [
|
224
238
|
{
|
225
239
|
name: 'one.lua',
|
@@ -238,41 +252,41 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
238
252
|
toadd: [],
|
239
253
|
tomod: [],
|
240
254
|
skipd: [],
|
241
|
-
clash: []
|
242
|
-
|
255
|
+
clash: []
|
256
|
+
)
|
243
257
|
end
|
244
258
|
|
245
|
-
it
|
259
|
+
it 'calls diff' do
|
246
260
|
FileUtils.mkpath(@project_dir + '/tsud')
|
247
261
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
248
262
|
t = TSUD.new
|
249
263
|
expect(t).to receive(:list).once.and_return([
|
250
|
-
|
251
|
-
|
264
|
+
{ name: 'one.lua' },
|
265
|
+
])
|
252
266
|
expect(t).to receive(:to_remote_item).and_return(
|
253
|
-
|
267
|
+
name: 'one.lua'
|
254
268
|
)
|
255
|
-
expect(t).to receive(:dodiff).once.and_return(
|
256
|
-
ret = t.status(
|
257
|
-
expect(ret).to match(
|
269
|
+
expect(t).to receive(:dodiff).once.and_return('diffed output')
|
270
|
+
ret = t.status(diff: true)
|
271
|
+
expect(ret).to match(
|
258
272
|
tomod: [
|
259
273
|
{
|
260
274
|
name: 'one.lua',
|
261
275
|
synckey: 'one.lua',
|
262
276
|
synctype: TSUD.description,
|
263
277
|
local_path: an_instance_of(Pathname),
|
264
|
-
diff:
|
278
|
+
diff: 'diffed output',
|
265
279
|
},
|
266
280
|
],
|
267
281
|
todel: [],
|
268
282
|
toadd: [],
|
269
283
|
unchg: [],
|
270
284
|
skipd: [],
|
271
|
-
clash: []
|
272
|
-
|
285
|
+
clash: []
|
286
|
+
)
|
273
287
|
end
|
274
288
|
|
275
|
-
context
|
289
|
+
context 'Filtering' do
|
276
290
|
before(:example) do
|
277
291
|
FileUtils.mkpath(@project_dir + '/tsud/ga')
|
278
292
|
FileUtils.mkpath(@project_dir + '/tsud/gb')
|
@@ -283,113 +297,107 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
283
297
|
FileUtils.touch(@project_dir + '/tsud/five.lua') # toadd
|
284
298
|
FileUtils.touch(@project_dir + '/tsud/ga/six.lua') # toadd
|
285
299
|
@t = TSUD.new
|
286
|
-
expect(@t).to receive(:list).once.and_return(
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
expect(@t).to receive(:docmp).with(have_attributes(
|
316
|
-
expect(@t).to receive(:docmp).with(have_attributes(
|
300
|
+
expect(@t).to receive(:list).once.and_return(
|
301
|
+
[
|
302
|
+
MrMurano::SyncUpDown::Item.new(name: 'eight.lua', updated_at: ITEM_UPDATED_AT), # todel
|
303
|
+
MrMurano::SyncUpDown::Item.new(name: 'four.lua', updated_at: ITEM_UPDATED_AT), # unchg
|
304
|
+
MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT), # tomod
|
305
|
+
MrMurano::SyncUpDown::Item.new(name: 'seven.lua', updated_at: ITEM_UPDATED_AT), # todel
|
306
|
+
MrMurano::SyncUpDown::Item.new(name: 'three.lua', updated_at: ITEM_UPDATED_AT), # unchg
|
307
|
+
MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT), # tomod
|
308
|
+
]
|
309
|
+
)
|
310
|
+
expect(@t).to receive(:to_remote_item)
|
311
|
+
.with(anything, pathname_globs('**/one.lua'))
|
312
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT))
|
313
|
+
expect(@t).to receive(:to_remote_item)
|
314
|
+
.with(anything, pathname_globs('**/two.lua'))
|
315
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT))
|
316
|
+
expect(@t).to receive(:to_remote_item)
|
317
|
+
.with(anything, pathname_globs('**/three.lua'))
|
318
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'three.lua', updated_at: ITEM_UPDATED_AT))
|
319
|
+
expect(@t).to receive(:to_remote_item)
|
320
|
+
.with(anything, pathname_globs('**/four.lua'))
|
321
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'four.lua', updated_at: ITEM_UPDATED_AT))
|
322
|
+
expect(@t).to receive(:to_remote_item)
|
323
|
+
.with(anything, pathname_globs('**/five.lua'))
|
324
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'five.lua', updated_at: ITEM_UPDATED_AT))
|
325
|
+
expect(@t).to receive(:to_remote_item)
|
326
|
+
.with(anything, pathname_globs('**/six.lua'))
|
327
|
+
.and_return(MrMurano::SyncUpDown::Item.new(name: 'six.lua', updated_at: ITEM_UPDATED_AT))
|
328
|
+
|
329
|
+
expect(@t).to receive(:docmp).with(have_attributes(name: 'one.lua'), anything).and_return(true)
|
330
|
+
expect(@t).to receive(:docmp).with(have_attributes(name: 'two.lua'), anything).and_return(true)
|
331
|
+
expect(@t).to receive(:docmp).with(have_attributes(name: 'three.lua'), anything).and_return(false)
|
332
|
+
expect(@t).to receive(:docmp).with(have_attributes(name: 'four.lua'), anything).and_return(false)
|
317
333
|
end
|
318
334
|
|
319
|
-
it
|
335
|
+
it 'Returns all with no filter' do
|
320
336
|
ret = @t.status
|
321
|
-
expect(ret).to match(
|
337
|
+
expect(ret).to match(
|
322
338
|
unchg: [
|
323
339
|
have_attributes(
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
}),
|
340
|
+
name: 'four.lua',
|
341
|
+
synckey: 'four.lua',
|
342
|
+
synctype: TSUD.description,
|
343
|
+
local_path: pathname_globs('**/four.lua')
|
344
|
+
),
|
330
345
|
have_attributes(
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
}),
|
346
|
+
name: 'three.lua',
|
347
|
+
synckey: 'three.lua',
|
348
|
+
synctype: TSUD.description,
|
349
|
+
local_path: pathname_globs('**/three.lua')
|
350
|
+
),
|
337
351
|
],
|
338
352
|
toadd: [
|
339
353
|
have_attributes(
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
}),
|
354
|
+
name: 'five.lua',
|
355
|
+
synckey: 'five.lua',
|
356
|
+
synctype: TSUD.description,
|
357
|
+
local_path: pathname_globs('**/five.lua')
|
358
|
+
),
|
346
359
|
have_attributes(
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
}),
|
360
|
+
name: 'six.lua',
|
361
|
+
synckey: 'six.lua',
|
362
|
+
synctype: TSUD.description,
|
363
|
+
local_path: pathname_globs('**/six.lua')
|
364
|
+
),
|
353
365
|
],
|
354
366
|
todel: [
|
355
367
|
have_attributes(
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
}),
|
368
|
+
name: 'eight.lua',
|
369
|
+
synckey: 'eight.lua',
|
370
|
+
synctype: TSUD.description
|
371
|
+
),
|
361
372
|
have_attributes(
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
}),
|
373
|
+
name: 'seven.lua',
|
374
|
+
synckey: 'seven.lua',
|
375
|
+
synctype: TSUD.description
|
376
|
+
),
|
367
377
|
],
|
368
378
|
tomod: [
|
369
379
|
have_attributes(
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
}),
|
380
|
+
name: 'one.lua',
|
381
|
+
synckey: 'one.lua',
|
382
|
+
synctype: TSUD.description,
|
383
|
+
local_path: pathname_globs('**/one.lua')
|
384
|
+
),
|
376
385
|
have_attributes(
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
}),
|
386
|
+
name: 'two.lua',
|
387
|
+
synckey: 'two.lua',
|
388
|
+
synctype: TSUD.description,
|
389
|
+
local_path: pathname_globs('**/two.lua')
|
390
|
+
),
|
383
391
|
],
|
384
392
|
skipd: [],
|
385
|
-
clash: []
|
386
|
-
|
393
|
+
clash: []
|
394
|
+
)
|
387
395
|
end
|
388
396
|
|
389
|
-
it
|
397
|
+
it 'Finds local path globs' do
|
390
398
|
ret = @t.status({}, ['**/ga/*.lua'])
|
391
|
-
expect(ret).to match(
|
392
|
-
unchg: [
|
399
|
+
expect(ret).to match(
|
400
|
+
unchg: [],
|
393
401
|
toadd: [
|
394
402
|
have_attributes(
|
395
403
|
name: 'six.lua',
|
@@ -398,7 +406,7 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
398
406
|
local_path: an_instance_of(Pathname)
|
399
407
|
),
|
400
408
|
],
|
401
|
-
todel: [
|
409
|
+
todel: [],
|
402
410
|
tomod: [
|
403
411
|
have_attributes(
|
404
412
|
name: 'two.lua',
|
@@ -408,25 +416,25 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
408
416
|
),
|
409
417
|
],
|
410
418
|
skipd: [],
|
411
|
-
clash: []
|
412
|
-
|
419
|
+
clash: []
|
420
|
+
)
|
413
421
|
end
|
414
422
|
|
415
|
-
it
|
423
|
+
it 'Finds nothing with specific matcher' do
|
416
424
|
ret = @t.status({}, ['#foo'])
|
417
|
-
expect(ret).to match(
|
425
|
+
expect(ret).to match(
|
418
426
|
unchg: [],
|
419
427
|
toadd: [],
|
420
428
|
todel: [],
|
421
429
|
tomod: [],
|
422
430
|
skipd: [],
|
423
|
-
clash: []
|
424
|
-
|
431
|
+
clash: []
|
432
|
+
)
|
425
433
|
end
|
426
434
|
|
427
|
-
it
|
428
|
-
ret = @t.status(
|
429
|
-
expect(ret).to match(
|
435
|
+
it 'gets all the details' do
|
436
|
+
ret = @t.status(unselected: true)
|
437
|
+
expect(ret).to match(
|
430
438
|
unchg: [
|
431
439
|
have_attributes(
|
432
440
|
name: 'four.lua',
|
@@ -434,7 +442,7 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
434
442
|
synctype: TSUD.description,
|
435
443
|
selected: true,
|
436
444
|
local_path: pathname_globs('**/four.lua')
|
437
|
-
|
445
|
+
),
|
438
446
|
have_attributes(
|
439
447
|
name: 'three.lua',
|
440
448
|
synckey: 'three.lua',
|
@@ -490,92 +498,96 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
490
498
|
),
|
491
499
|
],
|
492
500
|
skipd: [],
|
493
|
-
clash: []
|
494
|
-
|
501
|
+
clash: []
|
502
|
+
)
|
495
503
|
end
|
496
504
|
end
|
497
505
|
end
|
498
506
|
|
499
|
-
context
|
507
|
+
context 'localitems' do
|
500
508
|
before(:example) do
|
501
509
|
FileUtils.mkpath('tsud')
|
502
510
|
FileUtils.touch('tsud/one.lua')
|
503
511
|
FileUtils.touch('tsud/two.lua')
|
504
512
|
@t = TSUD.new
|
505
513
|
end
|
506
|
-
it
|
514
|
+
it 'finds local items' do
|
507
515
|
expect(@t).to receive(:to_remote_item).and_return(
|
508
|
-
{name: 'one.lua'},
|
509
|
-
|
516
|
+
{ name: 'one.lua' },
|
517
|
+
name: 'two.lua',
|
510
518
|
)
|
511
519
|
ret = @t.localitems(Pathname.new(@project_dir + '/tsud').realpath)
|
512
|
-
expect(ret).to match(
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
520
|
+
expect(ret).to match(
|
521
|
+
[
|
522
|
+
{
|
523
|
+
name: 'one.lua',
|
524
|
+
local_path: an_instance_of(Pathname),
|
525
|
+
},
|
526
|
+
{
|
527
|
+
name: 'two.lua',
|
528
|
+
local_path: an_instance_of(Pathname),
|
529
|
+
},
|
530
|
+
]
|
531
|
+
)
|
522
532
|
end
|
523
533
|
|
524
|
-
it
|
534
|
+
it 'takes an array from to_remote_item' do
|
525
535
|
expect(@t).to receive(:to_remote_item).and_return(
|
526
536
|
[
|
527
|
-
{name: 'one:1'},
|
528
|
-
{name: 'one:2'},
|
537
|
+
{ name: 'one:1' },
|
538
|
+
{ name: 'one:2' },
|
529
539
|
],
|
530
540
|
[
|
531
|
-
{name: 'two:1'},
|
532
|
-
{name: 'two:2'},
|
541
|
+
{ name: 'two:1' },
|
542
|
+
{ name: 'two:2' },
|
533
543
|
],
|
534
544
|
)
|
535
545
|
ret = @t.localitems(Pathname.new(@project_dir + '/tsud').realpath)
|
536
|
-
expect(ret).to match(
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
546
|
+
expect(ret).to match(
|
547
|
+
[
|
548
|
+
{
|
549
|
+
name: 'one:1',
|
550
|
+
local_path: an_instance_of(Pathname),
|
551
|
+
},
|
552
|
+
{
|
553
|
+
name: 'one:2',
|
554
|
+
local_path: an_instance_of(Pathname),
|
555
|
+
},
|
556
|
+
{
|
557
|
+
name: 'two:1',
|
558
|
+
local_path: an_instance_of(Pathname),
|
559
|
+
},
|
560
|
+
{
|
561
|
+
name: 'two:2',
|
562
|
+
local_path: an_instance_of(Pathname),
|
563
|
+
},
|
564
|
+
]
|
565
|
+
)
|
554
566
|
end
|
555
567
|
end
|
556
568
|
|
557
|
-
context
|
558
|
-
it
|
569
|
+
context 'download' do
|
570
|
+
it 'defaults to :id if @itemkey missing' do
|
559
571
|
FileUtils.mkpath(@project_dir + '/tsud')
|
560
572
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
561
573
|
lp = Pathname.new(@project_dir + '/tsud/one.lua').realpath
|
562
574
|
t = TSUD.new
|
563
|
-
expect(t).to receive(:fetch).once.with(1).and_yield(
|
564
|
-
t.download(lp,
|
575
|
+
expect(t).to receive(:fetch).once.with(1).and_yield('foo')
|
576
|
+
t.download(lp, id: 1, updated_at: ITEM_UPDATED_AT)
|
565
577
|
end
|
566
578
|
end
|
567
579
|
|
568
|
-
context
|
580
|
+
context 'doing diffs' do
|
569
581
|
before(:example) do
|
570
582
|
FileUtils.mkpath(@project_dir + '/tsud')
|
571
583
|
@t = TSUD.new
|
572
584
|
@scpt = Pathname.new(@project_dir + '/tsud/one.lua')
|
573
|
-
@scpt.open('w'){|io| io << %
|
585
|
+
@scpt.open('w') { |io| io << %(-- fake lua\nreturn 0\n) }
|
574
586
|
@scpt = @scpt.realpath
|
575
587
|
end
|
576
588
|
|
577
|
-
it
|
578
|
-
expect(@t).to receive(:fetch).and_yield(%
|
589
|
+
it 'nothing when same.' do
|
590
|
+
expect(@t).to receive(:fetch).and_yield(%(-- fake lua\nreturn 0\n))
|
579
591
|
ret = @t.dodiff(
|
580
592
|
{
|
581
593
|
name: 'one.lua',
|
@@ -584,15 +596,15 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
584
596
|
},
|
585
597
|
nil
|
586
598
|
)
|
587
|
-
if Gem.win_platform?
|
599
|
+
if Gem.win_platform?
|
588
600
|
expect(ret).to match(/FC: no differences encountered/)
|
589
601
|
else
|
590
602
|
expect(ret).to eq('')
|
591
603
|
end
|
592
604
|
end
|
593
605
|
|
594
|
-
it
|
595
|
-
expect(@t).to receive(:fetch).and_yield(%
|
606
|
+
it 'something when different.' do
|
607
|
+
expect(@t).to receive(:fetch).and_yield(%(-- fake lua\nreturn 2\n))
|
596
608
|
ret = @t.dodiff(
|
597
609
|
{
|
598
610
|
name: 'one.lua',
|
@@ -604,8 +616,8 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
604
616
|
expect(ret).not_to eq('')
|
605
617
|
end
|
606
618
|
|
607
|
-
it
|
608
|
-
script = %
|
619
|
+
it 'uses script in item' do
|
620
|
+
script = %(-- fake lua\nreturn 2\n)
|
609
621
|
expect(@t).to receive(:fetch).and_yield(script)
|
610
622
|
ret = @t.dodiff(
|
611
623
|
{
|
@@ -616,7 +628,7 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
616
628
|
},
|
617
629
|
nil
|
618
630
|
)
|
619
|
-
if Gem.win_platform?
|
631
|
+
if Gem.win_platform?
|
620
632
|
expect(ret).to match(/FC: no differences encountered/)
|
621
633
|
else
|
622
634
|
expect(ret).to eq('')
|
@@ -624,56 +636,61 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
624
636
|
end
|
625
637
|
end
|
626
638
|
|
627
|
-
context
|
639
|
+
context 'syncup' do
|
628
640
|
before(:example) do
|
629
641
|
FileUtils.mkpath(@project_dir + '/tsud')
|
630
642
|
@t = TSUD.new
|
631
643
|
end
|
632
644
|
|
633
|
-
it
|
634
|
-
expect(@t).to receive(:list).once.and_return(
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
645
|
+
it 'removes' do
|
646
|
+
expect(@t).to receive(:list).once.and_return(
|
647
|
+
[
|
648
|
+
{ name: 1 },
|
649
|
+
{ name: 2 },
|
650
|
+
{ name: 3 },
|
651
|
+
]
|
652
|
+
)
|
639
653
|
expect(@t).to receive(:remove).exactly(3).times
|
640
|
-
@t.syncup(
|
654
|
+
@t.syncup(delete: true)
|
641
655
|
end
|
642
656
|
|
643
|
-
it
|
657
|
+
it 'creates' do
|
644
658
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
645
659
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
646
660
|
|
647
|
-
expect(@t).to receive(:upload).twice
|
648
|
-
|
661
|
+
expect(@t).to receive(:upload).twice
|
662
|
+
.with(kind_of(Pathname), kind_of(MrMurano::SyncUpDown::Item), false)
|
663
|
+
@t.syncup(create: true)
|
649
664
|
end
|
650
665
|
|
651
|
-
it
|
666
|
+
it 'updates' do
|
652
667
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
653
668
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
654
|
-
expect(@t).to receive(:list).once.and_return(
|
655
|
-
|
656
|
-
|
657
|
-
|
669
|
+
expect(@t).to receive(:list).once.and_return(
|
670
|
+
[
|
671
|
+
MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT),
|
672
|
+
MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT),
|
673
|
+
]
|
674
|
+
)
|
658
675
|
|
659
676
|
expect(@t).to receive(:upload).twice.with(
|
660
677
|
kind_of(Pathname), kind_of(MrMurano::SyncUpDown::Item), true
|
661
678
|
)
|
662
679
|
expect(@t).to receive(:to_remote_item).and_return(
|
663
|
-
{name: 'one.lua'},
|
664
|
-
|
680
|
+
{ name: 'one.lua' },
|
681
|
+
name: 'two.lua',
|
665
682
|
)
|
666
|
-
@t.syncup(
|
683
|
+
@t.syncup(update: true)
|
667
684
|
end
|
668
685
|
end
|
669
686
|
|
670
|
-
context
|
687
|
+
context 'syncdown' do
|
671
688
|
before(:example) do
|
672
689
|
FileUtils.mkpath(@project_dir + '/tsud')
|
673
690
|
@t = TSUD.new
|
674
691
|
end
|
675
692
|
|
676
|
-
it
|
693
|
+
it 'removes' do
|
677
694
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
678
695
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
679
696
|
|
@@ -682,11 +699,13 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
682
699
|
expect(FileTest.exist?(@project_dir + '/tsud/two.lua')).to be false
|
683
700
|
end
|
684
701
|
|
685
|
-
it
|
686
|
-
expect(@t).to receive(:list).once.and_return(
|
687
|
-
|
688
|
-
|
689
|
-
|
702
|
+
it 'creates' do
|
703
|
+
expect(@t).to receive(:list).once.and_return(
|
704
|
+
[
|
705
|
+
MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT),
|
706
|
+
MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT),
|
707
|
+
]
|
708
|
+
)
|
690
709
|
|
691
710
|
expect(@t).to receive(:fetch).twice.and_yield("--foo\n")
|
692
711
|
@t.syncdown(create: true)
|
@@ -694,18 +713,20 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
694
713
|
expect(FileTest.exist?(@project_dir + '/tsud/two.lua')).to be true
|
695
714
|
end
|
696
715
|
|
697
|
-
it
|
716
|
+
it 'updates' do
|
698
717
|
FileUtils.touch(@project_dir + '/tsud/one.lua')
|
699
718
|
FileUtils.touch(@project_dir + '/tsud/two.lua')
|
700
|
-
expect(@t).to receive(:list).once.and_return(
|
701
|
-
|
702
|
-
|
703
|
-
|
719
|
+
expect(@t).to receive(:list).once.and_return(
|
720
|
+
[
|
721
|
+
MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT),
|
722
|
+
MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT),
|
723
|
+
]
|
724
|
+
)
|
704
725
|
|
705
726
|
expect(@t).to receive(:fetch).twice.and_yield("--foo\n")
|
706
727
|
expect(@t).to receive(:to_remote_item).and_return(
|
707
|
-
MrMurano::SyncUpDown::Item.new(
|
708
|
-
MrMurano::SyncUpDown::Item.new(
|
728
|
+
MrMurano::SyncUpDown::Item.new(name: 'one.lua', updated_at: ITEM_UPDATED_AT),
|
729
|
+
MrMurano::SyncUpDown::Item.new(name: 'two.lua', updated_at: ITEM_UPDATED_AT)
|
709
730
|
)
|
710
731
|
@t.syncdown(update: true)
|
711
732
|
expect(FileTest.exist?(@project_dir + '/tsud/one.lua')).to be true
|
@@ -748,5 +769,3 @@ RSpec.describe MrMurano::SyncUpDown do
|
|
748
769
|
# end
|
749
770
|
end
|
750
771
|
|
751
|
-
# vim: set ai et sw=2 ts=2 :
|
752
|
-
|