diff options
author | Doug Hellmann <doug.hellmann@dreamhost.com> | 2013-08-02 11:46:09 -0400 |
---|---|---|
committer | Doug Hellmann <doug.hellmann@dreamhost.com> | 2013-08-02 13:11:41 -0400 |
commit | 8eff471f60a0be2eb6ede5525e224852d5c06048 (patch) | |
tree | 8d51ea514114ced5c50fc8c6b6e578f4cb9c627e | |
parent | 9a3b73388713dcd383df3b9a5b0608120f22c35e (diff) | |
download | pbr-8eff471f60a0be2eb6ede5525e224852d5c06048.tar.gz |
Ensure _run_shell_command always returns same type
If _run_shell_command gets no output, return an empty
string instead of None. This ensures that callers can
always treat the results as a string, and avoids the
TypeError that was preventing the ChangeLog and AUTHORS
files from being created properly in a git repository
without any commits.
Change-Id: I880210bc3ff92ece29b216a10e1d0c918f884eaf
-rw-r--r-- | pbr/packaging.py | 2 | ||||
-rw-r--r-- | pbr/tests/test_packaging.py | 106 |
2 files changed, 107 insertions, 1 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py index 8e6ab4a..366f21e 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -220,7 +220,7 @@ def _run_shell_command(cmd, throw_on_error=False, buffer=True): raise distutils.errors.DistutilsError( "%s returned %d" % (cmd, output.returncode)) if len(out) == 0 or not out[0] or not out[0].strip(): - return None + return '' return out[0].strip().decode('utf-8') diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py new file mode 100644 index 0000000..7461c0f --- /dev/null +++ b/pbr/tests/test_packaging.py @@ -0,0 +1,106 @@ +# Copyright (c) 2013 New Dream Network, LLC (DreamHost) +# +# 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. +# +# Copyright (C) 2013 Association of Universities for Research in Astronomy +# (AURA) +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# 3. The name of AURA and its representatives may not be used to +# endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY AURA ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL AURA BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + +import os + +from pbr import tests + + +class TestPackagingInGitRepoWithCommit(tests.BaseTestCase): + + def setUp(self): + super(TestPackagingInGitRepoWithCommit, self).setUp() + self._run_cmd('git', ['init', '.']) + self._run_cmd('git', ['add', '.']) + self._run_cmd('git', ['commit', '-m', 'test commit']) + self.run_setup('sdist') + return + + def test_authors(self): + # One commit, something should be in the authors list + with open(os.path.join(self.package_dir, 'AUTHORS'), 'r') as f: + body = f.read() + self.assertNotEqual(body, '') + + def test_changelog(self): + with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f: + body = f.read() + # One commit, something should be in the ChangeLog list + self.assertNotEqual(body, '') + + +class TestPackagingInGitRepoWithoutCommit(tests.BaseTestCase): + + def setUp(self): + super(TestPackagingInGitRepoWithoutCommit, self).setUp() + self._run_cmd('git', ['init', '.']) + self._run_cmd('git', ['add', '.']) + self.run_setup('sdist') + return + + def test_authors(self): + # No commits, no authors in list + with open(os.path.join(self.package_dir, 'AUTHORS'), 'r') as f: + body = f.read() + self.assertEqual(body, '') + + def test_changelog(self): + # No commits, nothing should be in the ChangeLog list + with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f: + body = f.read() + self.assertEqual(body, '') + + +class TestPackagingInPlainDirectory(tests.BaseTestCase): + + def setUp(self): + super(TestPackagingInPlainDirectory, self).setUp() + self.run_setup('sdist') + return + + def test_authors(self): + # Not a git repo, no AUTHORS file created + filename = os.path.join(self.package_dir, 'AUTHORS') + self.assertFalse(os.path.exists(filename)) + + def test_changelog(self): + # Not a git repo, no ChangeLog created + filename = os.path.join(self.package_dir, 'ChangeLog') + self.assertFalse(os.path.exists(filename)) |