vendorer 0.1.7 → 0.1.8

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vendorer (0.1.7)
4
+ vendorer (0.1.8)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  class Vendorer
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
data/lib/vendorer.rb CHANGED
@@ -30,6 +30,7 @@ class Vendorer
30
30
  if commit = (options[:ref] || options[:tag] || options[:branch])
31
31
  run "cd #{path} && git checkout '#{commit}'"
32
32
  end
33
+ run("cd #{path} && git submodule update --init --recursive")
33
34
  run "rm -rf #{path}/.git"
34
35
  yield path if block_given?
35
36
  end
@@ -2,8 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe Vendorer do
4
4
  before do
5
+ Dir.chdir File.dirname(File.dirname(__FILE__))
5
6
  `rm -rf spec/tmp`
6
7
  `mkdir spec/tmp`
8
+ Dir.chdir 'spec/tmp'
7
9
  end
8
10
 
9
11
  after do
@@ -11,29 +13,29 @@ describe Vendorer do
11
13
  end
12
14
 
13
15
  def write(file, content)
14
- File.open("spec/tmp/#{file}",'w'){|f| f.write(content) }
16
+ File.open(file,'w'){|f| f.write(content) }
15
17
  end
16
18
 
17
19
  def read(file)
18
- File.read("spec/tmp/#{file}")
20
+ File.read(file)
19
21
  end
20
22
 
21
23
  def size(file)
22
- File.size("spec/tmp/#{file}")
24
+ File.size(file)
23
25
  end
24
26
 
25
27
  def run(cmd)
26
- result = `cd spec/tmp && #{cmd} 2>&1`
28
+ result = `#{cmd} 2>&1`
27
29
  raise result unless $?.success?
28
30
  result
29
31
  end
30
32
 
31
33
  def ls(path)
32
- `ls spec/tmp/#{path} 2>&1`.split("\n")
34
+ `ls #{path} 2>&1`.split("\n")
33
35
  end
34
36
 
35
37
  def vendorer(args='', options={})
36
- out = `cd spec/tmp && bundle exec ../../bin/vendorer #{args} 2>&1`
38
+ out = `bundle exec ../../bin/vendorer #{args} 2>&1`
37
39
  raise out if $?.success? == !!options[:raise]
38
40
  out
39
41
  end
@@ -302,6 +304,60 @@ describe Vendorer do
302
304
  read('public/javascripts/jquery.js').should include('jQuery')
303
305
  end
304
306
  end
307
+
308
+ context "submodules" do
309
+ def create_git_repo(folder, command)
310
+ # create a git repo with a submodule
311
+ run "mkdir #{folder}"
312
+ run "cd #{folder} && git init"
313
+ run "cd #{folder} && #{command}"
314
+ run "cd #{folder} && git add ."
315
+ run "cd #{folder} && git commit -am 'initial'"
316
+ end
317
+
318
+ let(:vendorer){
319
+ v = Vendorer.new
320
+ def v.puts(x);end # silence
321
+ v
322
+ }
323
+
324
+ it "installs submodules" do
325
+ create_git_repo 'a', 'git submodule add `cd ../../../.git && pwd` sub'
326
+
327
+ vendorer.folder 'plugin', 'a/.git'
328
+
329
+ run("ls -a plugin").should == ".\n..\n.gitmodules\nsub\n"
330
+ run("ls -a plugin/sub").should include('Gemfile')
331
+ end
332
+
333
+ it "installs recursive submodules" do
334
+ create_git_repo 'a', 'git submodule add `cd ../../../.git && pwd` sub_a'
335
+ create_git_repo 'b', 'git submodule add `cd ../a/.git && pwd` sub_b'
336
+
337
+ vendorer.folder 'plugin', 'b/.git'
338
+
339
+ run("ls -a plugin").should == ".\n..\n.gitmodules\nsub_b\n"
340
+ run("ls -a plugin/sub_b").should == ".\n..\n.git\n.gitmodules\nsub_a\n"
341
+ run("ls -a plugin/sub_b/sub_a").should include('Gemfile')
342
+ end
343
+
344
+ it "installs recursive submodules from a branch" do
345
+ create_git_repo 'a', 'git submodule add `cd ../../../.git && pwd` sub_a'
346
+ create_git_repo 'b', 'touch .gitmodules'
347
+
348
+ # create submodules on a branch
349
+ run "cd b && git co -b with_submodules"
350
+ run "cd b && git submodule add `cd ../a/.git && pwd` sub_b"
351
+ run "cd b && git add . && git commit -am 'submodules'"
352
+ run "cd b && git checkout master"
353
+
354
+ vendorer.folder 'plugin', 'b/.git', :branch => 'with_submodules'
355
+
356
+ run("ls -a plugin").should == ".\n..\n.gitmodules\nsub_b\n"
357
+ run("ls -a plugin/sub_b").should == ".\n..\n.git\n.gitmodules\nsub_a\n"
358
+ run("ls -a plugin/sub_b/sub_a").should include('Gemfile')
359
+ end
360
+ end
305
361
  end
306
362
 
307
363
  describe '#rewrite' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vendorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-02 00:00:00.000000000 Z
12
+ date: 2012-01-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: michael@grosser.it
@@ -44,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
44
44
  version: '0'
45
45
  segments:
46
46
  - 0
47
- hash: 53423261
47
+ hash: -191468703
48
48
  required_rubygems_version: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  version: '0'
54
54
  segments:
55
55
  - 0
56
- hash: 53423261
56
+ hash: -191468703
57
57
  requirements: []
58
58
  rubyforge_project:
59
59
  rubygems_version: 1.8.10