def test_automerge_community_only(self): # automerge should only be allowed if the support is 100% community IW = IssueWrapperMock('ansible', 'ansible', 1) IW._is_pullrequest = True meta1 = { u'is_module_util': False, u'is_new_module': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'component_support': [u'core', u'community'], u'is_backport': False, u'merge_commits': False, u'has_commit_mention': False, u'is_needs_info': False, u'has_shippable': True, u'has_travis': False, u'mergeable': True, u'ci_stale': False, u'ci_state': u'success', u'shipit': True, u'supershipit': True, u'component_matches': [ {u'repo_filename': u'foo', u'supershipit': [u'jane', u'doe']} ] } meta2 = meta1.copy() meta2[u'component_support'] = [u'community', u'community'] afacts1 = get_automerge_facts(IW, meta1) afacts2 = get_automerge_facts(IW, meta2) assert afacts1[u'automerge'] == False assert afacts2[u'automerge'] == True
def test_automerge_community_only(self): # automerge should only be allowed if the support is 100% community IW = IssueWrapperMock('ansible', 'ansible', 1) IW.pr_files = [ MockFile('foo'), ] IW._is_pullrequest = True meta1 = { 'is_module_util': False, 'is_new_module': False, 'is_needs_rebase': False, 'is_needs_revision': False, 'component_support': ['core', 'community'], 'is_backport': False, 'merge_commits': False, 'has_commit_mention': False, 'is_needs_info': False, 'has_ci': True, 'mergeable': True, 'ci_stale': False, 'ci_state': 'success', 'shipit': True, 'supershipit': True, 'component_matches': [ { 'repo_filename': 'bar', 'supershipit': ['jane', 'doe'], 'support': 'core' }, { 'repo_filename': 'foo', 'supershipit': ['jane', 'doe'], 'support': 'community' }, ] } meta2 = copy.deepcopy(meta1) meta2['component_support'] = ['community', 'community'] meta2['component_matches'][0]['support'] = 'community' afacts1 = get_automerge_facts(IW, meta1.copy()) afacts2 = get_automerge_facts(IW, meta2.copy()) assert afacts1['automerge'] == False assert afacts2['automerge'] == True
def test_automerge_community_only(self): # automerge should only be allowed if the support is 100% community IW = IssueWrapperMock('ansible', 'ansible', 1) IW._is_pullrequest = True meta1 = { u'is_module_util': False, u'is_new_module': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'component_support': [u'core', u'community'], u'is_backport': False, u'merge_commits': False, u'has_commit_mention': False, u'is_needs_info': False, u'has_shippable': True, u'has_travis': False, u'mergeable': True, u'ci_stale': False, u'ci_state': u'success', u'shipit': True, u'supershipit': True, u'component_matches': [{ u'repo_filename': u'foo', u'supershipit': [u'jane', u'doe'] }] } meta2 = meta1.copy() meta2[u'component_support'] = [u'community', u'community'] afacts1 = get_automerge_facts(IW, meta1) afacts2 = get_automerge_facts(IW, meta2) assert afacts1[u'automerge'] == False assert afacts2[u'automerge'] == True
def test_automerge_deletion_from_ignore(self): iw = IssueWrapperMock('ansible', 'ansible', 1) iw._is_pullrequest = True mfile = MockFile(u'test/sanity/validate-modules/ignore.txt') mfile.deletions = 1 iw.pr_files = [mfile] meta = { u'is_module_util': False, u'is_new_module': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'component_support': [u'community'], u'is_backport': False, u'merge_commits': False, u'has_commit_mention': False, u'is_needs_info': False, u'has_shippable': True, u'has_travis': False, u'mergeable': True, u'ci_stale': False, u'ci_state': u'success', u'shipit': True, u'supershipit': False, u'is_new_directory': False, u'is_module': True, u'module_match': { u'namespace': u'foo', u'maintainers': [u'ghuser1'], }, } afacts = get_automerge_facts(iw, meta) self.assertTrue(afacts[u'automerge'])
def test_automerge_changelog_fragment(self): iw = IssueWrapperMock('ansible', 'ansible', 1) iw._is_pullrequest = True iw.pr_files = [ MockFile(u'lib/ansible/modules/foo/bar.py'), MockFile(u'changelogs/fragments/00000-fragment.yaml') ] meta = { u'is_module_util': False, u'is_new_module': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'component_support': [u'community'], u'is_backport': False, u'merge_commits': False, u'has_commit_mention': False, u'is_needs_info': False, u'has_shippable': True, u'has_travis': False, u'mergeable': True, u'ci_stale': False, u'ci_state': u'success', u'shipit': True, u'supershipit': False, u'is_new_directory': False, u'is_module': True, u'module_match': { u'namespace': u'foo', u'maintainers': [u'ghuser1'], }, } afacts = get_automerge_facts(iw, meta) self.assertTrue(afacts[u'automerge'])
def test_automerge_addition_to_ignore(self): iw = IssueWrapperMock('ansible', 'ansible', 1) iw._is_pullrequest = True mfile = MockFile('test/sanity/validate-modules/ignore.txt') mfile.additions = 1 mfile.status = 'added' iw.pr_files = [mfile] meta = { 'is_module_util': False, 'is_new_module': False, 'is_needs_rebase': False, 'is_needs_revision': False, 'component_support': ['community'], 'is_backport': False, 'merge_commits': False, 'has_commit_mention': False, 'is_needs_info': False, 'has_ci': True, 'mergeable': True, 'ci_stale': False, 'ci_state': 'success', 'shipit': True, 'supershipit': False, 'is_new_directory': False, 'is_module': True, 'module_match': { 'namespace': 'foo', 'maintainers': ['ghuser1'], }, 'component_matches': [{ 'repo_filename': 'test/sanity/validate-modules/ignore.txt', 'support': 'core' }] } afacts = get_automerge_facts(iw, meta) self.assertFalse(afacts['automerge'])
def test_not_automerge_if_not_shipit(self): # if not shipit, automerge should be False IW = IssueWrapperMock('ansible', 'ansible', 1) IW._is_pullrequest = True IW.add_comment('jane', 'shipit') MI = ModuleIndexerMock([]) meta = { u'ci_stale': False, u'ci_state': u'success', u'has_shippable': True, u'has_travis': False, u'is_new_directory': False, u'is_module': True, u'is_module_util': False, u'is_new_module': False, u'is_needs_info': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'is_backport': False, u'mergeable': True, u'merge_commits': False, u'has_commit_mention': False, u'shipit': False, u'supershipit': False, u'component_matches': [{ u'repo_filename': u'foo', u'supershipit': [u'jane', u'doe'], u'support': u'community' }], u'component_support': [u'community'] } meta[u'module_match'] = meta[u'component_matches'][:] amfacts = get_automerge_facts(IW, meta) assert not amfacts[u'automerge'] assert u'automerge_status' in amfacts
def test_automerge_if_shipit(self): # if shipit and other tests pass, automerge should be True IW = IssueWrapperMock('ansible', 'ansible', 1) IW._is_pullrequest = True IW.add_comment('jane', 'shipit') meta = { 'ci_stale': False, 'ci_state': 'success', 'has_ci': True, 'is_new_directory': False, 'is_module': True, 'is_module_util': False, 'is_new_module': False, 'is_needs_info': False, 'is_needs_rebase': False, 'is_needs_revision': False, 'is_backport': False, 'mergeable': True, 'merge_commits': False, 'has_commit_mention': False, 'shipit': True, 'supershipit': True, 'component_matches': [{ 'repo_filename': 'foo', 'supershipit': ['jane', 'doe'], 'support': 'community' }], 'component_support': ['community'] } meta['module_match'] = meta['component_matches'][:] amfacts = get_automerge_facts(IW, meta) assert amfacts['automerge'] assert 'automerge_status' in amfacts
def test_not_automerge_if_not_shipit(self): # if not shipit, automerge should be False IW = IssueWrapperMock('ansible', 'ansible', 1) IW._is_pullrequest = True IW.add_comment('jane', 'shipit') MI = ModuleIndexerMock([]) meta = { u'ci_stale': False, u'ci_state': u'success', u'has_shippable': True, u'has_travis': False, u'is_new_directory': False, u'is_module': True, u'is_module_util': False, u'is_new_module': False, u'is_needs_info': False, u'is_needs_rebase': False, u'is_needs_revision': False, u'is_backport': False, u'mergeable': True, u'merge_commits': False, u'has_commit_mention': False, u'shipit': False, u'supershipit': False, u'component_matches': [ { u'repo_filename': u'foo', u'supershipit': [u'jane', u'doe'], } ], u'component_support': [u'community'] } meta[u'module_match'] = meta[u'component_matches'][:] amfacts = get_automerge_facts(IW, meta) assert not amfacts[u'automerge'] assert u'automerge_status' in amfacts