Add feature depth and param trust_server_cert to svn
authormonai <monai@cure.lt>
Wed, 9 Sep 2015 16:20:58 +0000 (19:20 +0300)
committermonai <monai@cure.lt>
Mon, 14 Sep 2015 14:25:29 +0000 (17:25 +0300)
added param trust server cert

updated depth feature

updated README.markdown

trust_server_cert is not feature

trust_server_cert default value should be false

add test for depth and trust_server_cert

README.markdown
lib/puppet/provider/vcsrepo/svn.rb
lib/puppet/type/vcsrepo.rb
spec/unit/puppet/provider/vcsrepo/svn_spec.rb

index badb1ce..4c65bbc 100644 (file)
@@ -180,7 +180,7 @@ vcsrepo { '/path/to/repo':
 }\r
 ~~~\r
 \r
-**Note:** if you set `source` to a hash, one of the names you specify must match the value of the `remote` parameter. That remote serves as the upstream of your managed repository.
+**Note:** if you set `source` to a hash, one of the names you specify must match the value of the `remote` parameter. That remote serves as the upstream of your managed repository.\r
 \r
 ####Connect via SSH\r
 \r
@@ -196,7 +196,7 @@ vcsrepo { '/path/to/repo':
   user       => 'toto', #uses toto's $HOME/.ssh setup\r
   require    => File['/home/toto/.ssh/id_rsa'],\r
 }\r
-~~~
+~~~\r
 \r
 ###Bazaar\r
 \r
