diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2010-09-10 18:51:54 +0000 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2010-09-10 18:51:54 +0000 |
commit | 9aeeb26bb23a8a0f9be04921a77f258ab87eb9d8 (patch) | |
tree | d10a4030b731cae3f7ad12c90b4704850ffc2a20 | |
parent | Fix re usage. (diff) | |
parent | Let even readonly operations init a repo if needed. (diff) | |
download | gitosis-gentoo-9aeeb26bb23a8a0f9be04921a77f258ab87eb9d8.tar.gz gitosis-gentoo-9aeeb26bb23a8a0f9be04921a77f258ab87eb9d8.tar.bz2 gitosis-gentoo-9aeeb26bb23a8a0f9be04921a77f258ab87eb9d8.zip |
Merge branch 'upstream' into gentoo
Conflicts:
gitosis/test/test_repository.py
gitosis/test/test_serve.py
-rw-r--r-- | gitosis/serve.py | 3 | ||||
-rw-r--r-- | gitosis/test/test_repository.py | 7 | ||||
-rw-r--r-- | gitosis/test/test_serve.py | 30 |
3 files changed, 34 insertions, 6 deletions
diff --git a/gitosis/serve.py b/gitosis/serve.py index e54a399..94c59b5 100644 --- a/gitosis/serve.py +++ b/gitosis/serve.py @@ -147,8 +147,7 @@ def serve(cfg, user, command): 'git extension should have been stripped: %r' % relpath repopath = '%s.git' % relpath fullpath = os.path.join(topdir, repopath) - if (not os.path.exists(fullpath) - and verb in COMMANDS_WRITE): + if not os.path.exists(fullpath): # it doesn't exist on the filesystem, but the configuration # refers to it, we're serving a write request, and the user is # authorized to do that: create the repository on the fly diff --git a/gitosis/test/test_repository.py b/gitosis/test/test_repository.py index 0920c4a..c74acd9 100644 --- a/gitosis/test/test_repository.py +++ b/gitosis/test/test_repository.py @@ -70,7 +70,12 @@ def test_init_templates(): got = readFile(os.path.join(path, 'hooks', 'post-update')) eq(got, '#!/bin/sh\n# i can override standard templates\n') # standard templates are there, too - assert (os.path.isfile(os.path.join(path, 'hooks', 'pre-rebase.sample')) or os.path.isfile(os.path.join(path, 'hooks', 'pre-rebase'))) + assert ( + # compatibility with git <1.6.0 + os.path.isfile(os.path.join(path, 'hooks', 'pre-rebase')) + # for git >=1.6.0 + or os.path.isfile(os.path.join(path, 'hooks', 'pre-rebase.sample')) + ) def test_init_environment(): tmp = maketemp() diff --git a/gitosis/test/test_serve.py b/gitosis/test/test_serve.py index 4b414c4..a71af76 100644 --- a/gitosis/test/test_serve.py +++ b/gitosis/test/test_serve.py @@ -42,7 +42,7 @@ def test_bad_space_noargs(): serve.serve, cfg=cfg, user='jdoe', - command='git upload-pack', + command='git-upload-pack', ) eq(str(e), 'Unknown command denied') assert isinstance(e, serve.ServingError) @@ -115,7 +115,7 @@ def test_bad_forbiddenCommand_read_space(): serve.serve, cfg=cfg, user='jdoe', - command="git upload-pack 'foo'", + command="git-upload-pack 'foo'", ) eq(str(e), 'Repository read access denied') assert isinstance(e, serve.AccessDenied) @@ -232,7 +232,31 @@ def test_simple_read_leading_slash(): ) eq(got, "git-upload-pack '%s/foo.git'" % tmp) -def test_simple_write(): +def test_read_inits_if_needed(): + # a clone of a non-existent repository (but where config + # authorizes you to do that) will create the repository on the fly + tmp = util.maketemp() + cfg = RawConfigParser() + cfg.add_section('gitosis') + repositories = os.path.join(tmp, 'repositories') + os.mkdir(repositories) + cfg.set('gitosis', 'repositories', repositories) + generated = os.path.join(tmp, 'generated') + os.mkdir(generated) + cfg.set('gitosis', 'generate-files-in', generated) + cfg.add_section('group foo') + cfg.set('group foo', 'members', 'jdoe') + cfg.set('group foo', 'readonly', 'foo') + got = serve.serve( + cfg=cfg, + user='jdoe', + command="git-upload-pack 'foo'", + ) + eq(got, "git-upload-pack '%s/foo.git'" % repositories) + eq(os.listdir(repositories), ['foo.git']) + assert os.path.isfile(os.path.join(repositories, 'foo.git', 'HEAD')) + +def test_simple_write_dash(): tmp = util.maketemp() repository.init(os.path.join(tmp, 'foo.git')) cfg = RawConfigParser() |