Coverage for af3c8538f1bfd42123ead28cc8adb101157cbaf1: 99%

Files Functions Classes

coverage.py v7.13.5, created at 2026-05-02 15:51 +0000

File function   statements missing excluded   coverage
backend / app / __init__.py (no function)   0 0 0   100%
backend / app / config.py get_settings   1 0 0   100%
backend / app / config.py (no function)   15 0 0   100%
backend / app / constants.py (no function)   1 0 0   100%
backend / app / dependencies / __init__.py (no function)   0 0 0   100%
backend / app / dependencies / auth.py verify_api_key   3 0 0   100%
backend / app / dependencies / auth.py (no function)   7 0 0   100%
backend / app / dependencies / aws_storage.py get_aws_storage   1 0 0   100%
backend / app / dependencies / aws_storage.py (no function)   4 0 0   100%
backend / app / dependencies / gh_client.py get_github_client   1 0 0   100%
backend / app / dependencies / gh_client.py (no function)   4 0 0   100%
backend / app / dependencies / redis_client.py get_redis_client   1 1 0   0%
backend / app / dependencies / redis_client.py (no function)   4 0 0   100%
backend / app / main.py lifespan   5 0 0   100%
backend / app / main.py (no function)   11 0 0   100%
backend / app / routers / __init__.py (no function)   0 0 0   100%
backend / app / routers / badge.py _badge_color   6 0 0   100%
backend / app / routers / badge.py _get_coverage   13 0 0   100%
backend / app / routers / badge.py redirect   4 0 0   100%
backend / app / routers / badge.py get_response   3 0 0   100%
backend / app / routers / badge.py badge   17 0 0   100%
backend / app / routers / badge.py (no function)   21 0 0   100%
backend / app / routers / coverage.py invalidate_cache   7 0 0   100%
backend / app / routers / coverage.py get_file   8 0 0   100%
backend / app / routers / coverage.py create_upload_session   2 0 0   100%
backend / app / routers / coverage.py (no function)   23 0 0   100%
backend / app / schemas.py (no function)   17 0 0   100%
backend / app / utils / __init__.py (no function)   0 0 0   100%
backend / app / utils / aws_storage.py AWSStorage.__init__   8 0 0   100%
backend / app / utils / aws_storage.py AWSStorage.__aenter__   5 0 0   100%
backend / app / utils / aws_storage.py AWSStorage.__aexit__   2 0 0   100%
backend / app / utils / aws_storage.py AWSStorage._generate_site_id   13 0 0   100%
backend / app / utils / aws_storage.py AWSStorage.create_upload_session   6 0 0   100%
backend / app / utils / aws_storage.py AWSStorage.get_file   9 0 1   100%
backend / app / utils / aws_storage.py (no function)   25 0 0   100%
backend / app / utils / github_client.py GithubClient.__init__   3 0 0   100%
backend / app / utils / github_client.py GithubClient.ensure_initialized   2 0 0   100%
backend / app / utils / github_client.py GithubClient._headers   1 0 0   100%
backend / app / utils / github_client.py GithubClient.__aenter__   5 0 0   100%
backend / app / utils / github_client.py GithubClient.__aexit__   2 0 0   100%
backend / app / utils / github_client.py GithubClient._get   9 0 0   100%
backend / app / utils / github_client.py GithubClient.get_latest_commits   4 0 0   100%
backend / app / utils / github_client.py GithubClient.get_commit_statuses   4 0 0   100%
backend / app / utils / github_client.py (no function)   17 0 0   100%
backend / tests / __init__.py (no function)   0 0 0   100%
backend / tests / conftest.py _use_test_settings   9 0 0   100%
backend / tests / conftest.py api_key   1 0 0   100%
backend / tests / conftest.py mock_s3_client   1 0 0   100%
backend / tests / conftest.py mock_sts_client   1 0 0   100%
backend / tests / conftest.py _patch_aiobotocore   7 0 0   100%
backend / tests / conftest.py _patch_aiobotocore._s3_ctx   1 0 0   100%
backend / tests / conftest.py _patch_aiobotocore._sts_ctx   1 0 0   100%
backend / tests / conftest.py _patch_aiobotocore.fake_create_client   4 0 1   100%
backend / tests / conftest.py _reset_aws_mocks   2 0 0   100%
backend / tests / conftest.py mock_redis   1 0 0   100%
backend / tests / conftest.py client   2 0 0   100%
backend / tests / conftest.py _override_redis   3 0 0   100%
backend / tests / conftest.py set_stamina_testing   1 0 0   100%
backend / tests / conftest.py (no function)   31 0 0   100%
backend / tests / test_badge.py get_commit   6 0 0   100%
backend / tests / test_badge.py TestBadge.test_returns_green_svg_for_successful_coverage   9 0 0   100%
backend / tests / test_badge.py TestBadge.test_returns_red_svg_for_failed_coverage   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_returns_gray_badge_when_no_coverage_status   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_returns_gray_badge_when_no_commits   4 0 0   100%
backend / tests / test_badge.py TestBadge.test_serves_cached_badge_from_redis   5 0 0   100%
backend / tests / test_badge.py TestBadge.test_caches_generated_badge_in_redis   11 0 0   100%
backend / tests / test_badge.py TestBadge.test_no_store_headers_for_github_camo   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_public_cache_headers_for_regular_clients   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_redis_read_error_falls_through_to_github   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_redis_write_error_still_returns_badge   8 0 0   100%
backend / tests / test_badge.py TestBadge.test_skips_skip_ci_commits   11 0 0   100%
backend / tests / test_badge.py TestBadge.test_check_up_to_5_commits   10 0 0   100%
backend / tests / test_badge.py TestBadge.test_commit_without_coverage_status   6 0 0   100%
backend / tests / test_badge.py TestBadge.test_stop_on_first_commit_without_skip_ci   9 0 0   100%
backend / tests / test_badge.py TestBadge.test_retry_on_github_api_failure   9 0 0   100%
backend / tests / test_badge.py TestBadge.test_server_error_on_github_api_commit_route_failure   5 0 0   100%
backend / tests / test_badge.py TestBadge.test_server_error_on_github_api_status_route_failure   7 0 0   100%
backend / tests / test_badge.py TestBadge.test_dont_write_cache_on_github_api_failure   7 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_redirects_to_target_url   6 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_redirects_for_failed_coverage   6 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_returns_404_when_no_coverage_status   5 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_returns_404_when_no_commits   3 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_returns_404_when_commit_has_only_non_coverage_status   5 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_skips_skip_ci_commits   11 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_check_up_to_5_commits   10 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_stop_on_first_commit_without_skip_ci   8 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_retry_on_github_api_failure   8 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_server_error_on_github_api_commit_route_failure   4 0 0   100%
backend / tests / test_badge.py TestBadgeRedirect.test_server_error_on_github_api_status_route_failure   6 0 0   100%
backend / tests / test_badge.py (no function)   51 0 0   100%
backend / tests / test_create_site.py TestCreateSiteAuth.test_missing_token_returns_401   2 0 0   100%
backend / tests / test_create_site.py TestCreateSiteAuth.test_invalid_token_returns_403   2 0 0   100%
backend / tests / test_create_site.py TestCreateSiteAuth.test_valid_token_returns_200   3 0 0   100%
backend / tests / test_create_site.py TestCreateSite.test_returns_session   15 0 0   100%
backend / tests / test_create_site.py TestCreateSite.test_retries_on_site_id_collision   6 0 0   100%
backend / tests / test_create_site.py TestCreateSite.test_fails_after_max_attempts_on_site_id_collision   6 0 0   100%
backend / tests / test_create_site.py TestCreateSite.test_s3_error_propagates   3 0 0   100%
backend / tests / test_create_site.py (no function)   15 0 0   100%
backend / tests / test_get_file.py _mock_s3_body   3 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_returns_html_content   6 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_returns_css_content_type   5 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_unknown_extension_returns_octet_stream   5 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_missing_file_returns_404   3 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_empty_path_serves_index_html   3 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_directory_path_serves_index_html   3 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_invalid_site_id_returns_422   5 0 0   100%
backend / tests / test_get_file.py TestGetFile.test_path_traversal_returns_422   7 0 0   100%
backend / tests / test_get_file.py (no function)   17 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCacheAuth.test_missing_token_returns_401   2 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCacheAuth.test_invalid_token_returns_403   2 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCacheAuth.test_valid_token_returns_200   2 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCache.test_deletes_badge_cache_key   4 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCache.test_returns_500_on_redis_error   3 0 0   100%
backend / tests / test_invalidate_cache.py TestInvalidateCache.test_invalidates_cache_key_per_repo   2 0 0   100%
backend / tests / test_invalidate_cache.py (no function)   11 0 0   100%
backend / tests / test_utils / test_aws_storage.py test_init   2 0 0   100%
backend / tests / test_utils / test_aws_storage.py test_double_init   3 0 1   100%
backend / tests / test_utils / test_aws_storage.py test_generate_site_id_not_initialized   3 0 0   100%
backend / tests / test_utils / test_aws_storage.py test_get_file_not_initialized   3 0 0   100%
backend / tests / test_utils / test_aws_storage.py (no function)   11 0 0   100%
backend / tests / test_utils / test_github_client.py test_init   2 0 0   100%
backend / tests / test_utils / test_github_client.py test_double_init   3 0 1   100%
backend / tests / test_utils / test_github_client.py test_get_latest_commits_not_initialized   3 0 0   100%
backend / tests / test_utils / test_github_client.py test_get_commit_statuses_not_initialized   3 0 0   100%
backend / tests / test_utils / test_github_client.py (no function)   11 0 0   100%
Total     803 1 4   99%

No items found using the specified filter.