def test_keyword_not_git_repo(git_describe, fake_file):
    git_describe.exc = Exception('error')
    dist = fake_obj({ 'metadata': { 'name': 'spam' } })

    with pytest.raises(Exception) as e:
        validate_version_command_keyword(dist, 'version_command', ('git describe', 'pep440-git', '-'))

    assert e.value.args[0].startswith('Could not find version')
def test_keyword(git_describe, fake_file):
    git_describe.result = b'1.2-0-abcd123\n'
    dist = fake_obj({ 'metadata': { 'name': 'spam' } })

    validate_version_command_keyword(dist, 'version_command', ('git describe', 'pep440-git', '-'))

    assert dist.metadata.version == '1.2'
    assert dist.metadata.version_full == '1.2-0-abcd123'
def test_keyword_closed_tag(git_describe, fake_file):
    git_describe.result = b'1.2.dev5-3-abcd123\n'
    dist = fake_obj({ 'metadata': { 'name': 'spam' } })

    with pytest.raises(Exception) as e:
        validate_version_command_keyword(dist, 'version_command', ('git describe', 'pep440-git', '-'))

    assert e.value.args[0] == ('Could not transform version \'1.2.dev5-3-abcd123\''
                               if sys.version_info[0] == 3 else
                               'Could not transform version u\'1.2.dev5-3-abcd123\'')
def test_keyword_cached(git_describe, fake_file):
    git_describe.exc = Exception('error')
    fake_file.content['spam.egg-info/version.txt'] = '1.2'
    fake_file.content['spam.egg-info/version_full.txt'] = '1.2-0-abcd123'
    dist = fake_obj({ 'metadata': { 'name': 'spam' } })

    validate_version_command_keyword(dist, 'version_command', ('git describe', 'pep440-git', '-'))

    assert dist.metadata.version == '1.2'
    assert dist.metadata.version_full == '1.2-0-abcd123'