diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-02-20 06:32:09 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-02-20 06:32:09 +0000 |
| commit | add5f08f728d85ee5cd8d184c426acc6a5d590df (patch) | |
| tree | 0873d7aa1e6adf3f26ec94ae18d5062fcb1fd724 | |
| parent | 6e2b111c2ba75a909d61259c0ac119bd10ee1e1b (diff) | |
| parent | 508d090e463e15da3e5db17b0a4a04cab167aeba (diff) | |
| download | oslo-add5f08f728d85ee5cd8d184c426acc6a5d590df.tar.gz oslo-add5f08f728d85ee5cd8d184c426acc6a5d590df.tar.xz oslo-add5f08f728d85ee5cd8d184c426acc6a5d590df.zip | |
Merge changes I71d99f00,Ib91b5af0
* changes:
Add git changelog method.
Add git vcsversion method.
| -rw-r--r-- | openstack/common/setup.py | 48 | ||||
| -rw-r--r-- | tests/unit/test_setup.py | 33 | ||||
| -rw-r--r-- | tests/unit/test_utils.py | 7 |
3 files changed, 77 insertions, 11 deletions
diff --git a/openstack/common/setup.py b/openstack/common/setup.py index 28f5e6f..9eabfcc 100644 --- a/openstack/common/setup.py +++ b/openstack/common/setup.py @@ -36,10 +36,13 @@ def parse_mailmap(mailmap='.mailmap'): return mapping -def str_dict_replace(s, mapping): - for s1, s2 in mapping.iteritems(): - s = s.replace(s1, s2) - return s +def canonicalize_emails(changelog, mapping): + """ Takes in a string and an email alias mapping and replaces all + instances of the aliases in the string with their real email + """ + for alias, email in mapping.iteritems(): + changelog = changelog.replace(alias, email) + return changelog # Get requirements from the first file that exists @@ -85,3 +88,40 @@ def write_requirements(): stdout=subprocess.PIPE) requirements = output.communicate()[0].strip() req_file.write(requirements) + + +def _run_shell_command(cmd): + output = subprocess.Popen(["/bin/sh", "-c", cmd], + stdout=subprocess.PIPE) + return output.communicate()[0].strip() + + +def write_vcsversion(location): + """ Produce a vcsversion dict that mimics the old one produced by bzr + """ + if os.path.isdir('.git'): + branch_nick_cmd = 'git branch | grep -Ei "\* (.*)" | cut -f2 -d" "' + branch_nick = _run_shell_command(branch_nick_cmd) + revid_cmd = "git rev-parse HEAD" + revid = _run_shell_command(revid_cmd).split()[0] + revno_cmd = "git log --oneline | wc -l" + revno = _run_shell_command(revno_cmd) + with open(location, 'w') as version_file: + version_file.write(""" +# This file is automatically generated by setup.py, So don't edit it. :) +version_info = { + 'branch_nick': '%s', + 'revision_id': '%s', + 'revno': %s +} +""" % (branch_nick, revid, revno)) + + +def write_git_changelog(): + """ Write a changelog based on the git changelog """ + if os.path.isdir('.git'): + git_log_cmd = 'git log --stat' + changelog = _run_shell_command(git_log_cmd) + mailmap = parse_mailmap() + with open("ChangeLog", "w") as changelog_file: + changelog_file.write(canonicalize_emails(changelog, mailmap)) diff --git a/tests/unit/test_setup.py b/tests/unit/test_setup.py new file mode 100644 index 0000000..6a65b2d --- /dev/null +++ b/tests/unit/test_setup.py @@ -0,0 +1,33 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2011 OpenStack LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import unittest + +import mock + +from openstack.common import exception +from openstack.common import utils +from openstack.common import setup + + +class UtilsTest(unittest.TestCase): + + def test_str_dict_replace(self): + string = 'Johnnie T. Hozer' + mapping = {'T.': 'The'} + self.assertEqual('Johnnie The Hozer', + setup.canonicalize_emails(string, mapping)) diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 45205e9..1e9f937 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -23,7 +23,6 @@ import mock from openstack.common import exception from openstack.common import utils -from openstack.common import setup class UtilsTest(unittest.TestCase): @@ -108,12 +107,6 @@ class UtilsTest(unittest.TestCase): self.assertEqual(skynet_self_aware_time, utils.parse_isotime(skynet_self_aware_time_str)) - def test_str_dict_replace(self): - string = 'Johnnie T. Hozer' - mapping = {'T.': 'The'} - self.assertEqual('Johnnie The Hozer', - setup.str_dict_replace(string, mapping)) - def test_utcnow(self): utils.set_time_override(mock.sentinel.utcnow) self.assertEqual(utils.utcnow(), mock.sentinel.utcnow) |
