コード例 #1
0
def test_push_inits_subdir_parent_exists():
    tmp = util.maketemp()
    cfg = RawConfigParser()
    cfg.add_section('gitosis')
    repositories = os.path.join(tmp, 'repositories')
    os.mkdir(repositories)
    foo = os.path.join(repositories, 'foo')
    # silly mode on purpose; not to be touched
    os.mkdir(foo, 0o751)
    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', 'writable', 'foo/bar')
    serve.serve(
        cfg=cfg,
        user='******',
        command="git-receive-pack 'foo/bar.git'",
    )
    eq(os.listdir(repositories), ['foo'])
    util.check_mode(foo, 0o751, is_dir=True)
    eq(os.listdir(foo), ['bar.git'])
    assert os.path.isfile(os.path.join(repositories, 'foo', 'bar.git', 'HEAD'))
コード例 #2
0
ファイル: test_repository.py プロジェクト: Dawnflying/gitosis
def test_init_templates():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    templatedir = os.path.join(
        os.path.dirname(__file__),
        'mocktemplates',
        )
    repository.init(path, template=templatedir)
    repository.init(path)
    got = readFile(os.path.join(path, 'no-confusion'))
    eq(got, 'i should show up\n')
    check_mode(
        os.path.join(path, 'hooks', 'post-update'),
        0755,
        is_file=True,
        )
    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 (
        # 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'))
        )
