From 8036ceca544730d4192ea31b750d200392691166 Mon Sep 17 00:00:00 2001 From: Matthew Slowe Date: Tue, 2 Jul 2013 15:59:12 +0100 Subject: added support for changing upstream repo url added checks that the URL of the WC matches the URL from the manifest changed from using "update" to "switch" --- lib/puppet/provider/vcsrepo/svn.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/puppet/provider/vcsrepo/svn.rb b/lib/puppet/provider/vcsrepo/svn.rb index 3132c36..9de0812 100644 --- a/lib/puppet/provider/vcsrepo/svn.rb +++ b/lib/puppet/provider/vcsrepo/svn.rb @@ -40,7 +40,7 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) def latest? at_path do - self.revision >= self.latest + (self.revision >= self.latest) and (@resource.value(:source) == self.sourceurl) end end @@ -70,6 +70,13 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) end end + def sourceurl + args = buildargs.push('info') + at_path do + svn(*args)[/^URL:\s+(\S+)/m, 1] + end + end + def revision args = buildargs.push('info') at_path do @@ -78,7 +85,7 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) end def revision=(desired) - args = buildargs.push('update', '-r', desired) + args = buildargs.push('switch', '-r', desired, @resource.value(:source)) at_path do svn(*args) end -- cgit v1.2.3 From c281f10efde83847f4df822010c32e03cda809b7 Mon Sep 17 00:00:00 2001 From: Aaron Stone Date: Wed, 24 Jul 2013 21:55:04 -0700 Subject: Update specs for svn switch --- spec/unit/puppet/provider/vcsrepo/svn_spec.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/spec/unit/puppet/provider/vcsrepo/svn_spec.rb b/spec/unit/puppet/provider/vcsrepo/svn_spec.rb index a533b7c..e7e25d7 100644 --- a/spec/unit/puppet/provider/vcsrepo/svn_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/svn_spec.rb @@ -66,14 +66,16 @@ describe_provider :vcsrepo, :svn, :resource => {:path => '/tmp/vcsrepo'} do end describe "setting the revision property" do - before do - @revision = '30' - end - it "should use 'svn update'" do - expects_chdir - provider.expects(:svn).with('--non-interactive', 'update', '-r', @revision) - provider.revision = @revision - end + resource_with :source do + before do + @revision = '30' + end + it "should use 'svn switch'" do + expects_chdir + provider.expects(:svn).with('--non-interactive', 'switch', '-r', @revision, 'an-unimportant-value') + provider.revision = @revision + end + end end end -- cgit v1.2.3 From a14da4fc175649adaa2aa2a37465e5cd3fc7fccb Mon Sep 17 00:00:00 2001 From: Aaron Stone Date: Thu, 25 Jul 2013 09:24:51 -0700 Subject: Handle revision update without source switch. --- lib/puppet/provider/vcsrepo/svn.rb | 6 +++++- spec/unit/puppet/provider/vcsrepo/svn_spec.rb | 31 +++++++++++++++++++-------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/lib/puppet/provider/vcsrepo/svn.rb b/lib/puppet/provider/vcsrepo/svn.rb index 9de0812..bfc9b76 100644 --- a/lib/puppet/provider/vcsrepo/svn.rb +++ b/lib/puppet/provider/vcsrepo/svn.rb @@ -85,7 +85,11 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) end def revision=(desired) - args = buildargs.push('switch', '-r', desired, @resource.value(:source)) + args = if @resource.value(:source) + buildargs.push('switch', '-r', desired, @resource.value(:source)) + else + buildargs.push('update', '-r', desired) + end at_path do svn(*args) end diff --git a/spec/unit/puppet/provider/vcsrepo/svn_spec.rb b/spec/unit/puppet/provider/vcsrepo/svn_spec.rb index e7e25d7..675fc0b 100644 --- a/spec/unit/puppet/provider/vcsrepo/svn_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/svn_spec.rb @@ -66,16 +66,29 @@ describe_provider :vcsrepo, :svn, :resource => {:path => '/tmp/vcsrepo'} do end describe "setting the revision property" do + before do + @revision = '30' + end + resource_without :source do + it "should use 'svn update'" do + expects_chdir + provider.expects(:svn).with('--non-interactive', 'update', '-r', @revision) + provider.revision = @revision + end + end + end + + describe "setting the revision property and repo source" do + before do + @revision = '30' + end resource_with :source do - before do - @revision = '30' - end - it "should use 'svn switch'" do - expects_chdir - provider.expects(:svn).with('--non-interactive', 'switch', '-r', @revision, 'an-unimportant-value') - provider.revision = @revision - end - end + it "should use 'svn switch'" do + expects_chdir + provider.expects(:svn).with('--non-interactive', 'switch', '-r', @revision, 'an-unimportant-value') + provider.revision = @revision + end + end end end -- cgit v1.2.3