summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-03-23 04:51:11 +0000
committerGerrit Code Review <review@openstack.org>2013-03-23 04:51:11 +0000
commit329b8dd639e4f65369547f96f0ad841bb2fdf113 (patch)
treeb74a27545b3048a3ea4cae5151806d176b28ac0e
parent3e91e6d123cc737aebc80d2e7b413183bbc6828e (diff)
parent6e8b9ba12c96cbf422edd54a6cb12cbc0df66514 (diff)
downloadoslo-329b8dd639e4f65369547f96f0ad841bb2fdf113.tar.gz
oslo-329b8dd639e4f65369547f96f0ad841bb2fdf113.tar.xz
oslo-329b8dd639e4f65369547f96f0ad841bb2fdf113.zip
Merge "Include Co-authored-by entries in AUTHORS."
-rw-r--r--openstack/common/setup.py8
-rw-r--r--tests/unit/test_setup.py24
2 files changed, 28 insertions, 4 deletions
diff --git a/openstack/common/setup.py b/openstack/common/setup.py
index 030df61..dec74fd 100644
--- a/openstack/common/setup.py
+++ b/openstack/common/setup.py
@@ -171,6 +171,14 @@ def generate_authors():
" log --format='%aN <%aE>' | sort -u | "
"egrep -v '" + jenkins_email + "'")
changelog = _run_shell_command(git_log_cmd)
+ signed_cmd = ("git log --git-dir=" + git_dir +
+ " | grep -i Co-authored-by: | sort -u")
+ signed_entries = _run_shell_command(signed_cmd)
+ if signed_entries:
+ new_entries = "\n".join(
+ [signed.split(":", 1)[1].strip()
+ for signed in signed_entries.split("\n") if signed])
+ changelog = "\n".join((changelog, new_entries))
mailmap = _parse_git_mailmap(git_dir)
with open(new_authors, 'w') as new_authors_fh:
new_authors_fh.write(canonicalize_emails(changelog, mailmap))
diff --git a/tests/unit/test_setup.py b/tests/unit/test_setup.py
index 62decc8..64ca0e2 100644
--- a/tests/unit/test_setup.py
+++ b/tests/unit/test_setup.py
@@ -119,23 +119,38 @@ class GitLogsTest(utils.BaseTestCase):
with open(os.path.join(root_dir, "ChangeLog"), "r") as ch_fh:
self.assertTrue("email@foo.com" in ch_fh.read())
+ def _fake_log_output(self, cmd, mapping):
+ for (k, v) in mapping.items():
+ if cmd.startswith(k):
+ return v
+ return ""
+
def test_generate_authors(self):
author_old = "Foo Foo <email@foo.com>"
author_new = "Bar Bar <email@bar.com>"
+ co_author = "Foo Bar <foo@bar.com>"
+ co_author_by = "Co-authored-by: " + co_author
root_dir = self._root_dir()
+
+ git_log_cmd = ("git --git-dir=%s log --format" %
+ os.path.join(root_dir, '.git'))
+ git_co_log_cmd = ("git log --git-dir=%s" %
+ os.path.join(root_dir, '.git'))
+ cmd_map = {
+ git_log_cmd: author_new,
+ git_co_log_cmd: co_author_by,
+ }
+
exist_files = [os.path.join(root_dir, ".git"),
os.path.abspath("AUTHORS.in")]
self.useFixture(fixtures.MonkeyPatch(
"os.path.exists",
lambda path: os.path.abspath(path) in exist_files))
- git_log_cmd = "git --git-dir=%s log" % os.path.join(root_dir, '.git')
self.useFixture(fixtures.FakePopen(lambda proc_args: {
"stdout": StringIO.StringIO(
- author_new
- if proc_args["args"][2].startswith(git_log_cmd)
- else "")
+ self._fake_log_output(proc_args["args"][2], cmd_map))
}))
with open("AUTHORS.in", "w") as auth_fh:
@@ -147,6 +162,7 @@ class GitLogsTest(utils.BaseTestCase):
authors = auth_fh.read()
self.assertTrue(author_old in authors)
self.assertTrue(author_new in authors)
+ self.assertTrue(co_author in authors)
class GetCmdClassTest(utils.BaseTestCase):