Esempio n. 1
0
def test_jira_fix_versions():
    jira = FakeJIRA(project_versions=SOURCE_VERSIONS, transitions=TRANSITIONS)

    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())
    all_versions, default_versions = issue.get_candidate_fix_versions()
    assert all_versions == SOURCE_VERSIONS
    assert default_versions == ['0.11.0']
Esempio n. 2
0
def test_jira_invalid_issue():
    class Mock:
        def issue(self, jira_id):
            raise Exception("not found")

    with pytest.raises(Exception):
        merge_arrow_pr.JiraIssue(Mock(), 'ARROW-1234', 'ARROW', FakeCLI())
Esempio n. 3
0
def test_jira_parquet_no_suggest_non_cpp():
    # ARROW-7351
    versions_json = [{
        'name': 'cpp-1.5.0',
        'released': True
    }, {
        'name': 'cpp-1.6.0',
        'released': False
    }, {
        'name': 'cpp-1.7.0',
        'released': False
    }, {
        'name': '1.11.0',
        'released': False
    }, {
        'name': '1.12.0',
        'released': False
    }]

    versions = [FakeVersion(raw['name'], raw) for raw in versions_json]

    jira = FakeJIRA(project_versions=versions, transitions=TRANSITIONS)
    issue = merge_arrow_pr.JiraIssue(jira, 'PARQUET-1713', 'PARQUET',
                                     FakeCLI())
    all_versions, default_versions = issue.get_candidate_fix_versions()
    assert all_versions == versions
    assert default_versions == ['cpp-1.6.0']
Esempio n. 4
0
def test_no_unset_point_release_fix_version():
    # ARROW-6915: We have had the problem of issues marked with a point release
    # having their fix versions overwritten by the merge tool. This verifies
    # that existing patch release versions are carried over
    status = FakeStatus('In Progress')

    versions_json = {
        '0.14.2': {
            'name': '0.14.2',
            'id': 1
        },
        '0.15.1': {
            'name': '0.15.1',
            'id': 2
        },
        '0.16.0': {
            'name': '0.16.0',
            'id': 3
        },
        '0.17.0': {
            'name': '0.17.0',
            'id': 4
        }
    }

    fields = FakeFields(status, 'summary', FakeAssignee('someone'),
                        [FakeComponent('Java')], [
                            FakeVersion(v, versions_json[v])
                            for v in ['0.17.0', '0.15.1', '0.14.2']
                        ])
    issue = FakeIssue(fields)

    jira = FakeJIRA(issue=issue,
                    project_versions=SOURCE_VERSIONS,
                    transitions=TRANSITIONS)

    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())
    issue.resolve([versions_json['0.16.0']], "a comment")

    assert jira.captured_transition == {
        'jira_id': 'ARROW-1234',
        'transition_id': 1,
        'comment': 'a comment',
        'fixVersions':
        [versions_json[v] for v in ['0.16.0', '0.15.1', '0.14.2']]
    }

    issue.resolve([versions_json['0.15.1']], "a comment")

    assert jira.captured_transition == {
        'jira_id': 'ARROW-1234',
        'transition_id': 1,
        'comment': 'a comment',
        'fixVersions': [versions_json[v] for v in ['0.15.1', '0.14.2']]
    }
def test_jira_fix_versions():
    jira = FakeJIRA(project_versions=SOURCE_VERSIONS, transitions=TRANSITIONS)

    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())
    all_versions, default_versions = issue.get_candidate_fix_versions()

    expected = sorted([x for x in SOURCE_VERSIONS if not x.raw['released']],
                      key=lambda x: x.name,
                      reverse=True)
    assert all_versions == expected
    assert default_versions == ['0.11.0']
def test_jira_no_suggest_patch_release():
    versions_json = [
        {'name': '0.11.1', 'released': False},
        {'name': '0.12.0', 'released': False},
    ]

    versions = [FakeVersion(raw['name'], raw) for raw in versions_json]

    jira = FakeJIRA(project_versions=versions, transitions=TRANSITIONS)
    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())
    all_versions, default_versions = issue.get_candidate_fix_versions()
    assert all_versions == versions
    assert default_versions == ['0.12.0']
def test_jira_already_resolved():
    status = FakeStatus('Resolved')
    fields = FakeFields(status, 'issue summary', FakeAssignee('groundhog'))
    issue = FakeIssue(fields)

    jira = FakeJIRA(issue=issue,
                    project_versions=SOURCE_VERSIONS,
                    transitions=TRANSITIONS)

    fix_versions = [SOURCE_VERSIONS[0].raw]
    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())

    with pytest.raises(Exception,
                       match="ARROW-1234 already has status 'Resolved'"):
        issue.resolve(fix_versions, "")
Esempio n. 8
0
def test_jira_resolve_non_mainline():
    jira = FakeJIRA(issue=FAKE_ISSUE_1,
                    project_versions=SOURCE_VERSIONS,
                    transitions=TRANSITIONS)

    my_comment = 'my comment'
    fix_versions = [SOURCE_VERSIONS[0].raw]

    issue = merge_arrow_pr.JiraIssue(jira, 'ARROW-1234', 'ARROW', FakeCLI())
    issue.resolve(fix_versions, my_comment)

    assert jira.captured_transition == {
        'jira_id': 'ARROW-1234',
        'transition_id': 1,
        'comment': my_comment,
        'fixVersions': fix_versions
    }