dump 1.0.5 → 1.0.6

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 (42) hide show
  1. checksums.yaml +7 -15
  2. data/.rubocop_todo.yml +1 -1
  3. data/Gemfile +6 -1
  4. data/LICENSE.txt +1 -1
  5. data/README.markdown +2 -2
  6. data/dump.gemspec +2 -2
  7. data/lib/dump.rb +86 -2
  8. data/lib/{dump_rake/archive_tar_minitar_fix.rb → dump/archive_tar_minitar.rb} +0 -0
  9. data/lib/{dump_rake → dump}/assets.rb +6 -4
  10. data/lib/dump/capistrano/v2.rb +34 -34
  11. data/lib/{dump_rake → dump}/continious_timeout.rb +1 -1
  12. data/lib/{dump_rake → dump}/env.rb +4 -4
  13. data/lib/{dump_rake → dump}/env/filter.rb +1 -1
  14. data/lib/dump/rails_root.rb +19 -0
  15. data/lib/{dump_rake/dump_reader.rb → dump/reader.rb} +25 -17
  16. data/lib/{dump_rake/dump.rb → dump/snapshot.rb} +9 -5
  17. data/lib/{dump_rake → dump}/table_manipulation.rb +28 -14
  18. data/lib/{dump_rake/dump_writer.rb → dump/writer.rb} +13 -5
  19. data/lib/tasks/assets.rake +4 -4
  20. data/lib/tasks/dump.rake +10 -10
  21. data/script/update_readme +3 -3
  22. data/spec/cycle_spec.rb +78 -84
  23. data/spec/{lib/dump_rake → dump}/env/filter_spec.rb +14 -14
  24. data/spec/dump/env_spec.rb +139 -0
  25. data/spec/{lib/dump_rake → dump}/rails_root_spec.rb +11 -13
  26. data/spec/{lib/dump_rake/dump_reader_spec.rb → dump/reader_spec.rb} +89 -89
  27. data/spec/dump/snapshot_spec.rb +290 -0
  28. data/spec/{lib/dump_rake → dump}/table_manipulation_spec.rb +54 -55
  29. data/spec/{lib/dump_rake/dump_writer_spec.rb → dump/writer_spec.rb} +41 -42
  30. data/spec/dump_spec.rb +327 -0
  31. data/spec/recipes/dump_spec.rb +92 -93
  32. data/spec/spec_helper.rb +0 -3
  33. data/spec/tasks/assets_spec.rb +16 -15
  34. data/spec/tasks/dump_spec.rb +30 -29
  35. metadata +75 -98
  36. data/.autotest +0 -13
  37. data/lib/dump_rake.rb +0 -94
  38. data/lib/dump_rake/rails_root.rb +0 -13
  39. data/spec/lib/dump_rake/dump_spec.rb +0 -289
  40. data/spec/lib/dump_rake/env_spec.rb +0 -139
  41. data/spec/lib/dump_rake_spec.rb +0 -326
  42. data/spec/spec.opts +0 -4
