Make repository.has_initial_commit pass through environment to git.
This commit is contained in:
parent
aa529dcd65
commit
8e488ad02f
2 changed files with 44 additions and 2 deletions
|
@ -143,11 +143,15 @@ class GitRevParseError(GitError):
|
||||||
|
|
||||||
def has_initial_commit(git_dir):
|
def has_initial_commit(git_dir):
|
||||||
child = subprocess.Popen(
|
child = subprocess.Popen(
|
||||||
args=['git', 'rev-parse', 'HEAD'],
|
args=[
|
||||||
|
'git',
|
||||||
|
'--git-dir=.',
|
||||||
|
'rev-parse',
|
||||||
|
'HEAD',
|
||||||
|
],
|
||||||
cwd=git_dir,
|
cwd=git_dir,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
close_fds=True,
|
close_fds=True,
|
||||||
env=dict(GIT_DIR='.'),
|
|
||||||
)
|
)
|
||||||
got = child.stdout.read()
|
got = child.stdout.read()
|
||||||
returncode = child.wait()
|
returncode = child.wait()
|
||||||
|
|
|
@ -269,3 +269,41 @@ def test_has_initial_commit_yes():
|
||||||
got = repository.has_initial_commit(git_dir=tmp)
|
got = repository.has_initial_commit(git_dir=tmp)
|
||||||
eq(got, True)
|
eq(got, True)
|
||||||
|
|
||||||
|
def test_has_initial_commit_environment():
|
||||||
|
tmp = maketemp()
|
||||||
|
git_dir = os.path.join(tmp, 'repo.git')
|
||||||
|
mockbindir = os.path.join(tmp, 'mockbin')
|
||||||
|
os.mkdir(mockbindir)
|
||||||
|
mockgit = os.path.join(mockbindir, 'git')
|
||||||
|
writeFile(mockgit, '''\
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
# git wrapper for gitosis unit tests
|
||||||
|
printf '%s' "$GITOSIS_UNITTEST_COOKIE" >"$(dirname "$0")/../cookie"
|
||||||
|
|
||||||
|
# strip away my special PATH insert so system git will be found
|
||||||
|
PATH="${PATH#*:}"
|
||||||
|
|
||||||
|
exec git "$@"
|
||||||
|
''')
|
||||||
|
os.chmod(mockgit, 0755)
|
||||||
|
repository.init(path=tmp)
|
||||||
|
repository.fast_import(
|
||||||
|
git_dir=tmp,
|
||||||
|
commit_msg='fakecommit',
|
||||||
|
committer='John Doe <jdoe@example.com>',
|
||||||
|
files=[],
|
||||||
|
)
|
||||||
|
magic_cookie = '%d' % random.randint(1, 100000)
|
||||||
|
good_path = os.environ['PATH']
|
||||||
|
try:
|
||||||
|
os.environ['PATH'] = '%s:%s' % (mockbindir, good_path)
|
||||||
|
os.environ['GITOSIS_UNITTEST_COOKIE'] = magic_cookie
|
||||||
|
got = repository.has_initial_commit(git_dir=tmp)
|
||||||
|
finally:
|
||||||
|
os.environ['PATH'] = good_path
|
||||||
|
os.environ.pop('GITOSIS_UNITTEST_COOKIE', None)
|
||||||
|
eq(got, True)
|
||||||
|
got = readFile(os.path.join(tmp, 'cookie'))
|
||||||
|
eq(got, magic_cookie)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue