masamune 0.15.2 → 0.15.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/masamune/commands/hive.rb +2 -5
- data/lib/masamune/configuration.rb +1 -1
- data/lib/masamune/filesystem.rb +7 -3
- data/lib/masamune/version.rb +1 -1
- data/spec/masamune/filesystem_spec.rb +1 -0
- data/spec/masamune/rspec/job_fixture_spec.rb +81 -22
- data/spec/support/masamune/mock_filesystem.rb +4 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 104f7e365e635e684f6a1e955bcb5d86af5ffe3a
|
4
|
+
data.tar.gz: 5f4d61e0c5934fb9b9af59b1a72cad20c1fc1173
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55bac4af92f58e7af91d4d2aeae1a670e415287538e784f7ccbe0d1b2ec30e2fca9d907b938c507bd96265babb31bd643d418fb9434e598001d0343c8cf4723e
|
7
|
+
data.tar.gz: 508a833ca5711b4af150fb9f54e68ca91cf6e1faf69704a43e6e03288758b68365d9a69526c29f06a4d319f6338404412fa4543bfd4a4582a519ff080e38e65e
|
@@ -135,11 +135,8 @@ module Masamune::Commands
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def load_setup_files
|
138
|
-
files =
|
139
|
-
|
140
|
-
filesystem.glob_sort(path, order: :basename).each do |file|
|
141
|
-
files << file
|
142
|
-
end
|
138
|
+
files = @setup_files.map do |path|
|
139
|
+
filesystem.glob_sort(path, order: :basename)
|
143
140
|
end
|
144
141
|
files.flatten.compact.map { |file| {'-i' => file} }
|
145
142
|
end
|
@@ -89,7 +89,7 @@ class Masamune::Configuration
|
|
89
89
|
|
90
90
|
def load_catalog(paths = [])
|
91
91
|
paths.each do |path|
|
92
|
-
filesystem.glob_sort(path, order: :basename)
|
92
|
+
filesystem.glob_sort(path, order: :basename) do |file|
|
93
93
|
configuration.with_quiet do
|
94
94
|
catalog.load(file)
|
95
95
|
end
|
data/lib/masamune/filesystem.rb
CHANGED
@@ -256,12 +256,16 @@ module Masamune
|
|
256
256
|
end
|
257
257
|
|
258
258
|
def glob_sort(pattern, options = {})
|
259
|
-
|
259
|
+
return to_enum(:glob_sort, pattern, options).to_a unless block_given?
|
260
260
|
case options[:order]
|
261
261
|
when :basename
|
262
|
-
|
262
|
+
glob(pattern).sort { |x,y| File.basename(x) <=> File.basename(y) }.each do |result|
|
263
|
+
yield result
|
264
|
+
end
|
263
265
|
else
|
264
|
-
result
|
266
|
+
glob(pattern) do |result|
|
267
|
+
yield result
|
268
|
+
end
|
265
269
|
end
|
266
270
|
end
|
267
271
|
|
data/lib/masamune/version.rb
CHANGED
@@ -737,6 +737,7 @@ shared_examples_for 'Filesystem' do
|
|
737
737
|
end
|
738
738
|
|
739
739
|
it { is_expected.to eq(%w(/tmp/c/00.txt /tmp/b/01.txt /tmp/a/02.txt)) }
|
740
|
+
it { expect { |b| instance.glob_sort('/tmp/*', order: :basename, &b) }.to yield_successive_args(*%w(/tmp/c/00.txt /tmp/b/01.txt /tmp/a/02.txt)) }
|
740
741
|
end
|
741
742
|
|
742
743
|
describe '#copy_file_to_file' do
|
@@ -140,11 +140,13 @@ describe Masamune::JobFixture do
|
|
140
140
|
}
|
141
141
|
end
|
142
142
|
|
143
|
-
let(:
|
143
|
+
let(:reference_data) { {} }
|
144
|
+
let(:another_reference_data) { {} }
|
144
145
|
|
145
146
|
before do
|
146
147
|
described_class.new(path: fixture_path, name: 'basic', data: basic_data).save
|
147
|
-
described_class.new(path: fixture_path, name: '
|
148
|
+
described_class.new(path: fixture_path, name: 'reference', data: reference_data).save
|
149
|
+
described_class.new(path: fixture_path, name: 'another_reference', data: another_reference_data).save
|
148
150
|
end
|
149
151
|
|
150
152
|
context 'with basic fixture from path' do
|
@@ -178,7 +180,7 @@ describe Masamune::JobFixture do
|
|
178
180
|
end
|
179
181
|
|
180
182
|
context 'with reference fixture' do
|
181
|
-
let(:
|
183
|
+
let(:reference_data) do
|
182
184
|
{
|
183
185
|
'inputs' => [
|
184
186
|
{
|
@@ -200,17 +202,17 @@ describe Masamune::JobFixture do
|
|
200
202
|
}
|
201
203
|
end
|
202
204
|
|
203
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
205
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
204
206
|
|
205
207
|
it 'loads referenced fixture' do
|
206
|
-
expect(instance.inputs).to include(
|
208
|
+
expect(instance.inputs).to include(reference_data['inputs'].first)
|
207
209
|
expect(instance.inputs).to include(basic_data['outputs'].first)
|
208
|
-
expect(instance.outputs).to eq(
|
210
|
+
expect(instance.outputs).to eq(reference_data['outputs'])
|
209
211
|
end
|
210
212
|
end
|
211
213
|
|
212
214
|
context 'with reference fixture and path' do
|
213
|
-
let(:
|
215
|
+
let(:reference_data) do
|
214
216
|
{
|
215
217
|
'inputs' => [
|
216
218
|
{
|
@@ -233,17 +235,17 @@ describe Masamune::JobFixture do
|
|
233
235
|
}
|
234
236
|
end
|
235
237
|
|
236
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
238
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
237
239
|
|
238
240
|
it 'loads referenced fixture' do
|
239
|
-
expect(instance.inputs).to include(
|
241
|
+
expect(instance.inputs).to include(reference_data['inputs'].first)
|
240
242
|
expect(instance.inputs).to include(basic_data['outputs'].first)
|
241
|
-
expect(instance.outputs).to eq(
|
243
|
+
expect(instance.outputs).to eq(reference_data['outputs'])
|
242
244
|
end
|
243
245
|
end
|
244
246
|
|
245
247
|
context 'with reference fixture from file' do
|
246
|
-
let(:
|
248
|
+
let(:reference_data) do
|
247
249
|
{
|
248
250
|
'inputs' => [
|
249
251
|
{
|
@@ -265,18 +267,18 @@ describe Masamune::JobFixture do
|
|
265
267
|
}
|
266
268
|
end
|
267
269
|
|
268
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
270
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
269
271
|
|
270
272
|
it 'loads referenced fixture' do
|
271
|
-
expect(instance.inputs).to include(
|
273
|
+
expect(instance.inputs).to include(reference_data['inputs'].first)
|
272
274
|
expect(instance.inputs).to include(basic_data['outputs'].first)
|
273
|
-
expect(instance.outputs).to eq(
|
275
|
+
expect(instance.outputs).to eq(reference_data['outputs'])
|
274
276
|
end
|
275
277
|
end
|
276
278
|
|
277
279
|
|
278
280
|
context 'with reference fixture and section' do
|
279
|
-
let(:
|
281
|
+
let(:reference_data) do
|
280
282
|
{
|
281
283
|
'inputs' => [
|
282
284
|
{
|
@@ -299,17 +301,17 @@ describe Masamune::JobFixture do
|
|
299
301
|
}
|
300
302
|
end
|
301
303
|
|
302
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
304
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
303
305
|
|
304
306
|
it 'loads referenced fixture' do
|
305
|
-
expect(instance.inputs).to include(
|
307
|
+
expect(instance.inputs).to include(reference_data['inputs'].first)
|
306
308
|
expect(instance.inputs).to include(basic_data['inputs'].first)
|
307
|
-
expect(instance.outputs).to eq(
|
309
|
+
expect(instance.outputs).to eq(reference_data['outputs'])
|
308
310
|
end
|
309
311
|
end
|
310
312
|
|
311
313
|
context 'with reference fixture that does not exist' do
|
312
|
-
let(:
|
314
|
+
let(:reference_data) do
|
313
315
|
{
|
314
316
|
'inputs' => [
|
315
317
|
{
|
@@ -331,13 +333,13 @@ describe Masamune::JobFixture do
|
|
331
333
|
}
|
332
334
|
end
|
333
335
|
|
334
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
336
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
335
337
|
|
336
338
|
it { expect { instance.inputs }.to raise_error(ArgumentError) }
|
337
339
|
end
|
338
340
|
|
339
341
|
context 'with invalid reference fixture' do
|
340
|
-
let(:
|
342
|
+
let(:reference_data) do
|
341
343
|
{
|
342
344
|
'inputs' => [
|
343
345
|
{
|
@@ -357,9 +359,66 @@ describe Masamune::JobFixture do
|
|
357
359
|
}
|
358
360
|
end
|
359
361
|
|
360
|
-
subject(:instance) { described_class.load(path: fixture_path, name: '
|
362
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
361
363
|
|
362
364
|
it { expect { instance.inputs }.to raise_error(ArgumentError) }
|
363
365
|
end
|
366
|
+
|
367
|
+
context 'with reference fixture that includes reference' do
|
368
|
+
let(:another_reference_data) do
|
369
|
+
{
|
370
|
+
'inputs' => [
|
371
|
+
{
|
372
|
+
'file' => 'another_input_file',
|
373
|
+
'data' => 'another_input_data'
|
374
|
+
},
|
375
|
+
{
|
376
|
+
'reference' => {
|
377
|
+
'fixture' => 'basic',
|
378
|
+
'section' => 'inputs'
|
379
|
+
}
|
380
|
+
}
|
381
|
+
],
|
382
|
+
'outputs' => [
|
383
|
+
{
|
384
|
+
'file' => 'another_output_file',
|
385
|
+
'data' => 'another_output_data'
|
386
|
+
}
|
387
|
+
]
|
388
|
+
}
|
389
|
+
end
|
390
|
+
|
391
|
+
let(:reference_data) do
|
392
|
+
{
|
393
|
+
'inputs' => [
|
394
|
+
{
|
395
|
+
'file' => 'other_input_file',
|
396
|
+
'data' => 'other_input_data'
|
397
|
+
},
|
398
|
+
{
|
399
|
+
'reference' => {
|
400
|
+
'fixture' => 'another_reference',
|
401
|
+
'section' => 'inputs'
|
402
|
+
}
|
403
|
+
}
|
404
|
+
],
|
405
|
+
'outputs' => [
|
406
|
+
{
|
407
|
+
'file' => 'other_output_file',
|
408
|
+
'data' => 'other_output_data'
|
409
|
+
}
|
410
|
+
]
|
411
|
+
}
|
412
|
+
end
|
413
|
+
|
414
|
+
subject(:instance) { described_class.load(path: fixture_path, name: 'reference') }
|
415
|
+
|
416
|
+
it 'loads both referenced fixtures' do
|
417
|
+
expect(instance.inputs).to include(reference_data['inputs'].first)
|
418
|
+
expect(instance.inputs).to include(basic_data['inputs'].first)
|
419
|
+
expect(instance.inputs).to include(another_reference_data['inputs'].first)
|
420
|
+
expect(instance.outputs).to eq(reference_data['outputs'])
|
421
|
+
end
|
422
|
+
end
|
364
423
|
end
|
365
424
|
end
|
@@ -49,7 +49,10 @@ class Masamune::MockFilesystem < Delegator
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def glob_sort(pattern, options = {})
|
52
|
-
|
52
|
+
return to_enum(:glob_sort, pattern, options).to_a unless block_given?
|
53
|
+
glob(pattern) do |file|
|
54
|
+
yield file
|
55
|
+
end
|
53
56
|
end
|
54
57
|
|
55
58
|
def glob_stat(pattern)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: masamune
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Andrews
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -435,7 +435,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
435
435
|
version: '0'
|
436
436
|
requirements: []
|
437
437
|
rubyforge_project:
|
438
|
-
rubygems_version: 2.4.
|
438
|
+
rubygems_version: 2.4.5.1
|
439
439
|
signing_key:
|
440
440
|
specification_version: 4
|
441
441
|
summary: Hybrid Data & Work Flow
|