@@ -235,7 +235,7 @@ vcsrepo { '/path/to/repo':
 ####Connect via SSH\r
 \r
 To connect to your source repository via SSH (e.g., `'bzr+ssh://...'` or `'sftp://...,'`), we recommend using the [`require`](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) metaparameter to make sure your SSH keys are present before the `vcsrepo` resource is applied:\r
-
+\r
 ~~~\r
 vcsrepo { '/path/to/repo':\r
   ensure     => latest,\r
@@ -244,7 +244,7 @@ vcsrepo { '/path/to/repo':
   user       => 'toto', #uses toto's $HOME/.ssh setup\r
   require    => File['/home/toto/.ssh/id_rsa'],\r
 }\r
-~~~
+~~~\r
 \r
 ###CVS\r
 \r
@@ -301,10 +301,10 @@ vcsrepo { '/path/to/workspace':
   source      => ':pserver:anonymous@example.com:/sources/myproj',\r
   revision    => '1.2',\r
 }\r
-~~~
-
+~~~\r
+\r
 You can also set `revision` to a tag:\r
-
+\r
 ~~~\r
 vcsrepo { '/path/to/workspace':\r
   ensure      => present,\r
@@ -313,12 +313,12 @@ vcsrepo { '/path/to/workspace':
   source      => ':pserver:anonymous@example.com:/sources/myproj',\r
   revision    => 'SOMETAG',\r
 }\r
-~~~
+~~~\r
 \r
 ####Connect via SSH\r
 \r
 To connect to your source repository via SSH, we recommend using the [`require`](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) metaparameter to make sure your SSH keys are present before the `vcsrepo` resource is applied:\r
-
+\r
 ~~~\r
 vcsrepo { '/path/to/repo':\r
   ensure     => latest,\r
@@ -413,7 +413,7 @@ vcsrepo { '/path/to/repo':
 ####Connect via SSH \r
 \r
 To connect to your source repository via SSH (e.g., `'ssh://...'`), we recommend using the [`require` metaparameter](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) to make sure your SSH keys are present before the `vcsrepo` resource is applied:\r
-
+\r
 ~~~\r
 vcsrepo { '/path/to/repo':\r
   ensure     => latest,\r
@@ -425,11 +425,11 @@ vcsrepo { '/path/to/repo':
 ~~~\r
 \r
 ###Perforce\r
-
-####Create an empty workspace
-
-To set up the connection to your Perforce service, set `p4config` to the location of a valid Perforce [config file](http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.configuration.html#configuration.settings.configfiles) stored on the node: 
-
+\r
+####Create an empty workspace\r
+\r
+To set up the connection to your Perforce service, set `p4config` to the location of a valid Perforce [config file](http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.configuration.html#configuration.settings.configfiles) stored on the node: \r
+\r
 ~~~\r
 vcsrepo { '/path/to/repo':\r
   ensure     => present,\r
@@ -437,9 +437,9 @@ vcsrepo { '/path/to/repo':
   p4config   => '/root/.p4config'\r
 }\r
 ~~~\r
-
-**Note:** If you don't include the `P4CLIENT` setting in your config file, the provider generates a workspace name based on the digest of `path` and the node's hostname (e.g., `puppet-91bc00640c4e5a17787286acbe2c021c`):
-
+\r
+**Note:** If you don't include the `P4CLIENT` setting in your config file, the provider generates a workspace name based on the digest of `path` and the node's hostname (e.g., `puppet-91bc00640c4e5a17787286acbe2c021c`):\r
+\r
 ####Create/update and sync a Perforce workspace\r
 \r
 To sync a depot path to head, set `ensure` to 'latest':\r
@@ -524,7 +524,7 @@ vcsrepo { '/path/to/repo':
 ####Connect via SSH \r
 \r
 To connect to your source repository via SSH (e.g., `'svn+ssh://...'`), we recommend using the [`require` metaparameter](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) to make sure your SSH keys are present before the `vcsrepo` resource is applied:\r
-
+\r
 ~~~\r
 vcsrepo { '/path/to/repo':\r
   ensure     => latest,\r
@@ -547,7 +547,7 @@ The vcsrepo module adds only one type with several providers. Each provider abst
 \r
 #####`git` - Supports the Git VCS.\r
 \r
-Features: `bare_repositories`, `depth`, `multiple_remotes`, `reference_tracking`, `ssh_identity`, `submodules`, `user`
+Features: `bare_repositories`, `depth`, `multiple_remotes`, `reference_tracking`, `ssh_identity`, `submodules`, `user`\r
 \r
 Parameters: `depth`, `ensure`, `excludes`, `force`, `group`, `identity`, `owner`, `path`, `provider`, `remote`, `revision`, `source`, `user`\r
 \r
@@ -555,42 +555,42 @@ Parameters: `depth`, `ensure`, `excludes`, `force`, `group`, `identity`, `owner`
 \r
 Features: `reference_tracking`\r
 \r
-Parameters: `ensure`, `excludes`, `force`, `group`, `owner`, `path`, `provider`, `revision`, `source`
+Parameters: `ensure`, `excludes`, `force`, `group`, `owner`, `path`, `provider`, `revision`, `source`\r
 \r
 #####`cvs` - Supports the CVS VCS.\r
 \r
 Features: `cvs_rsh`, `gzip_compression`, `modules`, `reference_tracking`, `user`\r
-
-Parameters: `compression`, `cvs_rsh`, `ensure`, `excludes`, `force`, `group`, `module`, `owner`, `path`, `provider`
+\r
+Parameters: `compression`, `cvs_rsh`, `ensure`, `excludes`, `force`, `group`, `module`, `owner`, `path`, `provider`\r
 \r
 #####`hg` - Supports the Mercurial VCS.\r
 \r
-Features: `reference_tracking`, `ssh_identity`, `user`
+Features: `reference_tracking`, `ssh_identity`, `user`\r
 \r
-Parameters: `ensure`, `excludes`, `force`, `group`, `identity`, `owner`, `path`, `provider`, `revision`, `source`, `user`
+Parameters: `ensure`, `excludes`, `force`, `group`, `identity`, `owner`, `path`, `provider`, `revision`, `source`, `user`\r
 \r
 #####`p4` - Supports the Perforce VCS.\r
 \r
-Features: `p4config`, `reference_tracking`
+Features: `p4config`, `reference_tracking`\r
 \r
-Parameters: `ensure`, `excludes`, `force`, `group`, `owner`, `p4config`, `path`, `provider`, `revision`, `source`
+Parameters: `ensure`, `excludes`, `force`, `group`, `owner`, `p4config`, `path`, `provider`, `revision`, `source`\r
 \r
 #####`svn` - Supports the Subversion VCS.\r
 \r
-Features: `basic_auth`, `configuration`, `conflict`, `filesystem_types`, `reference_tracking`
-
-Parameters: `basic_auth_password`, `basic_auth_username`, `configuration`, `conflict`, `ensure`, `excludes`, `force`, `fstype`, `group`, `owner`, `path`, `provider`, `revision`, `source`\r
+Features: `basic_auth`, `configuration`, `conflict`, `depth`, `filesystem_types`, `reference_tracking`\r
+\r
+Parameters: `basic_auth_password`, `basic_auth_username`, `configuration`, `conflict`, `ensure`, `excludes`, `force`, `fstype`, `group`, `owner`, `path`, `provider`, `revision`, `source`, `trust_server_cert`\r
 \r
 ####Features\r
 \r
 **Note:** Not all features are available with all providers.\r
 \r
 * `bare_repositories` - Differentiates between bare repositories and those with working copies. (Available with `git`.)\r
-* `basic_auth` -  Supports HTTP Basic authentication. (Available with `svn`.)
+* `basic_auth` -  Supports HTTP Basic authentication. (Available with `svn`.)\r
 * `conflict` - Lets you decide how to resolve any conflicts between the source repository and your working copy. (Available with `svn`.)\r
 * `configuration` - Lets you specify the location of your configuration files. (Available with `svn`.)\r
 * `cvs_rsh` - Understands the `CVS_RSH` environment variable. (Available with `cvs`.)\r
-* `depth` - Supports shallow clones. (Available with `git`.)\r
+* `depth` - Supports shallow clones in `git` or sets scope limit in `svn`. (Available with `git` and `svn`.)\r
 * `filesystem_types` - Supports multiple types of filesystem. (Available with `svn`.)\r
 * `gzip_compression` - Supports explicit GZip compression levels. (Available with `cvs`.)\r
 * `modules` - Lets you choose a specific repository module. (Available with `cvs`.)\r
@@ -603,116 +603,122 @@ Parameters: `basic_auth_password`, `basic_auth_username`, `configuration`, `conf
 \r
 ####Parameters\r
 \r
-All parameters are optional, except where specified otherwise.
-
-##### `basic_auth_password`
-
-Specifies the password for HTTP Basic authentication. (Requires the `basic_auth` feature.) Valid options: a string. Default: none. 
-
-##### `basic_auth_username`
-
-Specifies the username for HTTP Basic authentication. (Requires the `basic_auth` feature.) Valid options: a string. Default: none. 
-
-##### `compression`
-
-Sets the GZIP compression level for the repository history. (Requires the `gzip_compression` feature.) Valid options: an integer between 0 and 6. Default: none. 
-
-##### `configuration`
-
-Sets the configuration directory to use. (Requires the `configuration` feature.) Valid options: a string containing an absolute path. Default: none. 
-
-##### `conflict`
-
-Tells Subversion how to resolve any conflicts between the source repository and your working copy. (Requires the `conflict` feature.) Valid options: 'base', 'mine-full', 'theirs-full', and 'working'. Default: none. 
-
-##### `cvs_rsh`
-
-Provides a value for the `CVS_RSH` environment variable. (Requires the `cvs_rsh` feature.) Valid options: a string. Default: none. 
-
-##### `depth`
-
-Sets the number of commits to include when creating a shallow clone. (Requires the `depth` feature.) Valid options: an integer. Default: none. 
-
-##### `ensure`
-
-Specifies whether the repository should exist. Valid options: 'present', 'bare', 'absent', and 'latest'. Default: 'present'. 
-
-##### `excludes`
-
-Lists any files the repository shouldn't track (similar to .gitignore). Valid options: a string (separate multiple values with the newline character). Default: none. 
-
-##### `force`
-
-Specifies whether to delete any existing files in the repository path if creating a new repository. **Use with care.** Valid options: 'true' and 'false'. Default: 'false'. 
-
-##### `fstype`
-
-Sets the filesystem type. (Requires the `filesystem_types` feature.) Valid options: 'fsfs' or 'bdb'. Default: none. 
-
-##### `group`
-
-Specifies a group to own the repository files. Valid options: a string containing a group name or GID. Default: none. 
-
-##### `identity`
-
-Specifies an identity file to use for SSH authentication. (Requires the `ssh_identity` feature.) Valid options: a string containing an absolute path. Default: none. 
-
-##### `module`
-
-Specifies the repository module to manage. (Requires the `modules` feature.) Valid options: a string containing the name of a CVS module. Default: none. 
-
-##### `owner`
-
-Specifies a user to own the repository files. Valid options: a string containing a username or UID. Default: none. 
-
-##### `p4config`
-
-Specifies a config file that contains settings for connecting to the Perforce service. (Requires the `p4config` feature.) Valid options: a string containing the absolute path to a valid [Perforce config file](http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.configuration.html#configuration.settings.configfiles). Default: none. 
-
-##### `path`
-
-Specifies a location for the managed repository. Valid options: a string containing an absolute path. Default: the title of your declared resource. 
-
-##### `provider`
-
-*Required.* Specifies the backend to use for this vcsrepo resource. Valid options: 'bzr', 'cvs', 'git', 'hg', 'p4', and 'svn'. 
-
-##### `remote`
-
-Specifies the remote repository to track. (Requires the `multiple_remotes` feature.) Valid options: a string containing one of the remote names specified in `source`. Default: 'origin'. 
-
-##### `revision`
-
-Sets the revision of the repository. Valid options vary by provider:
-
-* `git` - a string containing a Git branch name, or a commit SHA or tag
-* `bzr` - a string containing a Bazaar [revision spec](http://wiki.bazaar.canonical.com/BzrRevisionSpec)
-* `cvs` - a string containing a CVS [tag or revision number](http://www.thathost.com/wincvs-howto/cvsdoc/cvs_4.html)
-* `hg` - a string containing a Mercurial [changeset ID](http://mercurial.selenic.com/wiki/ChangeSetID) or [tag](http://mercurial.selenic.com/wiki/Tag)
-* `p4` - a string containing a Perforce [change number, label name, client name, or date spec](http://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html)
-* `svn` - a string containing a Subversion [revision number](http://svnbook.red-bean.com/en/1.7/svn.basic.in-action.html#svn.basic.in-action.revs), [revision keyword, or revision date](http://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)
-
-Default: none. 
-
-##### `source`
-
-Specifies a source repository to serve as the upstream for your managed repository. Default: none. Valid options vary by provider:
-
-* `git` - a string containing a [Git repository URL](https://www.kernel.org/pub/software/scm/git/docs/git-clone.html#_git_urls_a_id_urls_a) or a hash of name => URL mappings. See also [`remote`](#remote).
-* `bzr` - a string containing a Bazaar branch location
-* `cvs` - a string containing a CVS root
-* `hg` - a string containing the local path or URL of a Mercurial repository
-* `p4` - a string containing a Perforce depot path
-* `svn` - a string containing a Subversion repository URL
-
-Default: none. 
-
-##### `submodules`
-
-Specifies whether to initialize and update each submodule in the repository. (Requires the `submodules` feature.) Valid options: 'true' and 'false'. Default: 'true'. 
-
-##### `user`
-
+All parameters are optional, except where specified otherwise.\r
+\r
+##### `basic_auth_password`\r
+\r
+Specifies the password for HTTP Basic authentication. (Requires the `basic_auth` feature.) Valid options: a string. Default: none. \r
+\r
+##### `basic_auth_username`\r
+\r
+Specifies the username for HTTP Basic authentication. (Requires the `basic_auth` feature.) Valid options: a string. Default: none. \r
+\r
+##### `compression`\r
+\r
+Sets the GZIP compression level for the repository history. (Requires the `gzip_compression` feature.) Valid options: an integer between 0 and 6. Default: none. \r
+\r
+##### `configuration`\r
+\r
+Sets the configuration directory to use. (Requires the `configuration` feature.) Valid options: a string containing an absolute path. Default: none. \r
+\r
+##### `conflict`\r
+\r
+Tells Subversion how to resolve any conflicts between the source repository and your working copy. (Requires the `conflict` feature.) Valid options: 'base', 'mine-full', 'theirs-full', and 'working'. Default: none. \r
+\r
+##### `cvs_rsh`\r
+\r
+Provides a value for the `CVS_RSH` environment variable. (Requires the `cvs_rsh` feature.) Valid options: a string. Default: none. \r
+\r
+##### `depth`\r
+\r
+In `git` sets the number of commits to include when creating a shallow clone. (Requires the `depth` feature.) Valid options: an integer. Default: none. \r
+\r
+In `svn` instructs Subversion to limit the scope of an operation to a particular tree depth. (Requires the `depth` feature.) Valid options: 'empty', 'files', 'immediates', 'infinity'. Default: none. \r
+\r
+##### `ensure`\r
+\r
+Specifies whether the repository should exist. Valid options: 'present', 'bare', 'absent', and 'latest'. Default: 'present'. \r
+\r
+##### `excludes`\r
+\r
+Lists any files the repository shouldn't track (similar to .gitignore). Valid options: a string (separate multiple values with the newline character). Default: none. \r
+\r
+##### `force`\r
+\r
+Specifies whether to delete any existing files in the repository path if creating a new repository. **Use with care.** Valid options: 'true' and 'false'. Default: 'false'. \r
+\r
+##### `fstype`\r
+\r
+Sets the filesystem type. (Requires the `filesystem_types` feature.) Valid options: 'fsfs' or 'bdb'. Default: none. \r
+\r
+##### `group`\r
+\r
+Specifies a group to own the repository files. Valid options: a string containing a group name or GID. Default: none. \r
+\r
+##### `identity`\r
+\r
+Specifies an identity file to use for SSH authentication. (Requires the `ssh_identity` feature.) Valid options: a string containing an absolute path. Default: none. \r
+\r
+##### `module`\r
+\r
+Specifies the repository module to manage. (Requires the `modules` feature.) Valid options: a string containing the name of a CVS module. Default: none. \r
+\r
+##### `owner`\r
+\r
+Specifies a user to own the repository files. Valid options: a string containing a username or UID. Default: none. \r
+\r
+##### `p4config`\r
+\r
+Specifies a config file that contains settings for connecting to the Perforce service. (Requires the `p4config` feature.) Valid options: a string containing the absolute path to a valid [Perforce config file](http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.configuration.html#configuration.settings.configfiles). Default: none. \r
+\r
+##### `path`\r
+\r
+Specifies a location for the managed repository. Valid options: a string containing an absolute path. Default: the title of your declared resource. \r
+\r
+##### `provider`\r
+\r
+*Required.* Specifies the backend to use for this vcsrepo resource. Valid options: 'bzr', 'cvs', 'git', 'hg', 'p4', and 'svn'. \r
+\r
+##### `remote`\r
+\r
+Specifies the remote repository to track. (Requires the `multiple_remotes` feature.) Valid options: a string containing one of the remote names specified in `source`. Default: 'origin'. \r
+\r
+##### `revision`\r
+\r
+Sets the revision of the repository. Valid options vary by provider:\r
+\r
+* `git` - a string containing a Git branch name, or a commit SHA or tag\r
+* `bzr` - a string containing a Bazaar [revision spec](http://wiki.bazaar.canonical.com/BzrRevisionSpec)\r
+* `cvs` - a string containing a CVS [tag or revision number](http://www.thathost.com/wincvs-howto/cvsdoc/cvs_4.html)\r
+* `hg` - a string containing a Mercurial [changeset ID](http://mercurial.selenic.com/wiki/ChangeSetID) or [tag](http://mercurial.selenic.com/wiki/Tag)\r
+* `p4` - a string containing a Perforce [change number, label name, client name, or date spec](http://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html)\r
+* `svn` - a string containing a Subversion [revision number](http://svnbook.red-bean.com/en/1.7/svn.basic.in-action.html#svn.basic.in-action.revs), [revision keyword, or revision date](http://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\r
+\r
+Default: none. \r
+\r
+##### `source`\r
+\r
+Specifies a source repository to serve as the upstream for your managed repository. Default: none. Valid options vary by provider:\r
+\r
+* `git` - a string containing a [Git repository URL](https://www.kernel.org/pub/software/scm/git/docs/git-clone.html#_git_urls_a_id_urls_a) or a hash of name => URL mappings. See also [`remote`](#remote).\r
+* `bzr` - a string containing a Bazaar branch location\r
+* `cvs` - a string containing a CVS root\r
+* `hg` - a string containing the local path or URL of a Mercurial repository\r
+* `p4` - a string containing a Perforce depot path\r
+* `svn` - a string containing a Subversion repository URL\r
+\r
+Default: none. \r
+\r
+##### `submodules`\r
+\r
+Specifies whether to initialize and update each submodule in the repository. (Requires the `submodules` feature.) Valid options: 'true' and 'false'. Default: 'true'. \r
+\r
+##### `trust_server_cert`\r
+\r
+Instructs Subversion to accept SSL server certificates issued by unknown certificate authorities. Valid options: 'true' and 'false'. Default: 'false'. \r
+\r
+##### `user`\r
+\r
 Specifies the user to run as for repository operations. (Requires the `user` feature.) Valid options: a string containing a username or UID. Default: none.\r
 \r
 ##Limitations\r
@@ -723,12 +729,12 @@ This module has been tested with Puppet 2.7 and higher.
 \r
 The module has been tested on:\r
 \r
-* CentOS 5/6/7
-* Debian 6/7
+* CentOS 5/6/7\r
+* Debian 6/7\r
 * Oracle 5/6/7\r
 * Red Hat Enterprise Linux 5/6/7\r
-* Scientific Linux 5/6/7
-* SLES 10/11/12
+* Scientific Linux 5/6/7\r
+* SLES 10/11/12\r
 * Ubuntu 10.04/12.04/14.04\r
 \r
 Testing on other platforms has been light and cannot be guaranteed.\r
@@ -739,4 +745,4 @@ Puppet Labs modules on the Puppet Forge are open projects, and community contrib
 \r
 We want to keep it as easy as possible to contribute changes so that our modules work in your environment. There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.\r
 \r
-You can read the complete module contribution guide [on the Puppet Labs wiki.](http://projects.puppetlabs.com/projects/module-site/wiki/Module_contributing)
+You can read the complete module contribution guide [on the Puppet Labs wiki.](http://projects.puppetlabs.com/projects/module-site/wiki/Module_contributing)\r
index 905d5ad..ba77464 100644 (file)
@@ -7,7 +7,7 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo)
            :svnadmin => 'svnadmin',
            :svnlook  => 'svnlook'
 
-  has_features :filesystem_types, :reference_tracking, :basic_auth, :configuration, :conflict
+  has_features :filesystem_types, :reference_tracking, :basic_auth, :configuration, :conflict, :depth
 
   def create
     if !@resource.value(:source)
@@ -15,7 +15,8 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo)
     else
       checkout_repository(@resource.value(:source),
                           @resource.value(:path),
-                          @resource.value(:revision))
+                          @resource.value(:revision),
+                          @resource.value(:depth))
     end
     update_owner
   end
@@ -62,6 +63,10 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo)
       args.push('--config-dir', @resource.value(:configuration))
     end
 
+    if @resource.value(:trust_server_cert)
+      args.push('--trust-server-cert')
+    end
+
     args
   end
 
@@ -105,11 +110,14 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo)
 
   private
 
-  def checkout_repository(source, path, revision)
+  def checkout_repository(source, path, revision, depth)
     args = buildargs.push('checkout')
     if revision
       args.push('-r', revision)
     end
+    if depth
+      args.push('--depth', depth)
+    end
     args.push(source, path)
     svn(*args)
   end
index e5dfbb5..dfc2ec8 100644 (file)
@@ -38,7 +38,7 @@ Puppet::Type.newtype(:vcsrepo) do
           "The provider understands the CVS_RSH environment variable"
 
   feature :depth,
-          "The provider can do shallow clones"
+          "The provider can do shallow clones or set scope limit"
 
   feature :branch,
           "The name of the branch"
@@ -227,6 +227,12 @@ Puppet::Type.newtype(:vcsrepo) do
   newparam :conflict do
     desc "The action to take if conflicts exist between repository and working copy"
   end
+  
+  newparam :trust_server_cert do
+    desc "Trust server certificate"
+    newvalues(:true, :false)
+    defaultto false
+  end
 
   autorequire(:package) do
     ['git', 'git-core']
index 77f0e03..25951bd 100644 (file)
@@ -52,6 +52,28 @@ describe Puppet::Type.type(:vcsrepo).provider(:svn) do
         provider.create
       end
     end
+    
+    context "with depth" do
+      it "should execute 'svn checkout' with a depth" do
+        resource[:source] = 'exists'
+        resource[:depth] = 'infinity'
+        provider.expects(:svn).with('--non-interactive', 'checkout', '--depth', 'infinity',
+          resource.value(:source),
+          resource.value(:path))
+        provider.create
+      end
+    end
+    
+    context "with trust_server_cert" do
+      it "should execute 'svn checkout' with a trust-server-cert" do
+        resource[:source] = 'exists'
+        resource[:trust_server_cert] = true
+        provider.expects(:svn).with('--non-interactive', '--trust-server-cert', 'checkout',
+          resource.value(:source),
+          resource.value(:path))
+        provider.create
+      end
+    end
   end
 
   describe 'destroying' do