@@ -1,326 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe DumpRake do
4
- describe 'versions' do
5
- it 'should call Dump.list if called without version' do
6
- expect(DumpRake::Dump).to receive(:list).and_return([])
7
- DumpRake.versions
8
- end
9
-
10
- it 'should call Dump.list with options if called with version' do
11
- expect(DumpRake::Dump).to receive(:list).with(:like => '123').and_return([])
12
- DumpRake.versions(:like => '123')
13
- end
14
-
15
- it 'should print versions' do
16
- expect(DumpRake::Dump).to receive(:list).and_return(%w[123.tgz 456.tgz])
17
- expect(grab_output do
18
- DumpRake.versions
19
- end[:stdout]).to eq("123.tgz\n456.tgz\n")
20
- end
21
-
22
- it 'should not show summary if not asked for' do
23
- dumps = %w[123.tgz 456.tgz].map do |s|
24
- dump = double("dump_#{s}", :path => double("dump_#{s}_path"))
25
- expect(DumpRake::DumpReader).not_to receive(:summary)
26
- dump
27
- end
28
-
29
- expect(DumpRake::Dump).to receive(:list).and_return(dumps)
30
- grab_output do
31
- expect($stderr).not_to receive(:puts)
32
- DumpRake.versions
33
- end
34
- end
35
-
36
- it 'should show summary if asked for' do
37
- dumps = %w[123.tgz 456.tgz].map do |s|
38
- dump = double("dump_#{s}", :path => double("dump_#{s}_path"))
39
- expect(DumpRake::DumpReader).to receive(:summary).with(dump.path)
40
- dump
41
- end
42
-
43
- expect(DumpRake::Dump).to receive(:list).and_return(dumps)
44
- grab_output do
45
- expect($stderr).not_to receive(:puts)
46
- DumpRake.versions(:summary => '1')
47
- end
48
- end
49
-
50
- it 'should show summary with scmema if asked for' do
51
- dumps = %w[123.tgz 456.tgz].map do |s|
52
- dump = double("dump_#{s}", :path => double("dump_#{s}_path"))
53
- expect(DumpRake::DumpReader).to receive(:summary).with(dump.path, :schema => true)
54
- dump
55
- end
56
-
57
- expect(DumpRake::Dump).to receive(:list).and_return(dumps)
58
- grab_output do
59
- expect($stderr).not_to receive(:puts)
60
- DumpRake.versions(:summary => '2')
61
- end
62
- end
63
-
64
- it 'should show output to stderr if summary raises error' do
65
- allow(DumpRake::DumpReader).to receive(:summary)
66
- dumps = %w[123.tgz 456.tgz].map do |s|
67
- double("dump_#{s}", :path => double("dump_#{s}_path"))
68
- end
69
- expect(DumpRake::DumpReader).to receive(:summary).with(dumps[1].path).and_raise('terrible error')
70
-
71
- expect(DumpRake::Dump).to receive(:list).and_return(dumps)
72
- grab_output do
73
- allow($stderr).to receive(:puts)
74
- expect($stderr).to receive(:puts) do |s|
75
- expect(s['terrible error']).not_to be_nil
76
- end
77
- DumpRake.versions(:summary => 'true')
78
- end
79
- end
80
- end
81
-
82
- describe 'create' do
83
- describe 'naming' do
84
- it "should create file in 'rails app root'/dump" do
85
- allow(File).to receive(:rename)
86
- expect(DumpRake::DumpWriter).to receive(:create) do |path|
87
- expect(File.dirname(path)).to eq(File.join(DumpRake::RailsRoot, 'dump'))
88
- end
89
- grab_output do
90
- DumpRake.create
91
- end
92
- end
93
-
94
- it "should create file with name like 'yyyymmddhhmmss.tmp' when called without description" do
95
- allow(File).to receive(:rename)
96
- expect(DumpRake::DumpWriter).to receive(:create) do |path|
97
- expect(File.basename(path)).to match(/^\d{14}\.tmp$/)
98
- end
99
- grab_output do
100
- DumpRake.create
101
- end
102
- end
103
-
104
- it "should create file with name like 'yyyymmddhhmmss-Some text and _.tmp' when called with description 'Some text and !@'" do
105
- allow(File).to receive(:rename)
106
- expect(DumpRake::DumpWriter).to receive(:create) do |path|
107
- expect(File.basename(path)).to match(/^\d{14}-Some text and _\.tmp$/)
108
- end
109
- grab_output do
110
- DumpRake.create(:desc => 'Some text and !@')
111
- end
112
- end
113
-
114
- it "should create file with name like 'yyyymmddhhmmss@super tag,second.tmp' when called with description 'Some text and !@'" do
115
- allow(File).to receive(:rename)
116
- expect(DumpRake::DumpWriter).to receive(:create) do |path|
117
- expect(File.basename(path)).to match(/^\d{14}-Some text and _\.tmp$/)
118
- end
119
- grab_output do
120
- DumpRake.create(:desc => 'Some text and !@')
121
- end
122
- end
123
-
124
- it 'should rename file after creating' do
125
- expect(File).to receive(:rename) do |tmp_path, tgz_path|
126
- expect(File.basename(tmp_path)).to match(/^\d{14}-Some text and _\.tmp$/)
127
- expect(File.basename(tgz_path)).to match(/^\d{14}-Some text and _\.tgz$/)
128
- end
129
- allow(DumpRake::DumpWriter).to receive(:create)
130
- grab_output do
131
- DumpRake.create(:desc => 'Some text and !@')
132
- end
133
- end
134
-
135
- it 'should output file name' do
136
- allow(File).to receive(:rename)
137
- allow(DumpRake::DumpWriter).to receive(:create)
138
- expect(grab_output do
139
- DumpRake.create(:desc => 'Some text and !@')
140
- end[:stdout]).to match(/^\d{14}-Some text and _\.tgz$/)
141
- end
142
- end
143
-
144
- describe 'writing' do
145
- it 'should dump schema, tables, assets' do
146
- allow(File).to receive(:rename)
147
- @dump = double('dump')
148
- expect(DumpRake::DumpWriter).to receive(:create)
149
-
150
- grab_output do
151
- DumpRake.create
152
- end
153
- end
154
- end
155
- end
156
-
157
- describe 'restore' do
158
- describe 'without version' do
159
- it 'should call Dump.list' do
160
- allow(DumpRake::Dump).to receive(:list)
161
- expect(DumpRake::Dump).to receive(:list).and_return([])
162
- grab_output do
163
- DumpRake.restore
164
- end
165
- end
166
-
167
- it 'should not call DumpReader.restore and should call Dump.list and output it to $stderr if there are no versions at all' do
168
- allow(DumpRake::Dump).to receive(:list).and_return([])
169
- expect(DumpRake::DumpReader).not_to receive(:restore)
170
- all_dumps = double('all_dumps')
171
- expect(DumpRake::Dump).to receive(:list).with(no_args).and_return(all_dumps)
172
- grab_output do
173
- expect($stderr).to receive(:puts).with(kind_of(String))
174
- expect($stderr).to receive(:puts).with(all_dumps)
175
- DumpRake.restore
176
- end
177
- end
178
-
179
- it 'should not call DumpReader.restore and should call Dump.list and output it to $stderr if there are no versions at all' do
180
- allow(DumpRake::Dump).to receive(:list).and_return([])
181
- expect(DumpRake::DumpReader).not_to receive(:restore)
182
- all_dumps = double('all_dumps')
183
- expect(DumpRake::Dump).to receive(:list).with(no_args).and_return(all_dumps)
184
- grab_output do
185
- expect($stderr).to receive(:puts).with(kind_of(String))
186
- expect($stderr).to receive(:puts).with(all_dumps)
187
- DumpRake.restore('213')
188
- end
189
- end
190
-
191
- it 'should call DumpReader.restore if there are versions' do
192
- @dump = double('dump', :path => 'dump/213.tgz')
193
- expect(DumpRake::Dump).to receive(:list).once.and_return([@dump])
194
- expect(DumpRake::DumpReader).to receive(:restore).with('dump/213.tgz')
195
- grab_output do
196
- expect($stderr).not_to receive(:puts)
197
- DumpRake.restore
198
- end
199
- end
200
- end
201
-
202
- describe 'with version' do
203
- it 'should call Dump.list with options' do
204
- allow(DumpRake::Dump).to receive(:list)
205
- expect(DumpRake::Dump).to receive(:list).with(:like => '213').and_return([])
206
- grab_output do
207
- DumpRake.restore(:like => '213')
208
- end
209
- end
210
-
211
- it 'should not call DumpReader.restore and should call versions if desired version not found' do
212
- allow(DumpRake::Dump).to receive(:list).and_return([])
213
- expect(DumpRake::DumpReader).not_to receive(:restore)
214
- all_dumps = double('all_dumps')
215
- expect(DumpRake::Dump).to receive(:list).with(no_args).and_return(all_dumps)
216
- grab_output do
217
- expect($stderr).to receive(:puts).with(kind_of(String))
218
- expect($stderr).to receive(:puts).with(all_dumps)
219
- DumpRake.restore('213')
220
- end
221
- end
222
-
223
- it 'should call DumpReader.restore if there is desired version' do
224
- @dump = double('dump', :path => 'dump/213.tgz')
225
- expect(DumpRake::Dump).to receive(:list).once.and_return([@dump])
226
- expect(DumpRake::DumpReader).to receive(:restore).with('dump/213.tgz')
227
- expect(DumpRake).not_to receive(:versions)
228
- grab_output do
229
- expect($stderr).not_to receive(:puts)
230
- DumpRake.restore(:like => '213')
231
- end
232
- end
233
-
234
- it 'should call DumpReader.restore on last version if found multiple matching versions' do
235
- @dump_a = double('dump_a', :path => 'dump/213-a.tgz')
236
- @dump_b = double('dump_b', :path => 'dump/213-b.tgz')
237
- expect(DumpRake::Dump).to receive(:list).once.and_return([@dump_a, @dump_b])
238
- expect(DumpRake::DumpReader).to receive(:restore).with('dump/213-b.tgz')
239
- grab_output do
240
- expect($stderr).not_to receive(:puts)
241
- DumpRake.restore(:like => '213')
242
- end
243
- end
244
- end
245
- end
246
-
247
- describe 'cleanup' do
248
- it 'should call ask for all files in dump dir and for dumps' do
249
- expect(DumpRake::Dump).to receive(:list).with(:all => true).and_return([])
250
- expect(DumpRake::Dump).to receive(:list).with({}).and_return([])
251
- DumpRake.cleanup
252
- end
253
-
254
- it 'should call Dump.list with options if called with version and tags' do
255
- expect(DumpRake::Dump).to receive(:list).with(:like => '123', :tags => 'a,b,c', :all => true).and_return([])
256
- expect(DumpRake::Dump).to receive(:list).with(:like => '123', :tags => 'a,b,c').and_return([])
257
- DumpRake.cleanup(:like => '123', :tags => 'a,b,c')
258
- end
259
-
260
- {
261
- {} => [0..4],
262
- {:leave => '3'} => [0..6],
263
- {:leave => '5'} => [0..4],
264
- {:leave => '9'} => [0],
265
- {:leave => '10'} => [],
266
- {:leave => '15'} => [],
267
- {:leave => 'none'} => [0..9],
268
- }.each do |options, ids|
269
- it "should call delete #{ids} dumps when called with #{options}" do
270
- dumps = %w[a b c d e f g h i j].map do |s|
271
- double("dump_#{s}", :ext => 'tgz', :path => double("dump_#{s}_path"))
272
- end
273
- tmp_dumps = %w[a b c].map do |s|
274
- double("tmp_dump_#{s}", :ext => 'tmp', :path => double("tmp_dump_#{s}_path"))
275
- end
276
- all_dumps = tmp_dumps[0, 1] + dumps[0, 5] + tmp_dumps[1, 1] + dumps[5, 5] + tmp_dumps[2, 1]
277
-
278
- (dumps.values_at(*ids) + [tmp_dumps[0], tmp_dumps[2]]).each do |dump|
279
- expect(dump).to receive(:lock).and_yield
280
- expect(dump.path).to receive(:unlink)
281
- end
282
- [tmp_dumps[1]].each do |dump|
283
- expect(dump).to receive(:lock)
284
- expect(dump.path).not_to receive(:unlink)
285
- end
286
- (dumps - dumps.values_at(*ids)).each do |dump|
287
- expect(dump).not_to receive(:lock)
288
- expect(dump.path).not_to receive(:unlink)
289
- end
290
-
291
- expect(DumpRake::Dump).to receive(:list).with(hash_including(:all => true)).and_return(all_dumps)
292
- expect(DumpRake::Dump).to receive(:list).with(hash_not_including(:all => true)).and_return(dumps)
293
- grab_output do
294
- DumpRake.cleanup({:like => '123', :tags => 'a,b,c'}.merge(options))
295
- end
296
- end
297
- end
298
-
299
- it 'should print to stderr if can not delete dump' do
300
- dumps = %w[a b c d e f g h i j].map do |s|
301
- dump = double("dump_#{s}", :ext => 'tgz', :path => double("dump_#{s}_path"))
302
- allow(dump).to receive(:lock).and_yield
303
- allow(dump.path).to receive(:unlink)
304
- dump
305
- end
306
-
307
- expect(dumps[3].path).to receive(:unlink).and_raise('Horrible error')
308
-
309
- allow(DumpRake::Dump).to receive(:list).and_return(dumps)
310
- grab_output do
311
- allow($stderr).to receive(:puts)
312
- expect($stderr).to receive(:puts) do |s|
313
- expect(s[dumps[3].path.to_s]).not_to be_nil
314
- expect(s['Horrible error']).not_to be_nil
315
- end
316
- DumpRake.cleanup
317
- end
318
- end
319
-
320
- it "should raise if called with :leave which is not a number or 'none'" do
321
- expect do
322
- DumpRake.cleanup(:leave => 'nothing')
323
- end.to raise_error
324
- end
325
- end
326
- end
@@ -1,4 +0,0 @@
1
- --colour
2
- --format progress
3
- --loadby mtime
4
- --reverse