====================
iw.recipe.subversion
====================

This product is used to download packages from svn and tar them in a directory.

We need some buildout vars::

  >>> data_dir = join(test_dir, 'data')
  >>> parts_dir = join(data_dir, 'parts')
  >>> buildout = {'instance': {'location': test_dir},
  ...             'buildout': {'directory': test_dir,
  ...             'install-from-cache': False,
  ...             'download-cache':False,
  ...             'parts-directory': parts_dir}}
  >>> name = 'svn-packages'

The recipe will checkout the package from his repository and put it in the
section.  For testing, we need a local repository::

  >>> repository = join(test_dir, 'test_repos')
  >>> if isdir(repository): rmtree(repository)
  >>> copytree(join(test_dir, 'repos'), repository)

Then, the recipe should work::

  >>> options = {
  ...   'urls':'file:///%s/my_package/trunk my_package' % repository}
  >>> from iw.recipe.subversion import Recipe
  >>> recipe = Recipe(buildout, name, options)
  >>> os.path.join(parts_dir, 'svn-packages') == recipe.install()
  True

Ok, we got it::

  >>> ls(parts_dir, 'svn-packages')
  my_package

If a download-cache directory is given, then an archive is created in the
specified path::

  >>> archives = join(data_dir, 'archives')
  >>> buildout['buildout']['download-cache'] = archives
  >>> recipe = Recipe(buildout, name, options)

  >>> if isdir(archives): rmtree(archives)

  >>> files = recipe.install()

  >>> ls(archives)
  my_package-r2.tar.gz

Ok, now we can work offline. The package will be installed from the archives
directory::

  >>> rmtree(repository)
  >>> rmtree(parts_dir)
  >>> buildout['buildout']['install-from-cache'] = 'true'
  >>> buildout['buildout']['download-cache'] = archives
  >>> recipe = Recipe(buildout, name, options)
  >>> files = recipe.install()

  >>> ls(parts_dir, 'svn-packages')
  my_package



