Esempio n. 1
0
    def make_job(self, options=None):
        api, mocklab = self.api, self.mocklab

        project_id = mocklab.project_info['id']
        merge_request_iid = mocklab.merge_request_info['iid']

        project = marge.project.Project.fetch_by_id(project_id, api)
        merge_request = MergeRequest.fetch_by_iid(project_id,
                                                  merge_request_iid, api)

        repo = Mock(marge.git.Repo)
        options = options or marge.job.MergeJobOptions.default()
        user = marge.user.User.myself(self.api)
        bot = marge.bot.Bot(
            api=self.api,
            user=user,
            ssh_key_file='id_rsa',
            add_reviewers=options.add_reviewers,
            add_tested=options.add_tested,
            impersonate_approvers=options.reapprove,
        )
        return marge.job.MergeJob(bot=bot,
                                  project=project,
                                  merge_request=merge_request,
                                  repo=repo)
Esempio n. 2
0
    def test_fetch_by_iid(self):
        api = self.api
        api.call = Mock(return_value=INFO)

        merge_request = MergeRequest.fetch_by_iid(project_id=1234, merge_request_iid=54, api=api)

        api.call.assert_called_once_with(GET('/projects/1234/merge_requests/54'))
        assert merge_request.info == INFO
Esempio n. 3
0
        def make_mocks(initial_master_sha=None,
                       rewritten_sha=None,
                       extra_opts=None,
                       extra_mocklab_opts=None,
                       on_push=None):
            options = options_factory(**(extra_opts or {}))
            initial_master_sha = initial_master_sha or '505050505e'

            if not rewritten_sha:
                rewritten_sha = rewrite_sha(
                    update_sha(INITIAL_MR_SHA, initial_master_sha))

            mocklab = mocklab_factory(initial_master_sha=initial_master_sha,
                                      rewritten_sha=rewritten_sha,
                                      **(extra_mocklab_opts or {}))
            api = mocklab.api

            project_id = mocklab.project_info['id']
            merge_request_iid = mocklab.merge_request_info['iid']

            project = marge.project.Project.fetch_by_id(project_id, api)
            forked_project = None
            if mocklab.forked_project_info:
                forked_project_id = mocklab.forked_project_info['id']
                forked_project = marge.project.Project.fetch_by_id(
                    forked_project_id, api)

            merge_request = MergeRequest.fetch_by_iid(project_id,
                                                      merge_request_iid, api)

            def assert_can_push(*_args, **_kwargs):
                assert options.fusion is not Fusion.gitlab_rebase

            callback = on_push or mocklab.push_updated
            repo = RepoMock.init_for_merge_request(
                merge_request=merge_request,
                initial_target_sha=mocklab.initial_master_sha,
                project=project,
                forked_project=forked_project,
            )
            repo.mock_impl.on_push_callbacks.append(assert_can_push)
            repo.mock_impl.on_push_callbacks.append(callback)

            user = marge.user.User.myself(api)
            job = marge.single_merge_job.SingleMergeJob(
                api=api,
                user=user,
                project=project,
                merge_request=merge_request,
                repo=repo,
                options=options,
            )
            return self.Mocks(mocklab=mocklab, api=api, job=job)
Esempio n. 4
0
    def make_job(self, api, mocklab, options=None):
        project_id = mocklab.project_info['id']
        merge_request_iid = mocklab.merge_request_info['iid']

        project = marge.project.Project.fetch_by_id(project_id, api)
        merge_request = MergeRequest.fetch_by_iid(project_id, merge_request_iid, api)

        repo = create_autospec(marge.git.Repo, spec_set=True)
        options = options or marge.job.MergeJobOptions.default()
        user = marge.user.User.myself(api)
        return marge.single_merge_job.SingleMergeJob(
            api=api, user=user,
            project=project, merge_request=merge_request, repo=repo,
            options=options,
        )
Esempio n. 5
0
    def get_batch_merge_job(self, api, mocklab, **batch_merge_kwargs):
        project_id = mocklab.project_info['id']
        merge_request_iid = mocklab.merge_request_info['iid']

        merge_request = MergeRequest.fetch_by_iid(project_id, merge_request_iid, api)

        params = {
            'api': api,
            'user': marge.user.User.myself(api),
            'project': marge.project.Project.fetch_by_id(project_id, api),
            'repo': create_autospec(marge.git.Repo, spec_set=True),
            'options': MergeJobOptions.default(),
            'merge_requests': [merge_request]
        }
        params.update(batch_merge_kwargs)
        return BatchMergeJob(**params)
Esempio n. 6
0
    def make_job(self, options=None):
        api, mocklab = self.api, self.mocklab

        project_id = mocklab.project_info['id']
        merge_request_iid = mocklab.merge_request_info['iid']

        project = marge.project.Project.fetch_by_id(project_id, api)
        merge_request = MergeRequest.fetch_by_iid(project_id, merge_request_iid, api)

        repo = Mock(marge.git.Repo)
        options = options or marge.job.MergeJobOptions.default()
        user = marge.user.User.myself(self.api)
        return marge.job.MergeJob(
            api=api, user=user,
            project=project, merge_request=merge_request, repo=repo,
            options=options,
        )