Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: ae1fcb5c5e
Fetching contributors…

Cannot retrieve contributors at this time

176 lines (130 sloc) 5.002 kb
import os
import py
import pytest
import hgdistver
from hgdistver import do, do_ex, \
_data_from_archival, \
_archival_to_version, \
def pytest_funcarg__case(request):
return request.param
def get_version(path, method='get_version', **kw):
call = getattr(hgdistver, method)
root = str(path)
return call(root=root, **kw)
@pytest.mark.parametrize('cmd', ['ls', 'dir'])
def test_do(cmd, tmpdir):
if not py.path.local.sysfind('ls'):
pytest.skip(cmd + ' not found')
do(cmd, str(tmpdir))
def test_data_from_archival(tmpdir):
tmpfile = tmpdir.join('test.archival')
tmpfile.write('name: test\nrevision: 1')
res = _data_from_archival(str(tmpfile))
assert res == {
'name': 'test',
'revision': '1',
archival_mapping = {
'1.0': {'tag': '1.0'},
'1.0.post3-000000000000': {
'latesttag': '1.0',
'latesttagdistance': '3',
'node': '0'*20,
'0'*12: {
'node': '0'*20,
'1.2.2': {'tag': 'release-1.2.2'},
'1.2.2a1': {'tag': 'release-1.2.2a1'},
def pytest_funcarg__data(request): return request.param
def pytest_funcarg__expected(request): return request.param
@pytest.mark.parametrize('expected data'.split(), archival_mapping.items(), archival_mapping)
def test_archival_to_version(expected, data):
assert _archival_to_version(data) == expected
def test_version_from_git(tmpdir):
cwd = str(tmpdir)
do('git init', cwd)
initial = get_version(cwd)
assert initial == '0.0.post0'
do('git add test.txt', cwd)
do('git commit -m commit', cwd)
after_first_commit = get_version(cwd)
assert after_first_commit.startswith('0.0.post1-')
do('git tag v0.1', cwd)
at_tag_01 = get_version(cwd)
assert at_tag_01 == '0.1'
do('git add test.txt', cwd)
do('git commit -m commit', cwd)
after_tag_01 = get_version(cwd)
assert after_tag_01.startswith('0.1.post1-')
#XXX: better tests for tag prefixes
@py.test.mark.parametrize('method', ['version_from_hg15_parents', 'version_from_hg_log_with_tags'])
def test_version_from_hg_id(tmpdir, method):
hgv = _hg_version()
if hgv < '1.5' and 'parents' in method:
py.test.skip('hg too old, this test needs >=1.5')
cwd = str(tmpdir)
do('hg init', cwd)
initial = get_version(cwd, method=method)
assert initial.startswith('0.0.post0-' + '0'*12 ) #uses node when no tag
do('hg add test.txt', cwd)
do('hg commit -m commit -u test -d "0 0"', cwd)
after_first_commit = get_version(cwd, method=method)
assert after_first_commit.startswith('0.0.post1-')
do('hg tag v0.1 -u test -d "0 0"', cwd)
after_tag_01 = get_version(cwd, method=method)
assert after_tag_01 == '0.1'
do('hg commit -m commit2 -u test -d "0 0"', cwd)
second_after_tag_01 = get_version(cwd, method=method)
assert second_after_tag_01.startswith('0.1.post2')
do('hg up v0.1', cwd)
at_tag_01 = get_version(cwd)
assert at_tag_01 == '0.1'
def test_version_from_archival(tmpdir):
'node: 000000000000\n'
'tag: 0.1\n'
subdir = tmpdir.join('test').ensure(dir=True)
assert get_version(tmpdir) == '0.1'
assert get_version(subdir) == '0.1'
'node: 000000000000\n'
'latesttag: 0.1\n'
'latesttagdistance: 3\n'
assert get_version(tmpdir) == '0.1.post3-000000000000'
def test_version_from_cachefile(tmpdir):
hgdistver.write_cachefile(str(tmpdir/'test.txt'), '1.0')
assert get_version(tmpdir, cachefile='test.txt') == '1.0'
def test_version_from_pkginfo(tmpdir):
tmpdir.join('PKG-INFO').write('Version: 0.1')
assert get_version(tmpdir, method='version_from_sdist_pkginfo') == '0.1'
def test_root_parameter_creation(monkeypatch):
def assert_cwd(root, cachefile=None):
assert root == os.getcwd()
monkeypatch.setattr(hgdistver, 'methods', [assert_cwd])
def test_root_parameter_pass_by(monkeypatch):
def assert_root_tmp(root, cachefile):
assert root == '/tmp'
monkeypatch.setattr(hgdistver, 'methods', [assert_root_tmp])
def test_cachefile_join(monkeypatch):
def assert_join(root, cachefile):
assert cachefile == os.path.join('tmp', 'cachefile')
monkeypatch.setattr(hgdistver, 'methods', [assert_join])
hgdistver.get_version(root='tmp', cachefile='cachefile')
def test_recreate_cachefile_from_pkginfo(tmpdir):
tmpdir.join('PKG-INFO').write('Version: 0.1')
assert not tmpdir.join('cachefile.txt').check()
ver = get_version(tmpdir, cachefile='cachefile.txt')
assert ver == '0.1'
assert tmpdir.join('cachefile.txt').check()
Jump to Line
Something went wrong with that request. Please try again.