| src/fastapi_cloud_cli/__init__.py |
(no function) |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/__main__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/_app.py |
version_callback |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/_app.py |
cloud_main |
|
0 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/_app.py |
(no function) |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/__init__.py |
(no function) |
|
22 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
StreamLogError.__init__ |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
_handle_unauthorized |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
_get_response_error_message |
|
10 |
0 |
2 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
handle_http_error |
|
19 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
get_http_error_code |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
get_http_error_hint |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_errors.py |
(no function) |
|
15 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_models.py |
DeploymentStatus._missing_ |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_models.py |
DeploymentStatus.to_human_readable |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_models.py |
(no function) |
|
112 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
attempt |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
attempt._backoff |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
attempts |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
attempts.decorator |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
attempts.decorator.wrapper |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/_retry.py |
(no function) |
|
18 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
_get_user_agent |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.__init__ |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.handle_http_errors |
|
17 |
0 |
1 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.get_deployment |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.get_environment_variables |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.batch_environment_variables |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.get_custom_domains |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.create_custom_domain |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.remove_custom_domain |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.restart_custom_domain_setup |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.stream_build_logs |
|
28 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient._parse_log_line |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.stream_app_logs |
|
17 |
0 |
5 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
APIClient.poll_deployment_status |
|
17 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/api/client.py |
(no function) |
|
41 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/cli.py |
main |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/cli.py |
(no function) |
|
58 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_auth.py |
get_user_command_context |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_auth.py |
UserCommand.invoke |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_auth.py |
(no function) |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
render_login_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
device_authorization_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
start_device_authorization |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
fetch_access_token |
|
27 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
complete_device_login |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/_flow.py |
(no function) |
|
38 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/create.py |
_create_app |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/create.py |
_render_apps_create_output |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/create.py |
create_app |
|
28 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/create.py |
(no function) |
|
28 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/get.py |
_render_app_get_output |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/get.py |
get_app |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/get.py |
(no function) |
|
21 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
_render_link_output |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
_fail_not_logged_in_interactive |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
_fail_already_linked_interactive |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
_link_app_by_id |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
_link_app_interactively |
|
28 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
link_app |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/link.py |
(no function) |
|
30 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_get_app_dashboard_url |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_format_app_name |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_get_apps_list_table |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_get_team |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_get_app |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_get_apps |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
_render_apps_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
list_apps |
|
18 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/list.py |
(no function) |
|
43 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/unlink.py |
_render_unlink_output |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/unlink.py |
_fail_not_linked |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/unlink.py |
unlink_app |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/unlink.py |
(no function) |
|
22 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/update.py |
_update_app |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/update.py |
_render_apps_update_output |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/update.py |
update_app |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/apps/update.py |
(no function) |
|
24 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/auth/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/auth/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/auth/wait.py |
wait |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/auth/wait.py |
(no function) |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/ci/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/ci/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/ci/print_workflow.py |
_render_workflow_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/ci/print_workflow.py |
print_workflow |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/ci/print_workflow.py |
(no function) |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
validate_app_directory |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
_get_app_name |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
_should_exclude_entry |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
_rignore_walk |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
archive |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
_get_large_files |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/archive.py |
(no function) |
|
15 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_get_teams |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_update_app |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_create_app |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_create_deployment |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_get_app |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
_get_apps |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/cloud.py |
(no function) |
|
26 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_get_deploy_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_get_large_file_warnings |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_render_app_id_mismatch |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_render_app_not_found |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_render_linked_app_not_found |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_confirm_home_directory_deploy |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
_check_app_directory |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
deploy |
|
112 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/command.py |
(no function) |
|
37 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/configure.py |
_configure_app |
|
47 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/configure.py |
(no function) |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/upload.py |
_cancel_upload |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/upload.py |
_format_size |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/upload.py |
_upload_deployment |
|
24 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/upload.py |
_upload_deployment.progress_callback |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/upload.py |
(no function) |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/wait.py |
_verify_deployment |
|
22 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/wait.py |
_wait_for_deployment |
|
49 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deploy/wait.py |
(no function) |
|
18 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_get_deployments |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_render_deployments_list_output |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_render_deployment_get_output |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_print_deployment_failure |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_print_build_log_json |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_print_build_log_line |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_render_build_logs_output |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_stream_build_logs |
|
21 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_fetch_build_logs |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_handle_build_log_error |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
_render_build_log_error |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
get_deployment |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
build_logs |
|
22 |
0 |
3 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
list_deployments |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/deployments.py |
(no function) |
|
57 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
_phase_from_status |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
_record_group |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
_step_status |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
_describe_step |
|
35 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
get_setup_steps |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
get_setup_steps.records_for |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
get_setup_steps.build_step |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_setup.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_shared.py |
_normalize_domain_name |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_shared.py |
_find_custom_domain |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_shared.py |
_select_custom_domain |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/_shared.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/add.py |
_resolve_domain_name |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/add.py |
_resolve_pre_validation |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/add.py |
_render_custom_domain_add_output |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/add.py |
add_domain |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/add.py |
(no function) |
|
22 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/get.py |
_render_custom_domain_get_output |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/get.py |
get_domain |
|
20 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/get.py |
(no function) |
|
18 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/list.py |
_render_custom_domains_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/list.py |
list_domains |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/list.py |
(no function) |
|
17 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/remove.py |
_render_custom_domain_remove_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/remove.py |
_print_removal_warning |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/remove.py |
remove_domain |
|
34 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/remove.py |
(no function) |
|
19 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
get_setup_mode_label |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
get_custom_domains_table |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
_get_dns_records_table |
|
19 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
_get_concise_step_description |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
_render_setup_step |
|
23 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
render_custom_domain_setup |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
_get_next_action |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
render_custom_domain_details |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/rendering.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/restart.py |
_render_custom_domain_restart_output |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/restart.py |
restart_domain |
|
24 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/domains/restart.py |
(no function) |
|
18 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/_shared.py |
_find_environment_variable |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/_shared.py |
_format_env_var_value |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/_shared.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/delete.py |
_render_environment_variable_delete_output |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/delete.py |
delete |
|
34 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/delete.py |
(no function) |
|
20 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/get.py |
_render_environment_variable_get_output |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/get.py |
get_variable |
|
21 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/get.py |
(no function) |
|
20 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/list.py |
_get_environment_variables_table |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/list.py |
_render_environment_variables_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/list.py |
list_variables |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/list.py |
(no function) |
|
21 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
_render_environment_variable_set_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
_input |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
_resolve_environment_variable_name |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
_resolve_environment_variable_value |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
set |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/env/set.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/__init__.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/list.py |
_get_providers |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/list.py |
_get_providers_table |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/list.py |
_render_providers_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/list.py |
list_providers |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/providers/list.py |
(no function) |
|
30 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/connect.py |
_get_resource_connect_url |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/connect.py |
_render_resource_connect_output |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/connect.py |
connect_resource |
|
15 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/connect.py |
(no function) |
|
24 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/disconnect.py |
_disconnect_resource |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/disconnect.py |
_print_disconnect_warning |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/disconnect.py |
_render_resource_disconnect_output |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/disconnect.py |
disconnect_resource |
|
36 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/disconnect.py |
(no function) |
|
24 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/get.py |
_to_connected_resource |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/get.py |
_get_resource |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/get.py |
_render_resource_get_output |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/get.py |
get_resource |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/get.py |
(no function) |
|
56 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/list.py |
_get_resources |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/list.py |
_get_resources_table |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/list.py |
_render_resources_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/list.py |
list_resources |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/list.py |
(no function) |
|
26 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/integrations/resources/providers.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/login.py |
_interactive_login |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/login.py |
login |
|
21 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/login.py |
(no function) |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logout.py |
_render_logout_output |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logout.py |
logout |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logout.py |
(no function) |
|
12 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_validate_since |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_validate_tail |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_get_log_bullet |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_format_log_line |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_print_log_line |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_render_app_logs_output |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_print_app_log_json |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_render_plain_error |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_handle_stream_log_error |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
_process_log_stream |
|
18 |
0 |
3 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
logs |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/logs.py |
(no function) |
|
40 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_render_ci_setup_output |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_get_github_host |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_repo_slug_from_origin |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_check_git_installed |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_check_gh_cli_installed |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_get_remote_origin |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_set_github_secret |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_create_token |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_get_default_branch |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_get_workflow_content |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_write_workflow_file |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_get_workflow_path |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_format_workflow_path |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
_resolve_existing_workflow_path |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
setup_ci |
|
97 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/setup_ci.py |
(no function) |
|
47 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/get.py |
_get_team_dashboard_url |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/get.py |
_get_team |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/get.py |
_render_team_get_output |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/get.py |
get_team |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/get.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/list.py |
_get_teams |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/list.py |
_render_teams_list_output |
|
14 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/list.py |
list_teams |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/teams/list.py |
(no function) |
|
28 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/__init__.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/_app.py |
(no function) |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
_resolve_token_name |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
_resolve_output_file |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
_create_deploy_token |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
_write_token_value |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
_render_deploy_token_create_output |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
create_token |
|
15 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/create.py |
(no function) |
|
33 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/delete.py |
_delete_deploy_token |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/delete.py |
_render_deploy_token_delete_output |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/delete.py |
delete_token |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/delete.py |
(no function) |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/list.py |
_get_deploy_tokens |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/list.py |
_get_deploy_tokens_table |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/list.py |
_render_deploy_tokens_list_output |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/list.py |
list_tokens |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/tokens/list.py |
(no function) |
|
26 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/whoami.py |
_render_whoami_output |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/whoami.py |
whoami |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/commands/whoami.py |
(no function) |
|
16 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/config.py |
Settings.from_user_settings |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/config.py |
Settings.get |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/config.py |
(no function) |
|
12 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/logging.py |
setup_logging |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/logging.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/apps.py |
get_app_config |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/apps.py |
resolve_app_id |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/apps.py |
resolve_app_id_or_fail |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/apps.py |
write_app_config |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/apps.py |
(no function) |
|
13 |
0 |
2 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
write_auth_config |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
delete_auth_config |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
read_auth_config |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
_get_auth_token |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
_is_jwt_expired |
|
22 |
0 |
3 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.__init__ |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.user_token |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.deploy_token |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.is_user_token_expired |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.is_logged_in |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
Identity.has_deploy_token |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/auth.py |
(no function) |
|
27 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/build_logs.py |
print_build_error |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/build_logs.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
ErrorRenderer.__call__ |
|
0 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
_title_sweep_frames |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
_strip_rich_markup |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
IndentedBlock.__init__ |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
IndentedBlock.__rich_console__ |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle.render_element |
|
19 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle.title_padding |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle._render_title |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle._animate_title_sweep |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle._get_progress_status_emoji |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle._render_with_emoji_bullet |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle._get_bullet_prefix |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIStyle.get_cursor_offset_for_element |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.__init__ |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.__exit__ |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit._get_version_check |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit._print_update_message |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.print_error |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.print_hint |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.success |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
FastAPIRichToolkit.fail |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
get_details_table |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
get_rich_toolkit |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/cli.py |
(no function) |
|
62 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/config.py |
get_config_folder |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/config.py |
get_auth_path |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/config.py |
get_cli_config_path |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/config.py |
get_version_check_cache_path |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/config.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/dates.py |
format_last_updated |
|
26 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/dates.py |
_format_time_ago |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/dates.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/env.py |
validate_environment_variable_name |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/env.py |
(no function) |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/errors.py |
ErrorToolkit.fail |
|
0 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/errors.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/execution.py |
is_ci_enabled |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/execution.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/progress_file.py |
ProgressFile.__init__ |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/progress_file.py |
ProgressFile.read |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/progress_file.py |
ProgressFile.__getattr__ |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/progress_file.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/sentry.py |
init_sentry |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/sentry.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/teams.py |
get_teams |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/teams.py |
select_team |
|
6 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/teams.py |
resolve_team_id |
|
9 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/teams.py |
(no function) |
|
13 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
_parse_simple_release_version |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
is_newer_version |
|
5 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
read_cached_latest_version |
|
11 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
write_latest_version_cache |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
fetch_latest_version |
|
10 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
check_for_update |
|
8 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
get_upgrade_command |
|
4 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
format_update_message |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
BackgroundVersionCheck.__init__ |
|
3 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
BackgroundVersionCheck.start |
|
1 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
BackgroundVersionCheck._run |
|
2 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
BackgroundVersionCheck.get_update_message |
|
7 |
0 |
0 |
|
100% |
| src/fastapi_cloud_cli/utils/version_check.py |
(no function) |
|
46 |
0 |
0 |
|
100% |
| tests/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| tests/conftest.py |
unset_env_vars |
|
4 |
0 |
0 |
|
100% |
| tests/conftest.py |
isolated_config_path |
|
3 |
0 |
0 |
|
100% |
| tests/conftest.py |
temp_auth_config |
|
1 |
0 |
0 |
|
100% |
| tests/conftest.py |
reset_syspath |
|
4 |
0 |
0 |
|
100% |
| tests/conftest.py |
setup_terminal |
|
3 |
0 |
0 |
|
100% |
| tests/conftest.py |
settings |
|
1 |
0 |
0 |
|
100% |
| tests/conftest.py |
respx_mock |
|
2 |
0 |
0 |
|
100% |
| tests/conftest.py |
logged_in_cli |
|
3 |
0 |
0 |
|
100% |
| tests/conftest.py |
logged_out_cli |
|
2 |
0 |
0 |
|
100% |
| tests/conftest.py |
configured_app |
|
6 |
0 |
0 |
|
100% |
| tests/conftest.py |
(no function) |
|
36 |
0 |
0 |
|
100% |
| tests/domains/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
custom_domain |
|
1 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_commands_require_user_session |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_requires_app_context |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_uses_linked_app_and_renders_rows |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_returns_json |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_renders_empty_state |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_surfaces_app_not_found_as_json |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domain_status_metadata_is_exhaustive |
|
1 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_renders_restart_action_when_setup_failed |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_renders_correction_action_when_dns_is_invalid |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_omits_next_action_while_setup_is_in_progress |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_json_requires_domain |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_resolves_normalized_hostname_or_id_as_json |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_prompts_with_selector_and_renders_details |
|
6 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_reports_not_found |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_selector_handles_empty_collection |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_gates_zero_downtime_records_by_phase |
|
10 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_get_shows_url_and_no_action_when_live |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_json_requires_domain |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_json_requires_setup_mode |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_rejects_both_setup_modes |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_surfaces_backend_hostname_validation |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_posts_setup_mode_and_returns_json |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_with_arguments_renders_result |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_standard_wizard |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_zero_downtime_wizard_hides_traffic_records |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_surfaces_duplicate_as_invalid_input |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_add_surfaces_entitlement_limit |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_json_requires_domain |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_json_requires_confirmation |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_resolves_name_and_returns_json |
|
6 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_warns_and_confirms |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_can_select_domain |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_can_be_cancelled |
|
6 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_reports_not_found_before_delete |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_remove_selector_handles_empty_collection |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_json_requires_domain |
|
3 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_returns_reset_domain_as_json |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_with_argument_renders_result |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_selector_only_shows_failed_domains |
|
9 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_selector_handles_no_failed_domains |
|
5 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_reports_not_found |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_restart_surfaces_backend_rejection_for_live_domain |
|
7 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
test_domains_list_surfaces_network_errors |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_cli.py |
(no function) |
|
102 |
0 |
0 |
|
100% |
| tests/domains/test_setup.py |
_custom_domain |
|
1 |
0 |
0 |
|
100% |
| tests/domains/test_setup.py |
test_pre_validation_setup_steps_follow_domain_phase |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_setup.py |
test_standard_setup_step_reflects_domain_state |
|
4 |
0 |
0 |
|
100% |
| tests/domains/test_setup.py |
(no function) |
|
13 |
0 |
0 |
|
100% |
| tests/integrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| tests/integrations/providers/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_as_json_with_explicit_team_overriding_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_uses_linked_app_team |
|
6 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_json_requires_team_without_linked_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_prompts_for_team_and_renders_statuses |
|
8 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_returns_missing_input_when_no_teams_exist |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_in_human_output_empty |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
test_lists_providers_json_returns_not_found_for_unknown_team |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/providers/test_list.py |
(no function) |
|
34 |
0 |
0 |
|
100% |
| tests/integrations/resources/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
_app |
|
1 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
_team |
|
1 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
_mock_app_and_team |
|
2 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_json_returns_url_without_opening_browser |
|
8 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_opens_browser_for_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_no_open_prints_url_without_opening_browser |
|
6 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_json_requires_app_without_linked_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
test_connect_resource_json_returns_not_found_for_unknown_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_connect.py |
(no function) |
|
31 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
_resource_summary |
|
1 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
_resource_detail |
|
1 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_json_requires_resource_id |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_json_requires_confirmation |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_as_json_with_explicit_app_overriding_linked_app |
|
8 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_allows_interactive_selection |
|
8 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_prompts_for_confirmation_when_id_is_provided |
|
6 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_can_be_cancelled |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_selector_handles_empty_list |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
test_disconnect_resource_json_returns_not_found |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_disconnect.py |
(no function) |
|
34 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
_database_resource |
|
3 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
_logfire_resource |
|
3 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_resource_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_database_resource_as_json_with_explicit_app_overriding_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_logfire_resource_as_json_using_linked_app |
|
6 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_resource_json_requires_app_without_linked_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_database_resource_in_human_output |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_logfire_resource_in_human_output_without_environment_variables |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
test_gets_resource_json_returns_not_found |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_get.py |
(no function) |
|
39 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
_resource |
|
1 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_as_json_with_explicit_app_overriding_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_uses_linked_app |
|
6 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_json_requires_app_without_linked_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_in_human_output |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_in_human_output_empty |
|
4 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
test_lists_resources_json_returns_not_found_for_unknown_app |
|
5 |
0 |
0 |
|
100% |
| tests/integrations/resources/test_list.py |
(no function) |
|
29 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
client |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
deployment_id |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_api_client_reports_high_confidence_agent |
|
4 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_api_client_omits_unattributed_agent |
|
2 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
logs_route |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_successful |
|
8 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_get_http_error_code_returns_network_error |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_get_http_error_hint_for_invalid_deploy_token |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_failed |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_stop_after_terminal_state |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_internal_messages_are_skipped |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_malformed_json_is_skipped |
|
6 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_unknown_log_type_is_skipped |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_network_error_retry |
|
6 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_server_error_retry |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_client_error_raises_immediately |
|
3 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_max_retries_exceeded |
|
4 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_empty_lines_are_skipped |
|
6 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_continue_after_timeout |
|
12 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_no_follow_stops_after_timeout |
|
3 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_connection_closed_without_complete_failed_or_timeout |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_retry_timeout |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_stream_build_logs_retry_timeout.responses |
|
2 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
poll_route |
|
1 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_poll_deployment_status_recovers_from_transient_errors |
|
7 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_poll_deployment_status_recovers_from_transient_errors.handler |
|
4 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_poll_deployment_status_keeps_polling_on_unknown_status |
|
5 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_poll_deployment_status_raises_after_max_consecutive_errors |
|
3 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_poll_deployment_status_timeout |
|
2 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
test_get_deployment_with_persisted_failure |
|
3 |
0 |
0 |
|
100% |
| tests/test_api_client.py |
(no function) |
|
44 |
0 |
0 |
|
100% |
| tests/test_archive.py |
src_path |
|
3 |
0 |
0 |
|
100% |
| tests/test_archive.py |
dst_path |
|
3 |
0 |
0 |
|
100% |
| tests/test_archive.py |
tar_path |
|
1 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_creates_tar_file |
|
6 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_excludes_venv_and_similar_folders |
|
17 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_preserves_relative_paths |
|
7 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_respects_fastapicloudignore |
|
10 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_respects_fastapicloudignore_unignore |
|
12 |
0 |
0 |
|
100% |
| tests/test_archive.py |
test_archive_includes_hidden_files_but_excludes_env |
|
9 |
0 |
0 |
|
100% |
| tests/test_archive.py |
(no function) |
|
16 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_valid_token |
|
3 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_expired_token |
|
3 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_no_exp_claim |
|
2 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_malformed_token |
|
1 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_invalid_base64 |
|
2 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_with_invalid_json |
|
5 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_edge_case_exact_expiration |
|
3 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_jwt_expired_edge_case_one_second_before |
|
3 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_user_token_expired_with_no_token |
|
2 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_logged_in_with_no_token |
|
2 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_logged_in_with_valid_token |
|
4 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_logged_in_with_expired_token |
|
4 |
0 |
0 |
|
100% |
| tests/test_auth.py |
test_is_logged_in_with_malformed_token |
|
2 |
0 |
0 |
|
100% |
| tests/test_auth.py |
(no function) |
|
20 |
0 |
0 |
|
100% |
| tests/test_cli.py |
_get_command_name |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
_iter_cli_commands |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli.py |
_has_json_output_option |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
render_plain |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
style_with_recording_console |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_shows_help |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_shows_help_without_args |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_script |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_version |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_cli_commands_include_json_output_option |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_uses_header_style |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_title_sweep_frames_keep_constant_chip_width |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_strip_rich_markup_preserves_empty_hint |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_indented_block_hangs_prefix_and_preserves_final_blank_line |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_returns_parent_rendered_children_without_extra_indent |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_uses_child_metadata_from_container |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_renders_title_chip_and_tagged_title |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_skips_title_animation_for_non_terminal_console |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_animates_title_sweep_in_terminal |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_renders_progress_and_bullet_prefixes |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_progress_status_emoji_states |
|
15 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_bullets_can_be_written_to_encoded_streams |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_bullet_fallback_preserves_supported_text_and_layout |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_error_bullet_fallback_keeps_error_style |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_fastapi_style_gets_cursor_offset_with_and_without_bullet_column |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_delegates_human_output_renderer |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_delegates_human_output_renderer.record_output |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_delegates_human_output_renderer.render_output |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_get_details_table_renders_label_value_rows |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_prints_json_envelope |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_prints_json_envelope.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_omits_empty_json_envelope_fields |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_omits_empty_json_envelope_fields.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_includes_non_empty_warnings |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_includes_non_empty_warnings.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_success_uses_strict_json_output |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_json_mode_suppresses_update_message |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_json_mode_suppresses_update_message.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_prints_json_error_and_exits |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_prints_json_error_and_exits.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_uses_error_emoji |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_uses_error_emoji.record_print |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_uses_custom_human_output_renderer_and_exits |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_uses_custom_human_output_renderer_and_exits.render_output |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_toolkit_fail_uses_custom_human_output_renderer_and_exits.command |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli.py |
test_embedded_fastapi_cli_prints_forced_update_message |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli.py |
(no function) |
|
74 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_as_json_without_link_by_default |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_and_links_to_path_when_link_is_explicit |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_prompts_for_team_when_team_id_is_missing |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_prompts_for_name_and_links_by_default |
|
16 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_json_requires_team_id_and_name |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_json_rejects_path_without_link |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_creates_app_json_rejects_invalid_directory |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_updates_app_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_updates_app_directory_as_json |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_updates_linked_app_directory_in_human_output |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_updates_app_json_returns_missing_required_input_without_update_flags |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_updates_app_json_rejects_invalid_directory |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_links_existing_app_to_path_as_json |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_links_existing_app_returns_already_linked_without_force |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_links_existing_app_replaces_config_with_force |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_as_json_with_team_and_pagination_params |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_json_returns_missing_required_input_without_team_id |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_human_returns_not_logged_in_when_logged_out |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_prompts_for_team_when_team_id_is_missing |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_returns_missing_required_input_when_no_teams |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_as_json |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_in_human_output |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_json_returns_not_found_for_unknown_app |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_as_json_uses_linked_app_when_id_omitted |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_gets_app_json_returns_missing_required_input_without_app_id |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_get_app_dashboard_url_uses_settings_team_and_app_slugs |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_in_human_output |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_in_human_output_empty |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
test_lists_apps_human_returns_not_logged_in_when_logged_out |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_apps.py |
(no function) |
|
65 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
_mock_token_api |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_print_workflow_uses_default_branch |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_print_workflow_uses_branch_option |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_print_workflow_json_outputs_envelope |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_ci_setup_json_outputs_envelope |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_ci_setup_json_returns_dependency_missing_when_gh_is_missing |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_ci_setup_workflow_only_skips_token_and_secret_creation |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_ci_setup_json_existing_workflow_fails_without_prompt |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
test_ci_setup_json_existing_workflow_fails_before_side_effects |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_ci.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
app_source |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_get_random_team |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_get_random_app |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_get_random_deployment |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_starts_login_when_not_logged_in |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_cancels_deploy_when_user_declines_login |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_login_prompt_when_token_is_expired |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_fails_with_clear_error_when_running_on_ci_without_token |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_uses_configured_app_and_skips_waiting_by_default |
|
17 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_returns_not_logged_in_without_prompt |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_includes_large_file_warnings |
|
17 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_error_when_trying_to_get_teams |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_handles_invalid_auth |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_teams |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_filter_teams |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_asks_for_app_name_after_team |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_filter_apps |
|
15 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_creates_app_on_backend |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_api_message_when_create_app_is_forbidden |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_creates_app_with_directory |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_validation_error_for_invalid_directory |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_cancels_deployment_when_user_selects_no |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_uses_existing_app |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_uses_existing_app_with_directory |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_uses_existing_app_and_changes_directory |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_updates_app_directory_via_api_when_changed |
|
22 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_does_not_update_app_directory_when_unchanged |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_exits_successfully_when_deployment_is_done |
|
17 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_exits_successfully_when_deployment_is_done_when_app_is_configured |
|
20 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_exits_with_error_when_deployment_fails_to_build |
|
21 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_error_when_deployment_build_fails |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_error_when_app_does_not_exist |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_deploy_without_waiting |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_can_skip_waiting |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_creates_config_folder_and_creates_git_ignore |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_does_not_duplicate_entry_in_git_ignore |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_no_apps_found_message_when_team_has_no_apps |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_error_message_on_build_exception |
|
18 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_shows_error_message_on_build_log_http_error |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_short_wait_messages |
|
22 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_short_wait_messages.build_logs_handler |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_long_wait_messages |
|
22 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_long_wait_messages.build_logs_handler |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_calls_upload_cancelled_when_user_interrupts |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_cancel_upload_swallows_exceptions |
|
15 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_mock_deploy_until_upload |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_mock_deploy_until_deployment_creation |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_shows_error_when_creation_rejects_archive_size |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_shows_error_when_creation_rejects_archive_size |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_shows_error_when_upload_fails |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_successfully_with_token |
|
21 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_token_fails |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_upload_deployment_progress |
|
24 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_app_id_arg |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_app_id_from_env_var |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_app_id_matching_local_config |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_app_id_mismatch_fails |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_with_app_id_mismatch_returns_invalid_input |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_app_id_arg_app_not_found |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_json_with_app_id_arg_app_not_found |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_setup_deployment_mocks |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_verification_failure_after_build_complete |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_polling_with_intermediate_states |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_polling_with_intermediate_states.poll_handler |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_polling_timeout_shows_dashboard_link |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_verifying_skipped_treated_as_success |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_ctrl_c_during_verification_shows_cancelled |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_ctrl_c_during_build_streaming_shows_cancelled |
|
16 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_create_file |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_large_file_threshold_warning |
|
16 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_large_file_threshold_only_top_three_files_with_more_indicator |
|
20 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_large_file_threshold_does_not_warn_when_no_large_files |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_large_file_threshold_custom_threshold |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_large_file_threshold_custom_threshold_envvar |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_invalid_large_file_threshold |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_shows_backend_build_failure_diagnostic |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_diagnosed_build_failure_replaces_log_panel |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_diagnosed_build_failure_replaces_log_panel.wait_for_build |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
_mock_configured_app |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_fails_when_app_directory_is_missing |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_points_linked_apps_to_the_repository_root |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_with_force_skips_the_app_directory_check |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_fails_when_there_is_nothing_to_upload |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_on_ci_without_app_id_fails_instead_of_prompting |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_on_ci_refuses_the_home_directory |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_asks_before_deploying_the_home_directory |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_deploy_continues_when_home_directory_is_confirmed |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
test_degraded_deployment_fails_verification |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_deploy.py |
(no function) |
|
188 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
build_logs_deployment |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_as_json_with_app_id_and_pagination_params |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_as_json_uses_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_human_output_shows_id_status_and_created |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_in_human_output_empty |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_lists_deployments_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_deployment_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_deployment_as_json_with_app_id |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_deployment_as_json_uses_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_deployment_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_deployment_in_human_output |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_build_logs_no_follow_as_json |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_failed_build_logs_no_follow_as_json_exits_nonzero |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_build_logs_no_follow_in_human_output |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_build_logs_no_follow_in_human_output_empty |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_failed_build_logs_no_follow_in_human_output_exits_nonzero |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streams_build_logs_in_human_output |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streams_failed_build_logs_in_human_output_exits_nonzero |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streams_build_logs_as_json_ndjson |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streaming_build_logs_handles_keyboard_interrupt |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_not_found_stream_error |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_http_stream_error_with_hint |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_http_stream_error_with_hint.raise_stream_error |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_generic_stream_error |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_connection_loss |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streams_failed_build_logs_as_json_ndjson_exits_nonzero |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_shows_build_failure_diagnostic_in_human_output |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_build_failure_diagnostic_without_logs_or_hint |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_streams_build_failure_diagnostic_as_json |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_gets_build_failure_diagnostic_as_json |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_generic_build_failure_without_logs |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_shows_persisted_failure_after_logs_expire |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_does_not_report_readiness_failure_as_build_failure |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_get_deployment_includes_persisted_failure_in_json |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_get_deployment_shows_persisted_failure |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
test_build_logs_handles_deployment_lookup_error |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_deployments.py |
(no function) |
|
86 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_json_requires_app_id |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_direct_as_json |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_direct_in_human_output |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_direct_with_app_id_option_as_json |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_link_returns_invalid_input_when_app_id_is_ambiguous |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_a_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_a_message_if_already_linked |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_a_message_if_no_teams |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_a_message_if_no_apps |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_links_successfully |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_error_on_teams_api_failure |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_shows_error_on_apps_api_failure |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_app_menu_is_ordered_by_slug |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_team_menu_is_ordered_by_name |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
test_links_with_multiple_teams_and_apps |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_link.py |
(no function) |
|
39 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_shows_a_message_if_something_is_wrong |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_full_login |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_cloud_auth_login_alias_uses_interactive_login |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_cloud_login_json_returns_authorization_data |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_top_level_login_json_returns_authorization_data |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_start_is_not_supported |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_login_as_json_returns_authorization_data |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_as_json_writes_auth_config |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_shows_login_title |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_full_login_with_no_open_shows_manual_authorization_details |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_json_timeout_returns_error_envelope |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_json_cancel_returns_error_envelope |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_login_shows_authorization_declined |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_shows_authorization_declined |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_auth_wait_json_authorization_declined_returns_error_envelope |
|
14 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_fetch_access_token_uses_default_timeout |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_full_login_with_deploy_token_set |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_fetch_access_token_success_immediately |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_fetch_access_token_authorization_pending_then_success |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_fetch_access_token_handles_unknown_oauth_error |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_fetch_access_token_handles_500_error |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
test_notify_already_logged_in_user |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_login.py |
(no function) |
|
59 |
0 |
0 |
|
100% |
| tests/test_cli_logout.py |
test_logout_with_existing_auth_file |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_logout.py |
test_logout_with_no_auth_file |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_logout.py |
test_logout_json_with_existing_auth_file |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_logout.py |
test_logout_json_with_no_auth_file |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_logout.py |
(no function) |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
_mock_token_api |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_login_message_when_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_message_if_app_not_configured |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_error_when_secrets_only_and_workflow_only_conflict |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_error_when_git_not_installed |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_exits_with_error_when_no_remote_origin |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_error_when_origin_is_not_github |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_detects_github_origin_and_completes_successfully |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_app_id_option_works_without_linked_directory |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_detects_non_main_default_branch |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_default_branch_falls_back_to_main |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_default_branch_returns_branch_name |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_check_git_installed_returns_true |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_check_git_installed_returns_false_when_missing |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_check_gh_cli_installed_returns_true |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_check_gh_cli_installed_returns_false_when_missing |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_format_workflow_path_uses_forward_slashes |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_existing_workflow_prompt_uses_forward_slashes |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_existing_workflow_prompt_uses_forward_slashes.confirm |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_remote_origin_returns_url |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_remote_origin_falls_back_to_git_when_gh_fails |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_set_github_secret_calls_gh_cli |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_set_github_secret_raises_custom_exception_on_command_error |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_set_github_secret_raises_custom_exception_when_gh_not_found |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_dry_run_shows_planned_steps |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_dry_run_secrets_only_skips_workflow |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_secrets_only_skips_workflow_file |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_branch_flag_overrides_detected_branch |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_creates_token_sets_secrets_and_writes_workflow |
|
19 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_declining_token_creation_skips_token_and_secret_setup |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_declining_token_creation_for_secrets_only_finishes_without_setup |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_declining_github_secret_setup_keeps_created_token |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_manual_instructions_when_gh_not_installed |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_handles_gh_command_errors_gracefully |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_file_flag_uses_custom_filename |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_overwrites_existing_workflow_when_confirmed |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_skips_writing_workflow_when_declined |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_renames_workflow_when_declined_and_new_name_given |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_github_host_extracts_from_ssh_url |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_github_host_extracts_from_https_url |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_github_host_extracts_from_enterprise_ssh_url |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_get_github_host_extracts_from_enterprise_https_url |
|
2 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
test_shows_enterprise_manual_secrets_url_when_gh_not_installed |
|
9 |
0 |
0 |
|
100% |
| tests/test_cli_setup_ci.py |
(no function) |
|
72 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_as_json_with_pagination_params |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_human_shows_api_error |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_in_human_output |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_in_human_output_empty |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_lists_teams_human_returns_not_logged_in_when_logged_out |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_gets_team_human_returns_not_logged_in_when_logged_out |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_gets_team_as_json |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_gets_team_in_human_output |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_gets_team_json_returns_not_found_for_unknown_team |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
test_gets_team_json_returns_permission_denied |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_teams.py |
(no function) |
|
27 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_creates_token_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_deletes_token_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_deletes_token_as_json_with_app_id |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_deletes_token_as_json_uses_linked_app |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_deletes_token_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_delete_token_json_returns_not_found_when_token_is_missing |
|
7 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_delete_token_human_output |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_creates_token_json_returns_missing_required_input_without_name |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_creates_token_json_returns_missing_required_input_without_output_file |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_create_token_requires_output_file_before_prompting_for_name |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_creates_token_as_json_with_app_id_and_writes_value_to_file |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_creates_token_uses_linked_app_and_custom_expiration |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_create_token_prompts_for_name_under_deploy_tokens_heading |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_create_token_separates_prompt_from_http_error |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_create_token_human_output_does_not_print_token_value |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_create_token_json_maps_duplicate_name_to_invalid_input |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_json_returns_not_logged_in_when_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_as_json_with_app_id_without_secret_values |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_as_json_uses_linked_app |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_in_human_output_empty |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
test_lists_tokens_human_output_without_secret_values |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_tokens.py |
(no function) |
|
47 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_apps_unlink_removes_cloud_json_and_preserves_fastapicloud_dir |
|
16 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_unlink_compatibility_shortcut_removes_cloud_json |
|
12 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_apps_unlink_as_json |
|
10 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_unlink_compatibility_shortcut_as_json |
|
13 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_apps_unlink_json_returns_not_linked_when_config_is_missing |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
test_unlink_when_no_configuration_exists |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_unlink.py |
(no function) |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_shows_a_message_if_something_is_wrong |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_shows_a_message_when_token_is_invalid |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_shows_a_message_when_user_has_no_permissions |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_shows_email |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_uses_toolkit_output_renderer_for_logged_in_user |
|
11 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_uses_toolkit_output_renderer_for_logged_in_user.record_output |
|
1 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_when_json_env_is_enabled |
|
6 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_json_option_is_not_enabled_before_command |
|
3 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_when_json_option_is_enabled_after_command |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_error_when_json_env_is_enabled_and_logged_out |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_error_when_token_is_invalid |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_error_when_user_has_no_permissions |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_error_when_request_has_generic_api_error |
|
8 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_json_error_when_request_times_out |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_handles_read_timeout |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_not_logged_in |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_prints_not_logged_in_with_deploy_token |
|
4 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
test_shows_logged_in_and_has_deploy_token |
|
5 |
0 |
0 |
|
100% |
| tests/test_cli_whoami.py |
(no function) |
|
42 |
0 |
0 |
|
100% |
| tests/test_config.py |
test_loads_default_values_when_file_does_not_exist |
|
4 |
0 |
0 |
|
100% |
| tests/test_config.py |
test_loads_settings_even_when_file_is_broken |
|
6 |
0 |
0 |
|
100% |
| tests/test_config.py |
test_loads_partial_settings |
|
6 |
0 |
0 |
|
100% |
| tests/test_config.py |
test_get_config_folder_reads_env_override |
|
2 |
0 |
0 |
|
100% |
| tests/test_config.py |
test_get_config_folder_defaults_to_app_dir |
|
2 |
0 |
0 |
|
100% |
| tests/test_config.py |
(no function) |
|
10 |
0 |
0 |
|
100% |
| tests/test_dates.py |
test_format_last_updated_formats_relative_time |
|
1 |
0 |
0 |
|
100% |
| tests/test_dates.py |
test_format_last_updated_returns_invalid_dates_unchanged |
|
1 |
0 |
0 |
|
100% |
| tests/test_dates.py |
(no function) |
|
8 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
_create_file |
|
5 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_excludes_paths |
|
1 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_includes_paths |
|
1 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_deployment_status_to_human_readable |
|
1 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_every_deployment_status_has_human_readable |
|
1 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_deployment_model_accepts_unknown_status |
|
2 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_validate_app_directory_valid |
|
1 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_validate_app_directory_invalid |
|
3 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_get_large_files_no_files_above_threshold |
|
2 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_get_large_files_returns_files_at_or_above_threshold |
|
5 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_get_large_files_excludes_default_exclusions |
|
4 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
test_get_large_files_respects_fastapicloudignore |
|
4 |
0 |
0 |
|
100% |
| tests/test_deploy_utils.py |
(no function) |
|
22 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_succeeds_when_variable_is_already_absent |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_json_reports_managed_variable_error |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
configured_app |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_a_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_a_message_if_app_is_not_configured |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_a_message_if_something_is_wrong |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_message_if_app_not_found |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_a_message_if_name_is_invalid |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_message_when_it_deletes |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_deletes_environment_variable_as_json_with_app_id |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_environment_variable_json_returns_app_not_found |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_selector_for_environment_variables |
|
7 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_message_if_no_environment_variable |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_json_returns_missing_required_input_without_name |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_delete_json_returns_missing_required_input_without_confirmation |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
test_shows_message_when_deletion_is_cancelled |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_delete.py |
(no function) |
|
39 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_shows_a_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_shows_message_if_no_environment_variables |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_gets_environment_variable_in_human_output_with_environment_variables_tag |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_gets_secret_environment_variable_in_human_output |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_get_prompts_for_environment_variable_name |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_get_json_returns_missing_required_input_without_name |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_gets_secret_environment_variable_as_json |
|
7 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_gets_non_secret_environment_variable_as_json |
|
7 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
test_get_environment_variable_json_returns_not_found |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_get.py |
(no function) |
|
26 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_a_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_a_message_if_app_is_not_configured |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_list_json_returns_missing_required_input_without_app_context |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_a_message_if_something_is_wrong |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_a_message_if_no_env_variables |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_environment_variables_names |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_lists_environment_variables_as_json_with_app_id |
|
7 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_lists_environment_variables_as_json_with_path |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_environment_variables_in_compact_table |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_truncates_values_and_marks_secrets_in_compact_table |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
test_shows_secret_environment_variables_without_value |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_list.py |
(no function) |
|
35 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_updates_existing_variable_using_returned_secret_status |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_updating_existing_secret_shows_secret_output |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_set_json_reports_managed_variable_error |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
configured_app |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_shows_a_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_shows_a_message_if_app_is_not_configured |
|
3 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_shows_a_message_if_something_is_wrong |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_shows_message_when_it_sets |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_asks_for_name_and_value |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_asks_for_name_and_value_for_secret |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_sets_secret_flag |
|
5 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_sets_environment_variable_as_json |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_sets_secret_environment_variable_as_json |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_sets_environment_variable_as_json_reads_value_stdin |
|
6 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_set_json_returns_missing_required_input_without_name |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_set_rejects_value_and_value_stdin |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
test_set_json_returns_missing_required_input_without_value |
|
4 |
0 |
0 |
|
100% |
| tests/test_env_set.py |
(no function) |
|
42 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_shows_message_if_not_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_shows_message_if_app_not_configured |
|
3 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_displays_logs |
|
10 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_displays_logs_with_explicit_app_id |
|
9 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_apps_logs_displays_logs |
|
8 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_apps_logs_no_follow_json_outputs_envelope |
|
8 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_apps_logs_follow_json_outputs_ndjson |
|
8 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_passes_default_params |
|
6 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_streams_logs_in_human_output |
|
7 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_passes_custom_params |
|
4 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_displays_all_log_levels |
|
10 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_401_unauthorized |
|
5 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_403_forbidden |
|
5 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_404 |
|
5 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_retention_limit_error |
|
6 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_retention_limit_error_json |
|
8 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_shows_message_when_no_logs_found |
|
5 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_server_error_message |
|
7 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_unknown_log_level |
|
7 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_skips_invalid_json_lines |
|
7 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_skips_heartbeat_messages |
|
8 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_handles_connection_loss |
|
4 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_rejects_invalid_since_format |
|
4 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_rejects_invalid_tail |
|
4 |
0 |
0 |
|
100% |
| tests/test_logs.py |
test_accepts_valid_since_format |
|
4 |
0 |
0 |
|
100% |
| tests/test_logs.py |
(no function) |
|
61 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_bump_version |
|
1 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_update_version_file |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_update_version_file_requires_newer_version |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_update_release_notes |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_update_release_notes_rejects_existing_version |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_get_release_notes_body_with_dated_heading |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_get_release_notes_body_with_plain_heading |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_get_release_notes_body_allows_non_version_h2_content |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_get_release_notes_body_requires_version_section |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_get_release_notes_body_requires_non_empty_section |
|
3 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_cli_updates_configured_files |
|
10 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_cli_accepts_env_vars |
|
14 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_cli_prints_current_version |
|
6 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
test_cli_prints_release_notes |
|
8 |
0 |
0 |
|
100% |
| tests/test_prepare_release.py |
(no function) |
|
21 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
_make_file |
|
3 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_read_with_size |
|
4 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_callback_not_called_within_interval |
|
6 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_callback_called_after_interval_elapses |
|
8 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_callback_tracks_cumulative_bytes |
|
12 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_callback_called_on_eof |
|
6 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_name_property |
|
3 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
test_callback_uses_current_file_position_after_seek |
|
8 |
0 |
0 |
|
100% |
| tests/test_progress_file.py |
(no function) |
|
13 |
0 |
0 |
|
100% |
| tests/test_sentry.py |
test_init_sentry_when_logged_in |
|
3 |
0 |
0 |
|
100% |
| tests/test_sentry.py |
test_init_sentry_when_deployment_token |
|
4 |
0 |
0 |
|
100% |
| tests/test_sentry.py |
test_init_sentry_when_logged_out |
|
3 |
0 |
0 |
|
100% |
| tests/test_sentry.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| tests/test_utils_apps.py |
test_resolve_app_id_prefers_explicit_app_id |
|
4 |
0 |
0 |
|
100% |
| tests/test_utils_apps.py |
test_resolve_app_id_uses_linked_app |
|
4 |
0 |
0 |
|
100% |
| tests/test_utils_apps.py |
test_resolve_app_id_returns_none_without_app_context |
|
1 |
0 |
0 |
|
100% |
| tests/test_utils_apps.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
current_version |
|
1 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_is_newer_version |
|
6 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_returns_update_when_pypi_has_newer_version |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_uses_fresh_cache_without_network |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_refreshes_stale_cache |
|
6 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_returns_none_when_current_is_latest |
|
3 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_ignores_network_errors |
|
3 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_check_for_update_ignores_invalid_payload |
|
3 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_read_cached_latest_version_ignores_stale_cache |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_read_cached_latest_version_ignores_invalid_cache |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_read_cached_latest_version_ignores_non_simple_version |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_write_latest_version_cache |
|
3 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_write_latest_version_cache_ignores_write_errors |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_upgrade_command_uses_detected_installer |
|
3 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_upgrade_command_uses_detected_installer.fake_detect_installer |
|
2 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_upgrade_command_falls_back_when_installer_is_unknown |
|
2 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_upgrade_command_propagates_detector_errors |
|
4 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_upgrade_command_propagates_detector_errors.broken_detector |
|
1 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_format_update_message |
|
6 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
_seed_fresh_update_cache |
|
1 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_rich_toolkit_prints_update_after_toolkit_output |
|
7 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_rich_toolkit_prints_update_after_toolkit_output.command_with_toolkit |
|
2 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_get_rich_toolkit_skips_update_when_disabled |
|
7 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_background_check_stores_result_and_returns_message |
|
8 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_background_check_returns_no_message_without_update |
|
5 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_background_check_hides_unexpected_errors |
|
6 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
test_background_check_hides_unexpected_errors.broken_check |
|
1 |
0 |
0 |
|
100% |
| tests/test_version_check.py |
(no function) |
|
48 |
0 |
0 |
|
100% |
| tests/utils.py |
changing_dir |
|
5 |
0 |
0 |
|
100% |
| tests/utils.py |
build_logs_response |
|
1 |
0 |
0 |
|
100% |
| tests/utils.py |
_SnapshotResult.output |
|
2 |
0 |
0 |
|
100% |
| tests/utils.py |
SnapshotCliRunner.invoke |
|
3 |
0 |
0 |
|
100% |
| tests/utils.py |
create_jwt_token |
|
5 |
0 |
0 |
|
100% |
| tests/utils.py |
(no function) |
|
37 |
0 |
0 |
|
100% |