Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 31 additions & 1 deletion apps/worker/tasks/tests/unit/test_upload_finisher_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@
from database.tests.factories.timeseries import DatasetFactory
from helpers.checkpoint_logger import _kwargs_key
from helpers.checkpoint_logger.flows import UploadFlow
from helpers.exceptions import RepositoryWithoutValidBotError
from helpers.exceptions import (
NoConfiguredAppsAvailable,
OwnerWithoutValidBotError,
RepositoryWithoutValidBotError,
)
from helpers.log_context import LogContext, set_log_context
from services.lock_manager import LockRetry
from services.processing.intermediate import intermediate_report_key
Expand Down Expand Up @@ -99,6 +103,32 @@ def test_load_commit_diff_no_bot(mocker, mock_configuration, dbsession):
assert diff is None


def test_load_commit_diff_no_configured_apps(mocker, mock_configuration, dbsession):
commit = CommitFactory.create()
dbsession.add(commit)
dbsession.flush()
mock_get_repo_service = mocker.patch(
"tasks.upload_finisher.get_repo_provider_service"
)
mock_get_repo_service.side_effect = NoConfiguredAppsAvailable(
apps_count=1, rate_limited_count=1, suspended_count=0
)
diff = load_commit_diff(commit)
assert diff is None


def test_load_commit_diff_owner_without_bot(mocker, mock_configuration, dbsession):
commit = CommitFactory.create()
dbsession.add(commit)
dbsession.flush()
mock_get_repo_service = mocker.patch(
"tasks.upload_finisher.get_repo_provider_service"
)
mock_get_repo_service.side_effect = OwnerWithoutValidBotError()
diff = load_commit_diff(commit)
assert diff is None


def test_mark_uploads_as_failed(dbsession):
commit = CommitFactory.create()
dbsession.add(commit)
Expand Down
16 changes: 15 additions & 1 deletion apps/worker/tasks/upload_finisher.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@
from database.models.core import GITHUB_APP_INSTALLATION_DEFAULT_NAME
from database.models.reports import Upload
from helpers.checkpoint_logger.flows import UploadFlow
from helpers.exceptions import RepositoryWithoutValidBotError
from helpers.exceptions import (
NoConfiguredAppsAvailable,
OwnerWithoutValidBotError,
RepositoryWithoutValidBotError,
)
from helpers.github_installation import get_installation_name_for_owner_for_task
from helpers.save_commit_error import save_commit_error
from services.comparison import get_or_create_comparison
Expand Down Expand Up @@ -931,5 +935,15 @@ def load_commit_diff(commit: Commit, task_name: str | None = None) -> dict | Non
"Could not apply diff to report because there is no valid bot found for that repo",
exc_info=True,
)
except (NoConfiguredAppsAvailable, OwnerWithoutValidBotError):
save_commit_error(
commit,
error_code=CommitErrorTypes.REPO_BOT_INVALID.value,
)

log.warning(
"Could not apply diff to report because no valid GitHub app is configured for that owner",
exc_info=True,
)

return None
Loading