Remove python 2.5'isms
The following python 2.5 features were worked around: * the sha module is used as a fallback when the hashlib module is not available * the 'any' built-in method was replaced with a 'for' loop * a conditional expression was replaced with an 'if' statement * the subprocess.check_call method was replaced by a call to subprocess.Popen followed by a call to subprocess.wait with a check of its return status These changes allow the python infrastructure to be used with python 2.4 which is distributed with RedHat's RHEL 5, for example. t5800 was updated to check for python >= 2.4 to reflect these changes. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ae45732214
commit
23b093ee08
@ -1,6 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import hashlib
|
||||
# hashlib is only available in python >= 2.5
|
||||
try:
|
||||
import hashlib
|
||||
_digest = hashlib.sha1
|
||||
except ImportError:
|
||||
import sha
|
||||
_digest = sha.new
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.getenv("GITPYTHONLIB","."))
|
||||
@ -19,7 +25,7 @@ def get_repo(alias, url):
|
||||
repo.get_revs()
|
||||
repo.get_head()
|
||||
|
||||
hasher = hashlib.sha1()
|
||||
hasher = _digest()
|
||||
hasher.update(repo.path)
|
||||
repo.hash = hasher.hexdigest()
|
||||
|
||||
@ -133,7 +139,10 @@ def do_export(repo, args):
|
||||
|
||||
path = os.path.join(dirname, 'testgit.marks')
|
||||
print path
|
||||
print path if os.path.exists(path) else ""
|
||||
if os.path.exists(path):
|
||||
print path
|
||||
else:
|
||||
print ""
|
||||
sys.stdout.flush()
|
||||
|
||||
update_local_repo(repo)
|
||||
|
@ -48,4 +48,6 @@ class GitExporter(object):
|
||||
|
||||
args = ["sed", "s_refs/heads/_" + self.repo.prefix + "_g"]
|
||||
|
||||
subprocess.check_call(args, stdin=p1.stdout)
|
||||
child = subprocess.Popen(args, stdin=p1.stdout)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
@ -35,4 +35,6 @@ class GitImporter(object):
|
||||
if os.path.exists(path):
|
||||
args.append("--import-marks=" + path)
|
||||
|
||||
subprocess.check_call(args)
|
||||
child = subprocess.Popen(args)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
@ -29,7 +29,9 @@ class NonLocalGit(object):
|
||||
os.makedirs(path)
|
||||
args = ["git", "clone", "--bare", "--quiet", self.repo.gitpath, path]
|
||||
|
||||
subprocess.check_call(args)
|
||||
child = subprocess.Popen(args)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
||||
return path
|
||||
|
||||
@ -43,10 +45,14 @@ class NonLocalGit(object):
|
||||
die("could not find repo at %s", path)
|
||||
|
||||
args = ["git", "--git-dir=" + path, "fetch", "--quiet", self.repo.gitpath]
|
||||
subprocess.check_call(args)
|
||||
child = subprocess.Popen(args)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
||||
args = ["git", "--git-dir=" + path, "update-ref", "refs/heads/master", "FETCH_HEAD"]
|
||||
subprocess.check_call(args)
|
||||
child = subprocess.Popen(args)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
||||
def push(self, base):
|
||||
"""Pushes from the non-local repo to base.
|
||||
@ -58,4 +64,6 @@ class NonLocalGit(object):
|
||||
die("could not find repo at %s", path)
|
||||
|
||||
args = ["git", "--git-dir=" + path, "push", "--quiet", self.repo.gitpath]
|
||||
subprocess.check_call(args)
|
||||
child = subprocess.Popen(args)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
|
@ -19,7 +19,10 @@ def is_remote(url):
|
||||
|
||||
prefixes = ["http", "file", "git"]
|
||||
|
||||
return any(url.startswith(i) for i in prefixes)
|
||||
for prefix in prefixes:
|
||||
if url.startswith(prefix):
|
||||
return True
|
||||
return False
|
||||
|
||||
class GitRepo(object):
|
||||
"""Repo object representing a repo.
|
||||
@ -50,7 +53,9 @@ class GitRepo(object):
|
||||
path = ".cached_revs"
|
||||
ofile = open(path, "w")
|
||||
|
||||
subprocess.check_call(args, stdout=ofile)
|
||||
child = subprocess.Popen(args, stdout=ofile)
|
||||
if child.wait() != 0:
|
||||
raise CalledProcessError
|
||||
output = open(path).readlines()
|
||||
self.revmap = dict(sanitize(i) for i in output)
|
||||
if "HEAD" in self.revmap:
|
||||
|
@ -9,13 +9,13 @@ test_description='Test remote-helper import and export commands'
|
||||
|
||||
if test_have_prereq PYTHON && "$PYTHON_PATH" -c '
|
||||
import sys
|
||||
if sys.hexversion < 0x02050000:
|
||||
if sys.hexversion < 0x02040000:
|
||||
sys.exit(1)
|
||||
'
|
||||
then
|
||||
:
|
||||
else
|
||||
say 'skipping git remote-testgit tests: requires Python 2.5 or newer'
|
||||
say 'skipping git remote-testgit tests: requires Python 2.4 or newer'
|
||||
test_done
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user