right_scraper 3.2.6 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/lib/right_scraper.rb +16 -34
  3. data/lib/right_scraper/builders.rb +32 -0
  4. data/lib/right_scraper/builders/base.rb +19 -20
  5. data/lib/right_scraper/builders/filesystem.rb +8 -6
  6. data/lib/right_scraper/builders/union.rb +4 -1
  7. data/lib/right_scraper/loggers.rb +31 -0
  8. data/lib/right_scraper/loggers/base.rb +113 -0
  9. data/lib/right_scraper/loggers/default.rb +98 -0
  10. data/lib/right_scraper/{scraper.rb → main.rb} +53 -9
  11. data/lib/right_scraper/processes.rb +33 -0
  12. data/lib/right_scraper/processes/shell.rb +227 -0
  13. data/lib/right_scraper/processes/{ssh.rb → ssh_agent.rb} +4 -0
  14. data/lib/right_scraper/processes/svn_client.rb +117 -0
  15. data/lib/right_scraper/processes/warden.rb +358 -0
  16. data/lib/right_scraper/registered_base.rb +154 -0
  17. data/lib/right_scraper/repositories.rb +33 -0
  18. data/lib/right_scraper/repositories/base.rb +271 -232
  19. data/lib/right_scraper/repositories/download.rb +8 -6
  20. data/lib/right_scraper/repositories/git.rb +8 -9
  21. data/lib/right_scraper/repositories/svn.rb +8 -8
  22. data/lib/right_scraper/resources.rb +32 -0
  23. data/lib/right_scraper/resources/base.rb +5 -1
  24. data/lib/right_scraper/resources/cookbook.rb +34 -27
  25. data/lib/right_scraper/resources/workflow.rb +27 -28
  26. data/lib/right_scraper/retrievers.rb +34 -0
  27. data/lib/right_scraper/retrievers/base.rb +80 -84
  28. data/lib/right_scraper/retrievers/checkout_base.rb +178 -0
  29. data/lib/right_scraper/retrievers/download.rb +125 -117
  30. data/lib/right_scraper/retrievers/git.rb +377 -223
  31. data/lib/right_scraper/retrievers/svn.rb +102 -62
  32. data/lib/right_scraper/scanners.rb +37 -0
  33. data/lib/right_scraper/scanners/base.rb +77 -80
  34. data/lib/right_scraper/scanners/cookbook_manifest.rb +31 -30
  35. data/lib/right_scraper/scanners/cookbook_metadata.rb +380 -35
  36. data/lib/right_scraper/scanners/cookbook_s3_upload.rb +56 -53
  37. data/lib/right_scraper/scanners/union.rb +61 -58
  38. data/lib/right_scraper/scanners/workflow_manifest.rb +55 -54
  39. data/lib/right_scraper/scanners/workflow_metadata.rb +41 -39
  40. data/lib/right_scraper/scanners/workflow_s3_upload.rb +59 -55
  41. data/lib/right_scraper/scrapers.rb +32 -0
  42. data/lib/right_scraper/scrapers/base.rb +217 -205
  43. data/lib/right_scraper/scrapers/cookbook.rb +42 -40
  44. data/lib/right_scraper/scrapers/workflow.rb +57 -58
  45. data/lib/right_scraper/version.rb +3 -0
  46. data/right_scraper.gemspec +12 -16
  47. metadata +57 -163
  48. data/Gemfile +0 -15
  49. data/Rakefile +0 -89
  50. data/lib/right_scraper/logger.rb +0 -107
  51. data/lib/right_scraper/loggers/noisy.rb +0 -85
  52. data/lib/right_scraper/repositories/mock.rb +0 -70
  53. data/lib/right_scraper/retrievers/checkout.rb +0 -79
  54. data/lib/right_scraper/scraper_logger.rb +0 -66
  55. data/lib/right_scraper/svn_client.rb +0 -164
  56. data/right_scraper.rconf +0 -13
  57. data/spec/builder_spec.rb +0 -50
  58. data/spec/cookbook_helper.rb +0 -73
  59. data/spec/cookbook_manifest_spec.rb +0 -93
  60. data/spec/cookbook_s3_upload_spec.rb +0 -159
  61. data/spec/download/download_retriever_spec.rb +0 -118
  62. data/spec/download/download_retriever_spec_helper.rb +0 -72
  63. data/spec/download/download_spec.rb +0 -128
  64. data/spec/download/multi_dir_spec.rb +0 -106
  65. data/spec/download/multi_dir_spec_helper.rb +0 -40
  66. data/spec/git/cookbook_spec.rb +0 -165
  67. data/spec/git/demokey +0 -27
  68. data/spec/git/demokey.pub +0 -1
  69. data/spec/git/password_key +0 -30
  70. data/spec/git/password_key.pub +0 -1
  71. data/spec/git/repository_spec.rb +0 -110
  72. data/spec/git/retriever_spec.rb +0 -553
  73. data/spec/git/retriever_spec_helper.rb +0 -112
  74. data/spec/git/scraper_spec.rb +0 -151
  75. data/spec/git/ssh_spec.rb +0 -174
  76. data/spec/git/url_spec.rb +0 -103
  77. data/spec/logger_spec.rb +0 -185
  78. data/spec/repository_spec.rb +0 -111
  79. data/spec/retriever_spec_helper.rb +0 -146
  80. data/spec/scanner_spec.rb +0 -61
  81. data/spec/scraper_helper.rb +0 -88
  82. data/spec/scraper_spec.rb +0 -147
  83. data/spec/spec_helper.rb +0 -185
  84. data/spec/svn/cookbook_spec.rb +0 -96
  85. data/spec/svn/multi_svn_spec.rb +0 -64
  86. data/spec/svn/multi_svn_spec_helper.rb +0 -40
  87. data/spec/svn/repository_spec.rb +0 -72
  88. data/spec/svn/retriever_spec.rb +0 -266
  89. data/spec/svn/scraper_spec.rb +0 -90
  90. data/spec/svn/svn_retriever_spec_helper.rb +0 -90
  91. data/spec/svn/url_spec.rb +0 -47
  92. data/spec/url_spec.rb +0 -164
