diff options
author | Aaron Stone <aaron@serendipity.cx> | 2013-07-17 13:43:24 -0700 |
---|---|---|
committer | Aaron Stone <aaron@serendipity.cx> | 2013-07-17 13:43:24 -0700 |
commit | 76227ed83795b882e0d8cffcff79ea5bab61ab6c (patch) | |
tree | 230c70ee66a8d47641ab7f416b1150db26e717e0 /spec/unit/puppet/provider | |
parent | c0042a9a69f1ca58cc41e5e0efcc9afda687ed24 (diff) | |
parent | 8a58caef1fe6b2c301f321cd0d52e42cc58f5f6b (diff) | |
download | puppet-vcsrepo-76227ed83795b882e0d8cffcff79ea5bab61ab6c.tar.gz puppet-vcsrepo-76227ed83795b882e0d8cffcff79ea5bab61ab6c.tar.bz2 |
Merge pull request #78 from jhoblitt/git_provider_checkout_remote_refs
fix git provider checkout of a remote ref on an existing repo
Diffstat (limited to 'spec/unit/puppet/provider')
-rw-r--r-- | spec/unit/puppet/provider/vcsrepo/git_spec.rb | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/spec/unit/puppet/provider/vcsrepo/git_spec.rb b/spec/unit/puppet/provider/vcsrepo/git_spec.rb index cb6c0c6..e10fd1e 100644 --- a/spec/unit/puppet/provider/vcsrepo/git_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/git_spec.rb @@ -132,7 +132,7 @@ describe_provider :vcsrepo, :git, :resource => {:path => '/tmp/vcsrepo'} do provider.expects(:git).with('config', 'remote.origin.url').returns('') provider.expects(:git).with('fetch', 'origin') # FIXME provider.expects(:git).with('fetch', '--tags', 'origin') - provider.expects(:git).with('rev-parse', resource.value(:revision)).returns('currentsha') + provider.expects(:git).with('rev-parse', '--revs-only', resource.value(:revision)).returns('currentsha') provider.expects(:git).with('tag', '-l').returns("Hello") provider.revision.should == resource.value(:revision) end @@ -143,12 +143,36 @@ describe_provider :vcsrepo, :git, :resource => {:path => '/tmp/vcsrepo'} do provider.expects(:git).with('config', 'remote.origin.url').returns('') provider.expects(:git).with('fetch', 'origin') # FIXME provider.expects(:git).with('fetch', '--tags', 'origin') - provider.expects(:git).with('rev-parse', resource.value(:revision)).returns('othersha') + provider.expects(:git).with('rev-parse', '--revs-only', resource.value(:revision)).returns('othersha') provider.expects(:git).with('tag', '-l').returns("Hello") provider.revision.should == 'currentsha' end end + context "when its a ref to a remote head" do + it "should return the revision" do + provider.expects(:git).with('config', 'remote.origin.url').returns('') + provider.expects(:git).with('fetch', 'origin') # FIXME + provider.expects(:git).with('fetch', '--tags', 'origin') + provider.expects(:git).with('tag', '-l').returns("Hello") + provider.expects(:git).with('rev-parse', '--revs-only', resource.value(:revision)).returns('') + provider.expects(:git).with('ls-remote', '--heads', '--tags', 'origin', resource.value(:revision)).returns("newsha refs/heads/#{resource.value(:revision)}") + provider.revision.should == 'currentsha' + end + end + + context "when its a ref to non existant remote head" do + it "should fail" do + provider.expects(:git).with('config', 'remote.origin.url').returns('') + provider.expects(:git).with('fetch', 'origin') # FIXME + provider.expects(:git).with('fetch', '--tags', 'origin') + provider.expects(:git).with('tag', '-l').returns("Hello") + provider.expects(:git).with('rev-parse', '--revs-only', resource.value(:revision)).returns('') + provider.expects(:git).with('ls-remote', '--heads', '--tags', 'origin', resource.value(:revision)).returns('') + expect { provider.revision }.should raise_error(Puppet::Error, /not a local or remote ref$/) + end + end + context "when the source is modified" do resource_with :source => 'git://git@foo.com/bar.git' do it "should update the origin url" do @@ -156,7 +180,7 @@ describe_provider :vcsrepo, :git, :resource => {:path => '/tmp/vcsrepo'} do provider.expects(:git).with('config', 'remote.origin.url', 'git://git@foo.com/bar.git') provider.expects(:git).with('fetch', 'origin') # FIXME provider.expects(:git).with('fetch', '--tags', 'origin') - provider.expects(:git).with('rev-parse', resource.value(:revision)).returns('currentsha') + provider.expects(:git).with('rev-parse', '--revs-only', resource.value(:revision)).returns('currentsha') provider.expects(:git).with('tag', '-l').returns("Hello") provider.revision.should == resource.value(:revision) end |