コード例 #3
0
ファイル: test_repository.py プロジェクト: voretaq7/gitosis
def test_init_templates():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    templatedir = os.path.join(
        os.path.dirname(__file__),
        'mocktemplates',
    )

    # for reproducibility
    os.umask(0o022)

    repository.init(path, template=templatedir)
    repository.init(path)
    got = readFile(os.path.join(path, 'no-confusion'))
    eq(got, 'i should show up\n')
    check_mode(
        os.path.join(path, 'hooks', 'post-update'),
        0o755,
        is_file=True,
    )
    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 (
        # 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')))
コード例 #4
0
ファイル: test_serve.py プロジェクト: elmer/smart-gitosis
def test_push_inits_subdir_parent_exists():
    tmp = util.maketemp()
    cfg = RawConfigParser()
    cfg.add_section('gitosis')
    repositories = path.join(tmp, 'repositories')
    os.mkdir(repositories)
    foo = path.join(repositories, 'foo')
    # silly mode on purpose; not to be touched
    os.mkdir(foo, 0751)
    cfg.set('gitosis', 'repositories', repositories)
    generated = 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', 'writable', 'foo/bar')
    cfg.add_section('rsp')
    cfg.set('rsp', 'haveAccessURL', 'example.org')
    serve.serve(
        cfg=cfg,
        user='******',
        command="git-receive-pack 'foo/bar.git'",
        )
    eq(os.listdir(repositories), ['foo'])
    util.check_mode(foo, 0751, is_dir=True)
    eq(os.listdir(foo), ['bar.git'])
    assert path.isfile(path.join(repositories, 'foo', 'bar.git', 'HEAD'))
コード例 #5
0
ファイル: test_repository.py プロジェクト: voretaq7/gitosis
def test_init_exist_git():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    repository.init(path)
    repository.init(path)
    check_mode(path, 0o750, is_dir=True)
    check_bare(path)
コード例 #6
0
ファイル: test_serve.py プロジェクト: miracle2k/gitosis
def test_push_inits_default_templates():
    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', 'writable', 'foo')
    os.umask(0022)
    serve.serve(
        cfg=cfg,
        user='******',
        command="git-receive-pack 'foo'",
        )
    hook_path = os.path.join(tmp, 'repositories', 'foo.git', 'hooks', 'post-receive')
    check_mode(
        hook_path,
        0755,
        is_file=True,
        )
    got = readFile(hook_path)
    eq(got, '#!/bin/sh\nset -e\ngit-update-server-info\ngitosis-run-hook update-mirrors')
コード例 #7
0
ファイル: test_repository.py プロジェクト: Dawnflying/gitosis
def test_init_exist_git():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    repository.init(path)
    repository.init(path)
    check_mode(path, 0750, is_dir=True)
    check_bare(path)
コード例 #8
0
ファイル: test_repository.py プロジェクト: taladar/gitosis
def test_init_default_templates():
    tmp = maketemp()
    path = os.path.join(tmp, "repo.git")
    repository.init(path)
    hook_path = os.path.join(path, "hooks", "post-receive")
    check_mode(hook_path, 0755, is_file=True)
    got = readFile(hook_path)
    eq(got, "#!/bin/sh\nset -e\ngit-update-server-info\ngitosis-run-hook update-mirrors")
コード例 #9
0
ファイル: test_repository.py プロジェクト: voretaq7/gitosis
def test_init_exist_dir():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    mkdir(path, 0o710)
    check_mode(path, 0o710, is_dir=True)
    repository.init(path)
    # my weird access mode is preserved
    check_mode(path, 0o710, is_dir=True)
    check_bare(path)
コード例 #10
0
ファイル: test_repository.py プロジェクト: Dawnflying/gitosis
def test_init_exist_dir():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    mkdir(path, 0710)
    check_mode(path, 0710, is_dir=True)
    repository.init(path)
    # my weird access mode is preserved
    check_mode(path, 0710, is_dir=True)
    check_bare(path)
コード例 #11
0
ファイル: test_init.py プロジェクト: superbobry/gitosis
def test_init_admin_repository():
    tmp = maketemp()
    admin_repository = os.path.join(tmp, 'admin.git')
    pubkey = (
        'ssh-somealgo '
        +'0123456789ABCDEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
        +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
        +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
        +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= fakeuser@fakehost')
    user = '******'
    cfg = GitosisRawConfigParser()
    init.init_admin_repository(
        git_dir=admin_repository,
        pubkey=pubkey,
        user=user,
        config=cfg,
        )
    eq(os.listdir(tmp), ['admin.git'])
    hook = os.path.join(
        tmp,
        'admin.git',
        'hooks',
        'post-update',
        )
    util.check_mode(hook, 0755, is_file=True)
    got = util.readFile(hook).splitlines()
    assert 'gitosis-run-hook post-update' in got
    export_dir = os.path.join(tmp, 'export')
    repository.export(git_dir=admin_repository,
                      path=export_dir)
    eq(sorted(os.listdir(export_dir)),
       sorted(['gitosis.conf', 'keydir']))
    eq(os.listdir(os.path.join(export_dir, 'keydir')),
       ['jdoe.pub'])
    got = util.readFile(
        os.path.join(export_dir, 'keydir', 'jdoe.pub'))
    eq(got, pubkey)
    # the only thing guaranteed of initial config file ordering is
    # that [gitosis] is first
    got = util.readFile(os.path.join(export_dir, 'gitosis.conf'))
    # We can't gaurentee this anymore
    got = got.splitlines()[0]
    eq(got, '[gitosis]')
    cfg.read(os.path.join(export_dir, 'gitosis.conf'))
    eq(sorted(cfg.sections()),
       sorted([
        'gitosis',
        'group gitosis-admin',
        ]))
    eq(cfg.items('gitosis'), [])
    eq(sorted(cfg.items('group gitosis-admin')),
       sorted([
        ('writable', 'gitosis-admin'),
        ('members', 'jdoe'),
        ]))
コード例 #12
0
ファイル: test_repository.py プロジェクト: taladar/gitosis
def test_init_templates():
    tmp = maketemp()
    path = os.path.join(tmp, "repo.git")
    templatedir = os.path.join(os.path.dirname(__file__), "mocktemplates")
    os.umask(0022)
    repository.init(path, template=templatedir)
    repository.init(path)
    got = readFile(os.path.join(path, "no-confusion"))
    eq(got, "i should show up\n")
    check_mode(os.path.join(path, "hooks", "post-update"), 0755, is_file=True)
    got = readFile(os.path.join(path, "hooks", "post-update"))
    eq(got, "#!/bin/sh\n# i can override standard templates\n")
コード例 #13
0
ファイル: test_init.py プロジェクト: voretaq7/gitosis
def test_init_admin_repository():
    tmp = maketemp()
    admin_repository = os.path.join(tmp, 'admin.git')
    pubkey = ('ssh-somealgo ' +
              '0123456789ABCDEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
              'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
              'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
              'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= fakeuser@fakehost')
    user = '******'
    init.init_admin_repository(
        git_dir=admin_repository,
        pubkey=pubkey,
        user=user,
    )
    eq(os.listdir(tmp), ['admin.git'])
    hook = os.path.join(
        tmp,
        'admin.git',
        'hooks',
        'post-update',
    )
    util.check_mode(hook, 0o755, is_file=True)
    got = util.readFile(hook).splitlines()
    assert 'gitosis-run-hook post-update' in got
    export_dir = os.path.join(tmp, 'export')
    repository.export(git_dir=admin_repository, path=export_dir)
    eq(sorted(os.listdir(export_dir)), sorted(['gitosis.conf', 'keydir']))
    eq(os.listdir(os.path.join(export_dir, 'keydir')), ['jdoe.pub'])
    got = util.readFile(os.path.join(export_dir, 'keydir', 'jdoe.pub'))
    eq(got, pubkey)
    # the only thing guaranteed of initial config file ordering is
    # that [gitosis] is first
    got = util.readFile(os.path.join(export_dir, 'gitosis.conf'))
    got = got.splitlines()[0]
    eq(got, '[gitosis]')
    cfg = RawConfigParser()
    cfg.read(os.path.join(export_dir, 'gitosis.conf'))
    eq(sorted(cfg.sections()), sorted([
        'gitosis',
        'group gitosis-admin',
    ]))
    eq(cfg.items('gitosis'), [])
    eq(sorted(cfg.items('group gitosis-admin')),
       sorted([
           ('writable', 'gitosis-admin'),
           ('members', 'jdoe'),
       ]))
コード例 #14
0
ファイル: test_repository.py プロジェクト: dinoboff/gitosis
def test_init_templates():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    templatedir = os.path.join(
        os.path.dirname(__file__),
        'mocktemplates',
        )
    repository.init(path, template=templatedir)
    repository.init(path)
    got = readFile(os.path.join(path, 'no-confusion'))
    eq(got, 'i should show up\n')
    check_mode(
        os.path.join(path, 'hooks', 'post-update'),
        0755,
        is_file=True,
        )
    got = readFile(os.path.join(path, 'hooks', 'post-update'))
    eq(got, '#!/bin/sh\n# i can override standard templates\n')
コード例 #15
0
ファイル: test_serve.py プロジェクト: zackify/gitosis
def test_push_inits_subdir_parent_missing():
    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", "writable", "foo/bar")
    serve.serve(cfg=cfg, user="******", command="git-receive-pack 'foo/bar.git'")
    eq(os.listdir(repositories), ["foo"])
    foo = os.path.join(repositories, "foo")
    util.check_mode(foo, 0750, is_dir=True)
    eq(os.listdir(foo), ["bar.git"])
    assert os.path.isfile(os.path.join(repositories, "foo", "bar.git", "HEAD"))
コード例 #16
0
ファイル: test_serve.py プロジェクト: PhilMiller/gitosis
def test_push_inits_templates():
    tmp = util.maketemp()
    templatedir = os.path.join(
        os.path.dirname(__file__),
        'mocktemplates',
        )
    cfg = RawConfigParser()
    cfg.add_section('gitosis')
    repositories = os.path.join(tmp, 'repositories')
    os.mkdir(repositories)
    cfg.set('gitosis', 'repositories', repositories)
    cfg.set('gitosis', 'init-template', templatedir)
    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', 'writable', 'foo')
    os.umask(0022)
    serve.serve(
        cfg=cfg,
        user='******',
        command="git-receive-pack 'foo'",
        )
    eq(os.listdir(repositories), ['foo.git'])
    path = os.path.join(repositories, 'foo.git')
    assert os.path.isfile(os.path.join(path, 'HEAD'))
    got = readFile(os.path.join(path, 'no-confusion'))
    eq(got, 'i should show up\n')
    check_mode(
        os.path.join(path, 'hooks', 'post-update'),
        0755,
        is_file=True,
        )
    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'))
            or os.path.isfile(os.path.join(path, 'hooks', 'pre-rebase.sample')))
コード例 #17
0
ファイル: test_serve.py プロジェクト: JamsGu/gitosis
def test_push_inits_subdir_parent_missing():
    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', 'writable', 'foo/bar')
    serve.serve(
        cfg=cfg,
        user='******',
        command="git-receive-pack 'foo/bar.git'",
        )
    eq(os.listdir(repositories), ['foo'])
    foo = os.path.join(repositories, 'foo')
    util.check_mode(foo, 0755, is_dir=True)
    eq(os.listdir(foo), ['bar.git'])
    assert os.path.isfile(os.path.join(repositories, 'foo', 'bar.git', 'HEAD'))
コード例 #18
0
ファイル: test_repository.py プロジェクト: taladar/gitosis
def test_init_simple():
    tmp = maketemp()
    path = os.path.join(tmp, "repo.git")
    repository.init(path)
    check_mode(path, 0750, is_dir=True)
    check_bare(path)
コード例 #19
0
ファイル: test_repository.py プロジェクト: superbobry/gitosis
def test_init_custom_perm():
    tmp = maketemp()
    path = os.path.join(tmp, 'repo.git')
    repository.init(path, mode=0711)
    check_mode(path, 0711, is_dir=True)
    check_bare(path)