Handle revision update without source switch.
authorAaron Stone <aaron@serendipity.cx>
Thu, 25 Jul 2013 16:24:51 +0000 (09:24 -0700)
committerAaron Stone <aaron@serendipity.cx>
Thu, 25 Jul 2013 20:57:42 +0000 (13:57 -0700)
lib/puppet/provider/vcsrepo/svn.rb
spec/unit/puppet/provider/vcsrepo/svn_spec.rb

index 9de0812..bfc9b76 100644 (file)
@@ -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
index e7e25d7..675fc0b 100644 (file)
@@ -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