@@ -1,553 +0,0 @@
1
- #--
2
- # Copyright: Copyright (c) 2010-2011 RightScale, Inc.
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # 'Software'), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
- # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
- # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
- # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
- # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
- require File.expand_path(File.join(File.dirname(__FILE__), 'retriever_spec_helper'))
25
- require 'set'
26
-
27
- describe RightScraper::Retrievers::Git do
28
- include RightScraper::SpecHelpers::DevelopmentModeEnvironment
29
-
30
- include RightScraper::ScraperHelper
31
-
32
- def secondary_cookbook(where)
33
- FileUtils.mkdir_p(where)
34
- @helper.create_cookbook(where, @helper.repo_content)
35
- end
36
-
37
- def secondary_workflow(where, name=nil, definition=nil, metadata=nil)
38
- FileUtils.mkdir_p(where)
39
- @helper.create_workflow(where, name || 'workflow',
40
- definition || "sequence\n a\n b",
41
- metadata || {"random" => 42 })
42
- end
43
-
44
- def get_scraper(repo, basedir)
45
- @retriever = @retriever_class.new(repo,
46
- :basedir => basedir,
47
- :max_bytes => 1024**2,
48
- :max_seconds => 20)
49
- @retriever.retrieve
50
- @scraper = RightScraper::Scrapers::Base.scraper(:repo_dir => @retriever.repo_dir,
51
- :kind => :cookbook,
52
- :repository => @retriever.repository,
53
- :ignorable_paths => @retriever.ignorable_paths)
54
- end
55
-
56
- before(:all) do
57
- @ignore = ['.git']
58
- @retriever_class = RightScraper::Retrievers::Git
59
- end
60
-
61
- context 'given a git repository' do
62
- before(:each) do
63
- @helper = RightScraper::GitRetrieverSpecHelper.new
64
- @repo = RightScraper::Repositories::Base.from_hash(
65
- :display_name => 'test repo',
66
- :repo_type => :git,
67
- :url => @helper.repo_path)
68
- end
69
-
70
- after(:each) do
71
- @helper.close unless @helper.nil?
72
- @helper = nil
73
- end
74
-
75
- context 'of workflows' do
76
-
77
- before(:each) do
78
- @helper.setup_workflows
79
- end
80
-
81
- context 'with one workflow' do
82
- include RightScraper::SpecHelpers::FromScratchScraping
83
- include RightScraper::SpecHelpers::WorkflowScraping
84
-
85
- it 'should scrape the master branch' do
86
- check_resource @scraper.next_resource,
87
- :position => 'workflow.def',
88
- :metadata => {},
89
- :manifest => {"workflow.def"=>"15ce480ea6c94b51056e028b0e0bd7da8024d924",
90
- "workflow.meta"=>"5f36b2ea290645ee34d943220a14b54ee5ea5be5"}
91
- end
92
-
93
- it 'should only see one workflow' do
94
- @scraper.next_resource.should_not == nil
95
- @scraper.next_resource.should == nil
96
- end
97
-
98
- it 'should record the head SHA' do
99
- tag = @scraper.next_resource.repository.tag
100
- tag.should_not == "master"
101
- tag.should =~ /^[A-Fa-f0-9]+$/
102
- end
103
- end
104
-
105
- context 'with a subworkflow' do
106
- before(:each) do
107
- subdir = File.join(@helper.repo_path, "workflow")
108
- secondary_workflow(subdir)
109
- @helper.commit_content("subworkflow added")
110
- end
111
-
112
- include RightScraper::SpecHelpers::FromScratchScraping
113
- include RightScraper::SpecHelpers::WorkflowScraping
114
-
115
- it 'should see two workflows' do
116
- @scraper.next_resource.should_not == nil
117
- @scraper.next_resource.should_not == nil
118
- @scraper.next_resource.should == nil
119
- end
120
-
121
- it 'should have the subworkflow in the manifest' do
122
- workflow = @scraper.next_resource
123
- workflow = @scraper.next_resource
124
- workflow.manifest["workflow.def"].should == "e687ad52d8fba8010a255e3c2a9e891264a24910"
125
- workflow.manifest["workflow.meta"].should == "58060413e90f84add5b2dace3ba7e30d2689336f"
126
- end
127
- end
128
-
129
- context 'with multiple workflows' do
130
- before(:each) do
131
- FileUtils.rm(File.join(@helper.repo_path, "workflow.meta"))
132
- @workflow_places = [File.join(@helper.repo_path, "workflows", "first"),
133
- File.join(@helper.repo_path, "workflows", "second"),
134
- File.join(@helper.repo_path, "other_random_place")]
135
- @workflow_places.each {|place| secondary_workflow(place)}
136
- @helper.commit_content("secondary workflows added")
137
- end
138
-
139
- include RightScraper::SpecHelpers::FromScratchScraping
140
- include RightScraper::SpecHelpers::WorkflowScraping
141
-
142
- it 'should scrape' do
143
- scraped = []
144
- while scrape = @scraper.next_resource
145
- place = (@workflow_places - scraped).detect {|place| File.join(@helper.repo_path, scrape.pos) == place}
146
- scraped << place
147
- check_resource scrape, :position => scrape.pos,
148
- :metadata => {"random" => 42 },
149
- :manifest => {"workflow.def" =>"e687ad52d8fba8010a255e3c2a9e891264a24910",
150
- "workflow.meta"=>"58060413e90f84add5b2dace3ba7e30d2689336f"}
151
- end
152
- scraped.should have(@workflow_places.size).repositories
153
- end
154
- end
155
-
156
- context 'with two-level deep workflows' do
157
- before(:each) do
158
- @workflow_places = [File.join(@helper.repo_path, "workflows", "first"),
159
- File.join(@helper.repo_path, "workflows", "some_dir", "some_subdir", "second"),
160
- File.join(@helper.repo_path, "workflows", "some_dir", "some_subdir", "third")]
161
- @workflow_places.each {|place| secondary_workflow(place)}
162
- @helper.commit_content("secondary workflows added")
163
- end
164
-
165
- include RightScraper::SpecHelpers::FromScratchScraping
166
- include RightScraper::SpecHelpers::WorkflowScraping
167
-
168
- it 'should scrape' do
169
- @scraper.scrape
170
- @scraper.resources.each do |res|
171
- res.metadata_path.should_not be_nil
172
- res.definition_path.should_not be_nil
173
- end
174
- @scraper.resources.size.should == @workflow_places.size + 1 # One in the root repo_path
175
- end
176
- end
177
-
178
- end
179
-
180
- context 'of cookbooks' do
181
-
182
- before(:each) do
183
- @helper.setup_cookbooks
184
- end
185
-
186
- context 'with one cookbook' do
187
- include RightScraper::SpecHelpers::FromScratchScraping
188
- include RightScraper::SpecHelpers::CookbookScraping
189
-
190
- it 'should scrape the master branch' do
191
- check_resource @scraper.next_resource
192
- end
193
-
194
- it 'should only see one cookbook' do
195
- @scraper.next_resource.should_not == nil
196
- @scraper.next_resource.should == nil
197
- end
198
-
199
- it 'should record the head SHA' do
200
- tag = @scraper.next_resource.repository.tag
201
- tag.should_not == "master"
202
- tag.should =~ /^[A-Fa-f0-9]+$/
203
- end
204
- end
205
-
206
- context 'with a subcookbook' do
207
- before(:each) do
208
- @subdir = File.join(@helper.repo_path, "cookbook")
209
- secondary_cookbook(@subdir)
210
- @helper.commit_content("subcookbook added")
211
- end
212
-
213
- include RightScraper::SpecHelpers::FromScratchScraping
214
- include RightScraper::SpecHelpers::CookbookScraping
215
-
216
- it 'should still see only one cookbook' do
217
- @scraper.next_resource.should_not == nil
218
- @scraper.next_resource.should == nil
219
- end
220
-
221
- it 'should have the subcookbook in the manifest' do
222
- cookbook = @scraper.next_resource
223
- contents = ::File.read(::File.join(@subdir, "metadata.json"))
224
- cookbook.manifest["cookbook/metadata.json"].should == ::Digest::MD5.hexdigest(contents)
225
- end
226
- end
227
-
228
- context 'with multiple cookbooks' do
229
- before(:each) do
230
- FileUtils.rm(File.join(@helper.repo_path, "metadata.json"))
231
- @cookbook_places = [File.join(@helper.repo_path, "cookbooks", "first"),
232
- File.join(@helper.repo_path, "cookbooks", "second"),
233
- File.join(@helper.repo_path, "other_random_place")]
234
- @cookbook_places.each {|place| secondary_cookbook(place)}
235
- @helper.commit_content("secondary cookbooks added")
236
- end
237
-
238
- include RightScraper::SpecHelpers::FromScratchScraping
239
- include RightScraper::SpecHelpers::CookbookScraping
240
-
241
- it 'should scrape' do
242
- scraped = []
243
- while scrape = @scraper.next_resource
244
- place = (@cookbook_places - scraped).detect {|place| File.join(@helper.repo_path, scrape.pos) == place}
245
- scraped << place
246
- check_resource scrape, :position => scrape.pos
247
- end
248
- scraped.should have(@cookbook_places.size).repositories
249
- end
250
-
251
- end
252
-
253
- context 'and a branch' do
254
- before(:each) do
255
- @helper.setup_branch('test_branch', @helper.branch_content)
256
- @repo = RightScraper::Repositories::Base.from_hash(:display_name => 'test repo',
257
- :repo_type => :git,
258
- :url => @helper.repo_path,
259
- :tag => 'test_branch')
260
- end
261
-
262
- include RightScraper::SpecHelpers::FromScratchScraping
263
- include RightScraper::SpecHelpers::CookbookScraping
264
-
265
- it 'should scrape a branch' do
266
- check_resource @scraper.next_resource
267
- end
268
- end
269
-
270
- context 'and a branch and a tag that are named the same' do
271
- before(:each) do
272
- @helper.setup_branch('test_branch')
273
- @helper.setup_tag('test_branch')
274
- @repo = RightScraper::Repositories::Base.from_hash(:display_name => 'test repo',
275
- :repo_type => :git,
276
- :url => @helper.repo_path,
277
- :tag => 'test_branch')
278
- end
279
-
280
- it 'should fail to scrape' do
281
- lambda {
282
- @scraper = get_scraper(@repo, @helper.scraper_path)
283
- @scraper.next_resource
284
- @scraper.close
285
- }.should raise_exception(/Ambiguous reference/)
286
- end
287
- end
288
-
289
- context 'and a tag' do
290
- before(:each) do
291
- @helper.setup_tag('test_tag')
292
- @repo = RightScraper::Repositories::Base.from_hash(:display_name => 'test repo',
293
- :repo_type => :git,
294
- :url => @helper.repo_path,
295
- :tag => 'test_tag')
296
- end
297
-
298
- include RightScraper::SpecHelpers::FromScratchScraping
299
- include RightScraper::SpecHelpers::CookbookScraping
300
-
301
- it 'should scrape a tag' do
302
- check_resource @scraper.next_resource
303
- end
304
- end
305
-
306
- context 'and a sha ref' do
307
- before(:each) do
308
- @oldmetadata = @helper.repo_content
309
- @helper.create_file_layout(@helper.repo_path, @helper.branch_content)
310
- @helper.commit_content
311
- @repo = RightScraper::Repositories::Base.from_hash(:display_name => 'test repo',
312
- :repo_type => :git,
313
- :url => @helper.repo_path,
314
- :tag => @helper.commit_id(1))
315
- end
316
-
317
- include RightScraper::SpecHelpers::FromScratchScraping
318
- include RightScraper::SpecHelpers::CookbookScraping
319
-
320
- it 'should scrape a sha' do
321
- check_resource @scraper.next_resource, :metadata => @oldmetadata, :rootdir => @scraper.send(:repo_dir)
322
- end
323
- end
324
-
325
- context 'and an incremental scraper' do
326
-
327
- def reset_scraper
328
- @olddir = @scraper.send(:repo_dir)
329
- @scraper.close
330
- @scraper = get_scraper(@repo, @helper.scraper_path)
331
- end
332
-
333
- before(:each) do
334
- @scraper = get_scraper(@repo, @helper.scraper_path)
335
- end
336
-
337
- after(:each) do
338
- @scraper.close if @scraper
339
- @scraper = nil
340
- end
341
-
342
- it 'the scraper should store intermediate versions where we expect' do
343
- @scraper.send(:repo_dir).should begin_with @helper.scraper_path
344
- end
345
-
346
- it 'the scraper should scrape' do
347
- check_resource @scraper.next_resource
348
- end
349
-
350
- it 'the scraper should only see one cookbook' do
351
- @scraper.next_resource.should_not == nil
352
- @scraper.next_resource.should == nil
353
- end
354
-
355
- context 'after the scraper runs once' do
356
- before(:each) do
357
- check_resource @scraper.next_resource
358
- end
359
-
360
- context 'and a branch is made on the master repo' do
361
- before(:each) do
362
- @helper.setup_branch("foo")
363
- @helper.create_file_layout(@helper.repo_path, ['fredbarney'])
364
- @helper.commit_content("branch")
365
- @helper.setup_branch("master")
366
- end
367
-
368
- it 'should be able to check the new branch out' do
369
- @repo.tag = "foo"
370
- reset_scraper
371
- @scraper.next_resource
372
- File.exists?(File.join(@retriever.repo_dir, 'fredbarney')).should be_true
373
- end
374
- end
375
- end
376
-
377
- context 'when a change is made to the master repo' do
378
- before(:each) do
379
- @helper.create_file_layout(@helper.repo_path, @helper.branch_content)
380
- @helper.commit_content("change to master")
381
- @helper.create_file_layout(@helper.repo_path, ['frob'])
382
- @helper.commit_content("alpha")
383
- @helper.create_file_layout(@helper.repo_path, ['botz'])
384
- @helper.commit_content("beta")
385
- @helper.create_file_layout(@helper.repo_path, ['fred'])
386
- @helper.commit_content("delta")
387
- @helper.create_file_layout(@helper.repo_path, ['barney'])
388
- @helper.commit_content("gamma")
389
- end
390
-
391
- context 'when a branch is made on the master repo' do
392
- before(:each) do
393
- @helper.setup_branch("foo")
394
- @helper.create_file_layout(@helper.repo_path, ['fredbarney'])
395
- @helper.commit_content("branch")
396
- @helper.setup_branch("master")
397
- end
398
-
399
- context 'and a scrape happens' do
400
- before(:each) do
401
- reset_scraper
402
- @scraper.next_resource
403
- end
404
-
405
- context 'and the branch is deleted' do
406
- before(:each) do
407
- @helper.delete_branch("foo")
408
- end
409
-
410
- context 'a new scraper' do
411
- before(:each) do
412
- reset_scraper
413
- end
414
-
415
- it 'should not see any such branch exists' do
416
- @helper.branch?("foo").should be_false
417
- end
418
- end
419
- end
420
- end
421
-
422
- context 'a new scraper' do
423
- before(:each) do
424
- reset_scraper
425
- end
426
-
427
- it 'should not see the new change' do
428
- File.exists?(File.join(@olddir, 'fredbarney')).should be_false
429
- end
430
-
431
- it 'should note that the branch exists' do
432
- @helper.branch?("foo").should be_true
433
- end
434
- end
435
- end
436
-
437
- context 'a new scraper' do
438
- before(:each) do
439
- reset_scraper
440
- end
441
-
442
- context 'when an incompatible change is made to the master repo' do
443
- before(:each) do
444
- @scraper.next_resource
445
- end
446
-
447
- before(:each) do
448
- @helper.create_file_layout(@helper.repo_path, [{'other_branch_folder' => ['file7']}])
449
- @helper.commit_content("2nd change to master")
450
- @helper.force_rebase('master^', 'master^^^^^')
451
- end
452
-
453
- context 'a new scraper' do
454
- before(:each) do
455
- reset_scraper
456
- end
457
-
458
- it 'should use the same directory for files' do
459
- @olddir.should == @scraper.send(:repo_dir)
460
- end
461
-
462
- it 'should see the new change' do
463
- File.exists?(File.join(@olddir, 'other_branch_folder', 'file7')).should be_true
464
- end
465
-
466
- it 'should not see the middle change' do
467
- File.exists?(File.join(@olddir, 'frob')).should_not be_true
468
- end
469
- end
470
- end
471
-
472
- it 'should use the same directory for files' do
473
- @olddir.should == @scraper.send(:repo_dir)
474
- end
475
-
476
- it 'should see the new change' do
477
- File.exists?(File.join(@olddir, 'branch_folder', 'bfile1')).should be_true
478
- end
479
- end
480
-
481
- context 'with tag being an empty string' do
482
- before(:each) do
483
- @repo.tag = ""
484
- end
485
-
486
- before(:each) do
487
- reset_scraper
488
- end
489
-
490
- it 'should use the same directory for files' do
491
- @olddir.should == @scraper.send(:repo_dir)
492
- end
493
-
494
- it 'should see the new change' do
495
- File.exists?(File.join(@olddir, 'branch_folder', 'bfile1')).should be_true
496
- end
497
- end
498
- end
499
- end
500
- end
501
- end
502
-
503
- context 'given a remote git repository requiring a credential' do
504
- before(:each) do
505
- @helper = RightScraper::GitRetrieverSpecHelper.new
506
- credential_file = File.expand_path(File.join(File.dirname(__FILE__), 'demokey'))
507
- credential = File.open(credential_file) { |f| f.read }
508
- @repo = RightScraper::Repositories::Base.from_hash(
509
- :display_name => 'test repo',
510
- :repo_type => :git,
511
- :url => 'git@github.com:xeger/cookbooks_test_fixture.git',
512
- :first_credential => credential)
513
- @helper.setup_cookbooks
514
- end
515
-
516
- after(:each) do
517
- @helper.close unless @helper.nil?
518
- @helper = nil
519
- end
520
-
521
- include RightScraper::SpecHelpers::FromScratchScraping
522
- include RightScraper::SpecHelpers::CookbookScraping
523
-
524
- it 'should see a cookbook' do
525
- pending "Don't annoy GitHub unless ANNOY_GITHUB is set" unless ENV['ANNOY_GITHUB']
526
- @scraper.next_resource.should_not be_nil
527
- end
528
-
529
- context :without_host_key_checking do
530
- before(:each) do
531
- @retriever = RightScraper::Retrievers::Git.new(@repo, :basedir=>@helper.scraper_path)
532
- end
533
-
534
-
535
- it 'should override the git-SSH command' do
536
- ENV['GIT_SSH'] = nil
537
- @retriever.without_host_key_checking do
538
- ENV['GIT_SSH'].should =~ /ssh/
539
- # Run the git-ssh command, make sure it invokes the SSH client
540
- `#{ENV['GIT_SSH']} -V 2>&1`.should =~ /OpenSSH_[0-9]+\.[0-9]+/
541
- end
542
- end
543
-
544
- it 'should clean up after itself' do
545
- ENV['GIT_SSH'] = 'banana'
546
- @retriever.without_host_key_checking do
547
- ENV['GIT_SSH'].should =~ /ssh/
548
- end
549
- ENV['GIT_SSH'].should == 'banana'
550
- end
551
- end
552
- end
553
- end