def test_version_from_git(tmpdir):
    cwd = str(tmpdir)
    do('git init', cwd)
    initial = get_version(cwd)
    assert initial == '0.0'
    tmpdir.join('test.txt').write('test')
    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-')
    assert not after_first_commit.endswith('1-')

    do('git tag v0.1', cwd)
    at_tag_01 = get_version(cwd)
    assert at_tag_01 == '0.1'

    tmpdir.join('test.txt').write('test2')
    dirty_tag_01 = get_version(cwd)
    assert dirty_tag_01.startswith('0.1.post0-')
    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-')
def test_version_from_hg_id(tmpdir, method):
    hgv = _hg_version()
    print(hgv)
    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 == '0.0'
    tmpdir.join('test.txt').write('test')
    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'

    tmpdir.join('test.txt').write('test2')
    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_do(cmd, tmpdir):

    if not py.path.local.sysfind('ls'):
        pytest.skip(cmd + ' not found')
    do(cmd, str(tmpdir))