summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDavanum Srinivas <dims@linux.vnet.ibm.com>2013-02-18 07:21:23 -0500
committerIsaku Yamahata <yamahata@valinux.co.jp>2013-02-25 16:16:55 +0900
commit8842a00c452dfa9d2ee70e73419e92daa477ea1a (patch)
tree084b2b17bcb92ccc7706b946ee8f5d1052d1dff0 /tests
parent2b418be864a5aa5ba135f7651e83051cf3bf9ce6 (diff)
downloadoslo-8842a00c452dfa9d2ee70e73419e92daa477ea1a.tar.gz
oslo-8842a00c452dfa9d2ee70e73419e92daa477ea1a.tar.xz
oslo-8842a00c452dfa9d2ee70e73419e92daa477ea1a.zip
openstack.common.setup: fails to get version from git
quantum run_tests.py fails because openstack.common.setup._get_version_from_git fails. It is because quantum unit tests run under quantum/tests/unit instead of git root dir. So the function should check parent dirs for .git. cinder folks seem to have hit this bug (1125416). ERROR: test_network_gateway_update (quantum.tests.unit.nicira.test_networkgw.NetworkGatewayExtensionTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "quantum/quantum/tests/unit/nicira/test_networkgw.py", line 70, in setUp config.parse(args=args) File "quantum/quantum/common/config.py", line 99, in parse version='%%prog %s' % quantum_version.release_string()) File "quantum/quantum/openstack/common/version.py", line 63, in release_string self.release = self._get_version_from_pkg_resources() File "quantum/quantum/openstack/common/version.py", line 56, in _get_version_from_pkg_resources return setup.get_version(self.package) File "quantum/quantum/openstack/common/setup.py", line 334, in get_version raise Exception("Versioning for this project requires either an sdist" Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. Change-Id: I2e24c00b5ba8f35381cac081ff72d86ea0d75d19 Fixes: bug #1131162 and bug #1125416 Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_setup.py45
1 files changed, 35 insertions, 10 deletions
diff --git a/tests/unit/test_setup.py b/tests/unit/test_setup.py
index 60e2e6f..30a5eb6 100644
--- a/tests/unit/test_setup.py
+++ b/tests/unit/test_setup.py
@@ -15,6 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import io
import os
import sys
import StringIO
@@ -84,32 +85,56 @@ class GitLogsTest(utils.BaseTestCase):
temp_path = self.useFixture(fixtures.TempDir()).path
self.useFixture(DiveDir(temp_path))
+ @staticmethod
+ def _root_dir():
+ # NOTE(yamahata): get root direcotry of repository
+ # __file__ = $ROOT/tests/unit/test_setup.py
+ # => $ROOT/tests/unit => $ROOT/tests => $ROOT
+ root_dir = os.path.dirname(__file__)
+ root_dir = os.path.dirname(root_dir)
+ root_dir = os.path.dirname(root_dir)
+ return root_dir
+
def test_write_git_changelog(self):
- exist_files = [".git", ".mailmap"]
- self.useFixture(fixtures.MonkeyPatch("os.path.exists",
- lambda path: path in exist_files))
+ root_dir = self._root_dir()
+ exist_files = [os.path.join(root_dir, f) for f in ".git", ".mailmap"]
+ self.useFixture(fixtures.MonkeyPatch(
+ "os.path.exists",
+ lambda path: os.path.abspath(path) in exist_files))
self.useFixture(fixtures.FakePopen(lambda _: {
"stdout": StringIO.StringIO("Author: Foo Bar <email@bar.com>\n")
}))
- with open(".mailmap", "w") as mm_fh:
- mm_fh.write("Foo Bar <email@foo.com> <email@bar.com>\n")
+
+ builtin_open = open
+
+ def _fake_open(name, mode):
+ if name.endswith('.mailmap'):
+ # StringIO.StringIO doesn't have __exit__ (at least python 2.6)
+ return io.BytesIO("Foo Bar <email@foo.com> <email@bar.com>\n")
+ return builtin_open(name, mode)
+ self.useFixture(fixtures.MonkeyPatch("__builtin__.open", _fake_open))
write_git_changelog()
- with open("ChangeLog", "r") as ch_fh:
+ with open(os.path.join(root_dir, "ChangeLog"), "r") as ch_fh:
self.assertTrue("email@foo.com" in ch_fh.read())
def test_generate_authors(self):
author_old = "Foo Foo <email@foo.com>"
author_new = "Bar Bar <email@bar.com>"
- exist_files = [".git", "AUTHORS.in"]
- self.useFixture(fixtures.MonkeyPatch("os.path.exists",
- lambda path: path in exist_files))
+ root_dir = self._root_dir()
+ 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")
+ if proc_args["args"][2].startswith(git_log_cmd)
else "")
}))