test_version.py
"""Tests for version.py."""
import nose.tools as nt
import sys
import os
from StringIO import StringIO
import subprocess
import json
import pyuvdata
def test_construct_version_info():
# this test is a bit silly because it uses the nearly the same code as the original,
# but it will detect accidental changes that could cause problems.
# It does test that the __version__ attribute is set on pyuvdata.
# I can't figure out how to test the except clause in construct_version_info.
# this line is modified from the main implementation since we're in pyuvdata/tests/
pyuvdata_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
try:
git_origin = subprocess.check_output(['git', 'config', '--get', 'remote.origin.url'],
stderr=subprocess.STDOUT).strip()
git_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD'],
stderr=subprocess.STDOUT).strip()
git_description = subprocess.check_output(['git', 'describe', '--dirty', '--tags', '--always']).strip()
git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD'],
stderr=subprocess.STDOUT).strip()
git_version = subprocess.check_output(['git', 'describe', '--tags', '--abbrev=0']).strip()
except subprocess.CalledProcessError:
try:
# Check if a GIT_INFO file was created when installing package
git_file = os.path.join(pyuvdata_dir, 'GIT_INFO')
with open(git_file) as data_file:
data = [x.encode('UTF8') for x in json.loads(data_file.read().strip())]
git_origin = data[0]
git_hash = data[1]
git_description = data[2]
git_branch = data[3]
except (IOError, OSError):
git_origin = ''
git_hash = ''
git_description = ''
git_branch = ''
test_version_info = {'version': pyuvdata.__version__, 'git_origin': git_origin,
'git_hash': git_hash, 'git_description': git_description,
'git_branch': git_branch}
nt.assert_equal(pyuvdata.version.construct_version_info(), test_version_info)
def test_main():
version_info = pyuvdata.version.construct_version_info()
saved_stdout = sys.stdout
try:
out = StringIO()
sys.stdout = out
pyuvdata.version.main()
output = out.getvalue()
nt.assert_equal(output, 'Version = {v}\ngit origin = {o}\n'
'git branch = {b}\ngit description = {d}\n'
.format(v=version_info['version'],
o=version_info['git_origin'],
b=version_info['git_branch'],
d=version_info['git_description']))
finally:
sys.stdout = saved_stdout