diff options
Diffstat (limited to 'gitosis/test')
-rw-r--r-- | gitosis/test/test_access.py | 20 | ||||
-rw-r--r-- | gitosis/test/test_serve.py | 44 |
2 files changed, 52 insertions, 12 deletions
diff --git a/gitosis/test/test_access.py b/gitosis/test/test_access.py index 66e799c..9f9d81a 100644 --- a/gitosis/test/test_access.py +++ b/gitosis/test/test_access.py @@ -15,7 +15,7 @@ def test_write_yes_simple(): cfg.set('group fooers', 'members', 'jdoe') cfg.set('group fooers', 'writable', 'foo/bar') eq(access.haveAccess(config=cfg, user='jdoe', mode='writable', path='foo/bar'), - 'repositories/foo/bar') + ('repositories', 'foo/bar')) def test_write_no_simple_wouldHaveReadonly(): cfg = RawConfigParser() @@ -31,7 +31,7 @@ def test_write_yes_map(): cfg.set('group fooers', 'members', 'jdoe') cfg.set('group fooers', 'map writable foo/bar', 'quux/thud') eq(access.haveAccess(config=cfg, user='jdoe', mode='writable', path='foo/bar'), - 'repositories/quux/thud') + ('repositories', 'quux/thud')) def test_write_no_map_wouldHaveReadonly(): cfg = RawConfigParser() @@ -52,7 +52,7 @@ def test_read_yes_simple(): cfg.set('group fooers', 'members', 'jdoe') cfg.set('group fooers', 'readonly', 'foo/bar') eq(access.haveAccess(config=cfg, user='jdoe', mode='readonly', path='foo/bar'), - 'repositories/foo/bar') + ('repositories', 'foo/bar')) def test_read_yes_simple_wouldHaveWritable(): cfg = RawConfigParser() @@ -68,7 +68,7 @@ def test_read_yes_map(): cfg.set('group fooers', 'members', 'jdoe') cfg.set('group fooers', 'map readonly foo/bar', 'quux/thud') eq(access.haveAccess(config=cfg, user='jdoe', mode='readonly', path='foo/bar'), - 'repositories/quux/thud') + ('repositories', 'quux/thud')) def test_read_yes_map_wouldHaveWritable(): cfg = RawConfigParser() @@ -87,7 +87,7 @@ def test_base_global_absolute(): cfg.set('group fooers', 'map writable foo/bar', 'baz/quux/thud') eq(access.haveAccess( config=cfg, user='jdoe', mode='writable', path='foo/bar'), - '/a/leading/path/baz/quux/thud') + ('/a/leading/path', 'baz/quux/thud')) def test_base_global_relative(): cfg = RawConfigParser() @@ -98,7 +98,7 @@ def test_base_global_relative(): cfg.set('group fooers', 'map writable foo/bar', 'baz/quux/thud') eq(access.haveAccess( config=cfg, user='jdoe', mode='writable', path='foo/bar'), - 'some/relative/path/baz/quux/thud') + ('some/relative/path', 'baz/quux/thud')) def test_base_global_relative_simple(): cfg = RawConfigParser() @@ -109,7 +109,7 @@ def test_base_global_relative_simple(): cfg.set('group fooers', 'readonly', 'foo xyzzy bar') eq(access.haveAccess( config=cfg, user='jdoe', mode='readonly', path='xyzzy'), - 'some/relative/path/xyzzy') + ('some/relative/path', 'xyzzy')) def test_base_global_unset(): cfg = RawConfigParser() @@ -119,7 +119,7 @@ def test_base_global_unset(): cfg.set('group fooers', 'readonly', 'foo xyzzy bar') eq(access.haveAccess( config=cfg, user='jdoe', mode='readonly', path='xyzzy'), - 'repositories/xyzzy') + ('repositories', 'xyzzy')) def test_base_local(): cfg = RawConfigParser() @@ -129,7 +129,7 @@ def test_base_local(): cfg.set('group fooers', 'map writable foo/bar', 'baz/quux/thud') eq(access.haveAccess( config=cfg, user='jdoe', mode='writable', path='foo/bar'), - 'some/relative/path/baz/quux/thud') + ('some/relative/path', 'baz/quux/thud')) def test_dotgit(): # a .git extension is always allowed to be added @@ -138,4 +138,4 @@ def test_dotgit(): cfg.set('group fooers', 'members', 'jdoe') cfg.set('group fooers', 'writable', 'foo/bar') eq(access.haveAccess(config=cfg, user='jdoe', mode='writable', path='foo/bar.git'), - 'repositories/foo/bar') + ('repositories', 'foo/bar')) diff --git a/gitosis/test/test_serve.py b/gitosis/test/test_serve.py index 08a4e67..2372429 100644 --- a/gitosis/test/test_serve.py +++ b/gitosis/test/test_serve.py @@ -115,7 +115,7 @@ def test_simple_read(): user='jdoe', command="git-upload-pack 'foo'", ) - eq(got, "git-upload-pack '%s/foo'" % tmp) + eq(got, "git-upload-pack '%s/foo.git'" % tmp) def test_simple_write(): tmp = util.maketemp() @@ -131,7 +131,7 @@ def test_simple_write(): user='jdoe', command="git-receive-pack 'foo'", ) - eq(got, "git-receive-pack '%s/foo'" % tmp) + eq(got, "git-receive-pack '%s/foo.git'" % tmp) def test_push_inits_if_needed(): # a push to a non-existent repository (but where config authorizes @@ -169,6 +169,46 @@ def test_push_inits_if_needed_haveExtension(): eq(os.listdir(tmp), ['foo.git']) assert os.path.isfile(os.path.join(tmp, 'foo.git', 'HEAD')) +def test_push_inits_subdir_parent_missing(): + tmp = util.maketemp() + cfg = RawConfigParser() + cfg.add_section('gitosis') + cfg.set('gitosis', 'repositories', tmp) + cfg.add_section('group foo') + cfg.set('group foo', 'members', 'jdoe') + cfg.set('group foo', 'writable', 'foo/bar') + serve.serve( + cfg=cfg, + user='jdoe', + command="git-receive-pack 'foo/bar.git'", + ) + eq(os.listdir(tmp), ['foo']) + foo = os.path.join(tmp, 'foo') + util.check_mode(foo, 0750, is_dir=True) + eq(os.listdir(foo), ['bar.git']) + assert os.path.isfile(os.path.join(tmp, 'foo', 'bar.git', 'HEAD')) + +def test_push_inits_subdir_parent_exists(): + tmp = util.maketemp() + foo = os.path.join(tmp, 'foo') + # silly mode on purpose; not to be touched + os.mkdir(foo, 0751) + cfg = RawConfigParser() + cfg.add_section('gitosis') + cfg.set('gitosis', 'repositories', tmp) + cfg.add_section('group foo') + cfg.set('group foo', 'members', 'jdoe') + cfg.set('group foo', 'writable', 'foo/bar') + serve.serve( + cfg=cfg, + user='jdoe', + command="git-receive-pack 'foo/bar.git'", + ) + eq(os.listdir(tmp), ['foo']) + util.check_mode(foo, 0751, is_dir=True) + eq(os.listdir(foo), ['bar.git']) + assert os.path.isfile(os.path.join(tmp, 'foo', 'bar.git', 'HEAD')) + def test_push_inits_if_needed_existsWithExtension(): tmp = util.maketemp() os.mkdir(os.path.join(tmp, 'foo.git')) |