示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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'])
示例#5
0
    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'])
示例#6
0
    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'])
示例#7
0
 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
示例#8
0
 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
示例#9
0
 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