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']
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())
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']
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, "")
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 }