def test_success_some_success_some_failed(self):
        request1 = MagicMock(spec=ProjectBuildRequest, run_successful=False)
        request2 = MagicMock(spec=ProjectBuildRequest, run_successful=True)
        requests = ProjectBuildRequests()
        requests.extend([request1, request2])

        assert requests.success is False
    def test_success_all_successful(self):
        request1 = MagicMock(spec=ProjectBuildRequest, run_successful=True)
        request2 = MagicMock(spec=ProjectBuildRequest, run_successful=True)
        requests = ProjectBuildRequests()
        requests.extend([request1, request2])

        assert requests.success is True
    def test_failed_builds(self):
        request1 = MagicMock(spec=ProjectBuildRequest, run_successful=False)
        request2 = MagicMock(spec=ProjectBuildRequest, run_successful=True)
        requests = ProjectBuildRequests()
        requests.extend([request1, request2])

        result = requests.failed

        assert len(result) == 1
        assert request1 in result
    def test_execute_builds(self, mocker):
        run_build_mock = mocker.patch.object(BuildExecutor, "run_build")
        copy_distributable_mock = mocker.patch.object(
            InstallerManager, "copy_installer_to_shared_folder")
        project_build_requests = ProjectBuildRequests()
        project_1 = MagicMock(spec=Project, project_type=ProjectType.Library)
        build_request_1 = MagicMock(spec=ProjectBuildRequest,
                                    project=project_1)
        project_2 = MagicMock(spec=Project, project_type=ProjectType.Standard)
        build_request_2 = MagicMock(spec=ProjectBuildRequest,
                                    project=project_2)
        project_build_requests.extend([build_request_1, build_request_2])

        result = BuildExecutor().execute_builds(project_build_requests)

        assert result is project_build_requests
        assert run_build_mock.call_args_list == [
            call(build_request_1),
            call(build_request_2),
        ]
        copy_distributable_mock.assert_called_once_with(build_request_1)
    def test_success_true_when_no_projects_run(self):
        requests = ProjectBuildRequests()

        assert requests.success is True