--- a/Allura/allura/tests/unit/test_repo.py
+++ b/Allura/allura/tests/unit/test_repo.py
@@ -24,6 +24,7 @@
from allura import model as M
from allura.controllers.repository import topo_sort
+from allura.model.repository import zipdir
from alluratest.controller import setup_unit_test
class TestCommitRunBuilder(unittest.TestCase):
@@ -285,3 +286,17 @@
commit.get_tree = Mock()
tree = commit.tree
commit.get_tree.assert_called_with(create=True)
+
+
+@patch('allura.model.repository.Popen')
+@patch('allura.model.repository.tg')
+def test_zipdir(tg, popen):
+ tg.config = {'scm.repos.tarball.zip_binary': '/bin/zip'}
+ src = '/fake/path/to/repo'
+ zipfile = '/fake/zip/file.tmp'
+ zipdir(src, zipfile)
+ popen.assert_called_once_with(['/bin/zip', '-r', zipfile, 'repo'], cwd='/fake/path/to')
+ popen.reset_mock()
+ src = '/fake/path/to/repo/'
+ zipdir(src, zipfile, exclude='file.txt')
+ popen.assert_called_once_with(['/bin/zip', '-r', zipfile, 'repo', '-x', 'file.txt'], cwd='/fake/path/to')