Refactor gitosis-gitweb to move temp file handling out of main.
This commit is contained in:
parent
0dbee1fadd
commit
a786d30f5a
|
@ -37,7 +37,7 @@ def _escape_filename(s):
|
||||||
s = s.replace('"', '\\"')
|
s = s.replace('"', '\\"')
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def generate(config, fp):
|
def generate_fp(config, fp):
|
||||||
"""
|
"""
|
||||||
Generate a config file and projects list for ``gitweb``.
|
Generate a config file and projects list for ``gitweb``.
|
||||||
|
|
||||||
|
@ -94,6 +94,26 @@ def generate(config, fp):
|
||||||
line = ' '.join([urllib.quote_plus(s) for s in response])
|
line = ' '.join([urllib.quote_plus(s) for s in response])
|
||||||
print >>fp, line
|
print >>fp, line
|
||||||
|
|
||||||
|
def generate(config, path):
|
||||||
|
"""
|
||||||
|
Generate a config file and projects list for ``gitweb``.
|
||||||
|
|
||||||
|
:param config: configuration to read projects from
|
||||||
|
:type config: RawConfigParser
|
||||||
|
|
||||||
|
:param path: path to write projects list to
|
||||||
|
:type path: str
|
||||||
|
"""
|
||||||
|
tmp = '%s.%d.tmp' % (path, os.getpid())
|
||||||
|
|
||||||
|
f = file(tmp, 'w')
|
||||||
|
try:
|
||||||
|
generate_fp(config=config, fp=f)
|
||||||
|
finally:
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
os.rename(tmp, path)
|
||||||
|
|
||||||
def _getParser():
|
def _getParser():
|
||||||
import optparse
|
import optparse
|
||||||
parser = optparse.OptionParser(
|
parser = optparse.OptionParser(
|
||||||
|
@ -120,12 +140,4 @@ def main():
|
||||||
cfg = RawConfigParser()
|
cfg = RawConfigParser()
|
||||||
cfg.read(options.config)
|
cfg.read(options.config)
|
||||||
|
|
||||||
tmp = '%s.%d.tmp' % (path, os.getpid())
|
generate(config=cfg, path=path)
|
||||||
|
|
||||||
f = file(tmp, 'w')
|
|
||||||
try:
|
|
||||||
generate(config=cfg, fp=f)
|
|
||||||
finally:
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
os.rename(tmp, path)
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ from gitosis.test.util import mkdir, maketemp
|
||||||
def test_projectsList_empty():
|
def test_projectsList_empty():
|
||||||
cfg = RawConfigParser()
|
cfg = RawConfigParser()
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -20,7 +20,7 @@ def test_projectsList_repoDenied():
|
||||||
cfg = RawConfigParser()
|
cfg = RawConfigParser()
|
||||||
cfg.add_section('repo foo/bar')
|
cfg.add_section('repo foo/bar')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -31,7 +31,7 @@ def test_projectsList_noOwner():
|
||||||
cfg.add_section('repo foo/bar')
|
cfg.add_section('repo foo/bar')
|
||||||
cfg.set('repo foo/bar', 'gitweb', 'yes')
|
cfg.set('repo foo/bar', 'gitweb', 'yes')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -44,7 +44,7 @@ def test_projectsList_haveOwner():
|
||||||
cfg.set('repo foo/bar', 'gitweb', 'yes')
|
cfg.set('repo foo/bar', 'gitweb', 'yes')
|
||||||
cfg.set('repo foo/bar', 'owner', 'John Doe')
|
cfg.set('repo foo/bar', 'owner', 'John Doe')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -60,7 +60,7 @@ def test_projectsList_multiple():
|
||||||
cfg.add_section('repo quux')
|
cfg.add_section('repo quux')
|
||||||
cfg.set('repo quux', 'gitweb', 'yes')
|
cfg.set('repo quux', 'gitweb', 'yes')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -81,7 +81,7 @@ def test_projectsList_multiple_globalGitwebYes():
|
||||||
# this is still hidden
|
# this is still hidden
|
||||||
cfg.set('repo thud', 'gitweb', 'no')
|
cfg.set('repo thud', 'gitweb', 'no')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
@ -99,7 +99,7 @@ def test_projectsList_reallyEndsWithGit():
|
||||||
cfg.add_section('repo foo')
|
cfg.add_section('repo foo')
|
||||||
cfg.set('repo foo', 'gitweb', 'yes')
|
cfg.set('repo foo', 'gitweb', 'yes')
|
||||||
got = StringIO()
|
got = StringIO()
|
||||||
gitweb.generate(
|
gitweb.generate_fp(
|
||||||
config=cfg,
|
config=cfg,
|
||||||
fp=got)
|
fp=got)
|
||||||
eq(got.getvalue(), '''\
|
eq(got.getvalue(), '''\
|
||||||
|
|
Loading…
Reference in a new issue