Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 4e2245f5542b57ea02257e802d1666e3b5285172
Author: clime <clime(a)redhat.com>
Date: Mon Jan 25 15:35:04 2016 +0100
[dist-git] error handling based on subprocess return codes instead of output to stderr
(e.g. git outputs progress to stderr) + missing catch for GitException in do_import
(results in better error messages in frontend, see bz#1295540)
---------------------------------------------------------------
dist-git/dist_git/dist_git_importer.py | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/dist-git/dist_git/dist_git_importer.py
b/dist-git/dist_git/dist_git_importer.py
index 2734b36..071a73f 100755
--- a/dist-git/dist_git/dist_git_importer.py
+++ b/dist-git/dist_git/dist_git_importer.py
@@ -201,8 +201,10 @@ class GitProvider(SrpmBuilderProvider):
proc = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=self.tmp)
output, error = proc.communicate()
except OSError as e:
+ log.error(str(e))
raise GitException(FailTypeEnum("git_clone_failed"))
- if error:
+ if proc.returncode != 0:
+ log.error(error)
raise GitException(FailTypeEnum("git_clone_failed"))
# 1b. get dir name
@@ -212,8 +214,10 @@ class GitProvider(SrpmBuilderProvider):
proc = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=self.tmp)
output, error = proc.communicate()
except OSError as e:
+ log.error(str(e))
raise GitException(FailTypeEnum("git_wrong_directory"))
- if error:
+ if proc.returncode != 0:
+ log.error(error)
raise GitException(FailTypeEnum("git_wrong_directory"))
if output and len(output.split()) == 1:
git_dir_name = output.split()[0]
@@ -232,8 +236,10 @@ class GitProvider(SrpmBuilderProvider):
proc = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=self.git_dir)
output, error = proc.communicate()
except OSError as e:
+ log.error(str(e))
raise GitException(FailTypeEnum("git_checkout_error"))
- if proc.returncode:
+ if proc.returncode != 0:
+ log.error(error)
raise GitException(FailTypeEnum("git_checkout_error"))
def build(self):
@@ -263,8 +269,10 @@ class GitAndTitoProvider(GitProvider):
proc = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=git_subdir)
output, error = proc.communicate()
except OSError as e:
+ log.error(str(e))
raise GitAndTitoException(FailTypeEnum("srpm_build_error"))
- if error:
+ if proc.returncode != 0:
+ log.error(error)
raise GitAndTitoException(FailTypeEnum("srpm_build_error"))
@@ -290,9 +298,9 @@ class MockScmProvider(SrpmBuilderProvider):
proc = Popen(" ".join(cmd), shell=True, stdout=PIPE, stderr=PIPE)
output, error = proc.communicate()
except OSError as e:
- log.error(error)
+ log.error(str(e))
raise SrpmBuilderException(FailTypeEnum("srpm_build_error"))
- if proc.returncode:
+ if proc.returncode != 0:
log.error(error)
raise SrpmBuilderException(FailTypeEnum("srpm_build_error"))
@@ -387,8 +395,10 @@ class DistGitImporter(object):
proc = Popen(cmd, stdout=PIPE, stderr=PIPE)
output, error = proc.communicate()
except OSError as e:
+ log.error(str(e))
raise PackageQueryException(e)
- if error:
+ if proc.returncode != 0:
+ log.error(error)
raise PackageQueryException('Error querying srpm: %s' % error)
try:
@@ -462,6 +472,11 @@ class DistGitImporter(object):
log.exception("send a response - failure during query of:
{}".format(task.package_url))
self.post_back_safe({"task_id": task.task_id, "error":
"srpm_query_failed"})
+ except GitException as e:
+ log.exception("send a response - failure during query of:
{}".format(task.package_url))
+ log.exception("... due to: {}".format(str(e)))
+ self.post_back_safe({"task_id": task.task_id, "error":
str(e)})
+
except GitAndTitoException as e:
log.exception("send a response - failure during 'Tito and Git'
import of: {}".format(task.git_url))
log.exception(" ... due to: {}".format(str(e)))