Exemple #1
0
def test_find_version(mercurial_app_layout):
    for repo in (('repo1', 'mercurial'), ('repo2', 'git')):
        mercurial_app_layout.create_repo(repo_name=repo[0], repo_type=repo[1])

        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello')
        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello2')

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch')
    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    ver = mbe.find_version(changesets)
    assert ver is None

    current_version = mbe.stamp_app_version(changesets)
    assert current_version == '0.0.1.0'

    mbe.publish(current_version)
    mbe.deallocate_backend()

    release_modes = ('patch', 'minor', 'major', 'micro')
    for release_mode in release_modes:
        params = mercurial_app_layout.create_mercurial_backend_params(
            'test_app1', release_mode)
        mbe = ver_stamp.MercurialVersionsBackend(params)
        mbe.allocate_backend()
        changesets = ver_stamp.HostState.get_current_changeset(
            mercurial_app_layout.base_versions_dir_path)

        ver = mbe.find_version(changesets)
        assert ver == '0.0.1.0'

        mbe.deallocate_backend()

    # Add a change
    mercurial_app_layout.write_file(repo_name='repo1',
                                    file_relative_path='a/b/c.txt',
                                    content='xxx')

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch')
    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    ver = mbe.find_version(changesets)
    assert ver is None

    current_version = mbe.stamp_app_version(changesets)
    assert current_version == '0.0.2.0'
Exemple #2
0
def test_version_template(mercurial_app_layout):
    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    ver = mbe.get_be_formatted_version('1.0.3.6')
    assert ver == '1.0.3'

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch', version_template='ap{0}xx{0}XX{1}AC@{0}{2}{3}C')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    ver = mbe.get_be_formatted_version('1.0.3.6')
    assert ver == 'ap1xxXX0AC@36C'
Exemple #3
0
def test_starting_version(mercurial_app_layout):
    for repo in (('repo1', 'mercurial'), ('repo2', 'git')):
        mercurial_app_layout.create_repo(repo_name=repo[0], repo_type=repo[1])

        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello')
        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello2')

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch', '1.9.5.0')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    assert mbe._starting_version == '1.9.5.0'

    ver = mbe.find_version(changesets)
    assert ver is None

    current_version = mbe.stamp_app_version(changesets)

    assert current_version == '1.9.6.0'
Exemple #4
0
def test_version_info(mercurial_app_layout):
    for repo in (('repo1', 'mercurial'), ('repo2', 'git')):
        mercurial_app_layout.create_repo(repo_name=repo[0], repo_type=repo[1])

        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello')
        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello2')

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch')
    dir_path = os.path.dirname(params['app_version_file'])
    pathlib.Path(dir_path).mkdir(parents=True, exist_ok=True)
    mercurial_app_layout.add_version_info_file(
        '{0}/version_info.py'.format(dir_path).encode(),
        custom_repos=('repo1', ))

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    current_version = mbe.stamp_app_version(changesets)
    loader = importlib.machinery.SourceFileLoader('version',
                                                  params['app_version_file'])
    ver = types.ModuleType(loader.name)
    loader.exec_module(ver)

    repo_changeset = None
    for k, v in changesets.items():
        if k != 'repo1':
            continue

        repo_changeset = v['hash']
        break

    assert 'repo1' in ver.changesets
    assert len(ver.changesets.keys()) == 1
    assert ver.changesets['repo1']['hash'] == repo_changeset
    assert ver._version == current_version

    mbe.publish(current_version)
    mbe.deallocate_backend()
Exemple #5
0
def test_output(mercurial_app_layout):
    for repo in (('repo1', 'mercurial'), ('repo2', 'git')):
        mercurial_app_layout.create_repo(repo_name=repo[0], repo_type=repo[1])

        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello')
        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello2')

    params = mercurial_app_layout.create_mercurial_backend_params(
        'test_app1', 'patch')
    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    output = ver_stamp.get_version(mbe, changesets)
    assert output == '0.0.1'

    output = ver_stamp.get_version(mbe, changesets)
    assert output == '0.0.1'
Exemple #6
0
def test_stamp_main_version(mercurial_app_layout):
    strings = time.strftime("%y,%m")
    strings = strings.split(',')
    tmp_date_ver = '{0}.{1}'.format(strings[0], strings[1])

    for repo in (('repo1', 'mercurial'), ('repo2', 'git')):
        mercurial_app_layout.create_repo(repo_name=repo[0], repo_type=repo[1])

        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello')
        mercurial_app_layout.write_file(repo_name=repo[0],
                                        file_relative_path='a/b/c.txt',
                                        content='hello2')

    params = mercurial_app_layout.create_mercurial_backend_params(
        app_name='test_app1',
        release_mode='patch',
        main_system_name='MainSystem')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    current_version = mbe.stamp_app_version(changesets)

    assert current_version == '0.0.1.0'

    formatted_main_ver = mbe.stamp_main_system_version(current_version)

    assert formatted_main_ver == '{0}.1'.format(tmp_date_ver)

    mbe.publish(current_version, formatted_main_ver)
    mbe.deallocate_backend()

    mercurial_app_layout.write_file(repo_name='repo1',
                                    file_relative_path='a/b/c.txt',
                                    content='hello3')

    params = mercurial_app_layout.create_mercurial_backend_params(
        app_name='test_app2',
        release_mode='patch',
        main_system_name='MainSystem')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    current_version = mbe.stamp_app_version(changesets)

    assert current_version == '0.0.1.0'

    formatted_main_ver = mbe.stamp_main_system_version(current_version)

    assert formatted_main_ver == '{0}.2'.format(tmp_date_ver)

    mbe.publish(current_version, formatted_main_ver)
    mbe.deallocate_backend()

    params = mercurial_app_layout.create_mercurial_backend_params(
        app_name='test_app1',
        release_mode='patch',
        main_system_name='MainSystem')

    mbe = ver_stamp.MercurialVersionsBackend(params)
    mbe.allocate_backend()
    changesets = ver_stamp.HostState.get_current_changeset(
        mercurial_app_layout.base_versions_dir_path)

    current_version = mbe.stamp_app_version(changesets)

    assert current_version == '0.0.2.0'

    formatted_main_ver = mbe.stamp_main_system_version(current_version)

    assert formatted_main_ver == '{0}.3'.format(tmp_date_ver)

    mbe.publish(current_version, formatted_main_ver)
    mbe.deallocate_backend()