Skip to content

Merge branch 'master' into gcs-devstack-tests

6e2eb59
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Open

feat: add fake-gcs-server to devstack with GCS integration tests #3155

Merge branch 'master' into gcs-devstack-tests
6e2eb59
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results — All Backends succeeded May 6, 2026 in 1s

754 passed, 0 failed and 188 skipped

Tests passed successfully

Report Passed Failed Skipped Time
junit-artifacts/junit-airflow-kubernetes/junit-airflow-kubernetes.xml 32✅ 57⚪ 2106s
junit-artifacts/junit-argo-kubernetes/junit-argo-kubernetes.xml 70✅ 19⚪ 3781s
junit-artifacts/junit-gcs-local/junit-gcs-local.xml 31✅ 30⚪ 148s
junit-artifacts/junit-local/junit-local.xml 32✅ 30⚪ 300s
junit-artifacts/junit-sfn-batch/junit-sfn-batch.xml 40✅ 49⚪ 2193s
junit-artifacts/junit-unit/junit-unit.xml 549✅ 3⚪ 55s

✅ junit-artifacts/junit-airflow-kubernetes/junit-airflow-kubernetes.xml

89 tests were completed in 2106s with 32 passed, 0 failed and 57 skipped.

Test suite Passed Failed Skipped Time
pytest 32✅ 57⚪ 2106s

✅ pytest

core.test_airflow_compilation
  ✅ test_linear_flow
  ✅ test_branch_flow
  ✅ test_foreach_flow
  ✅ test_retry_flow
  ✅ test_resources_flow
  ✅ test_schedule_flow
  ✅ test_tags_are_list_not_tuple
core.test_basic
  ✅ test_hello_world[airflow-kubernetes-runner]
  ⚪ test_hello_world[airflow-kubernetes-deployer]
  ✅ test_hello_project[airflow-kubernetes-runner]
  ⚪ test_hello_project[airflow-kubernetes-deployer]
  ⚪ test_from_deployment[airflow-kubernetes-deployer]
  ✅ test_retry[airflow-kubernetes-runner]
  ⚪ test_retry[airflow-kubernetes-deployer]
  ✅ test_resources[airflow-kubernetes-runner]
  ⚪ test_resources[airflow-kubernetes-deployer]
  ✅ test_catch[airflow-kubernetes-runner]
  ⚪ test_catch[airflow-kubernetes-deployer]
  ✅ test_timeout[airflow-kubernetes-runner]
  ⚪ test_timeout[airflow-kubernetes-deployer]
  ✅ test_hello_conda[airflow-kubernetes-runner]
  ⚪ test_hello_conda[airflow-kubernetes-deployer]
  ⚪ test_resources_cpu[airflow-kubernetes-deployer]
  ⚪ test_fail_flow_reports_failed_status[airflow-kubernetes-deployer]
  ⚪ test_split_in_branch_deployer[airflow-kubernetes-deployer]
  ✅ test_custom_step_names[airflow-kubernetes-runner]
  ⚪ test_custom_step_names[airflow-kubernetes-deployer]
  ✅ test_single_step_flow[airflow-kubernetes-runner]
  ⚪ test_single_step_flow[airflow-kubernetes-deployer]
  ✅ test_custom_branch_flow[airflow-kubernetes-runner]
  ⚪ test_custom_branch_flow[airflow-kubernetes-deployer]
  ⚪ test_resources_gpu[airflow-kubernetes-deployer]
core.test_compliance
  ⚪ test_run_params_multiple_values[airflow-kubernetes-deployer]
  ⚪ test_branch_propagated_to_steps[airflow-kubernetes-deployer]
  ⚪ test_retry_count_from_scheduler[airflow-kubernetes-deployer]
  ⚪ test_config_value_propagated[airflow-kubernetes-deployer]
  ⚪ test_nested_foreach_or_skip[airflow-kubernetes-deployer]
  ⚪ test_timeout_enforcement[airflow-kubernetes-deployer]
  ⚪ test_timeout_minutes_enforced[airflow-kubernetes-deployer]
  ⚪ test_run_param_not_dropped[airflow-kubernetes-deployer]
core.test_config
  ✅ test_config_simple_default[airflow-kubernetes-runner]
  ⚪ test_config_simple_default[airflow-kubernetes-deployer]
  ✅ test_config_simple_config_value[airflow-kubernetes-runner]
  ⚪ test_config_simple_config_value[airflow-kubernetes-deployer]
  ✅ test_config_simple_config[airflow-kubernetes-runner]
  ⚪ test_config_simple_config[airflow-kubernetes-deployer]
  ✅ test_mutable_flow_default[airflow-kubernetes-runner]
  ⚪ test_mutable_flow_default[airflow-kubernetes-deployer]
  ✅ test_mutable_flow_config_value[airflow-kubernetes-runner]
  ⚪ test_mutable_flow_config_value[airflow-kubernetes-deployer]
  ✅ test_config_corner_cases[airflow-kubernetes-runner]
  ⚪ test_config_corner_cases[airflow-kubernetes-deployer]
  ⚪ test_config_from_deployment[airflow-kubernetes-deployer]
core.test_dag
  ✅ test_branch[airflow-kubernetes-runner]
  ⚪ test_branch[airflow-kubernetes-deployer]
  ✅ test_foreach[airflow-kubernetes-runner]
  ⚪ test_foreach[airflow-kubernetes-deployer]
  ✅ test_multibody_foreach[airflow-kubernetes-runner]
  ⚪ test_multibody_foreach[airflow-kubernetes-deployer]
  ✅ test_retry_foreach[airflow-kubernetes-runner]
  ⚪ test_retry_foreach[airflow-kubernetes-deployer]
  ⚪ test_condition[airflow-kubernetes-runner]
  ⚪ test_condition[airflow-kubernetes-deployer]
  ✅ test_nested_foreach[airflow-kubernetes-runner]
  ⚪ test_nested_foreach[airflow-kubernetes-deployer]
  ✅ test_nested_foreach_2x2[airflow-kubernetes-runner]
  ⚪ test_nested_foreach_2x2[airflow-kubernetes-deployer]
  ⚪ test_nested_foreach_3level[airflow-kubernetes-runner]
  ⚪ test_nested_foreach_3level[airflow-kubernetes-deployer]
core.test_decorators
  ✅ test_environment_vars[airflow-kubernetes-runner]
  ⚪ test_environment_vars[airflow-kubernetes-deployer]
  ✅ test_environment_vars_foreach[airflow-kubernetes-runner]
  ⚪ test_environment_vars_foreach[airflow-kubernetes-deployer]
  ✅ test_card_basic[airflow-kubernetes-runner]
  ⚪ test_card_basic[airflow-kubernetes-deployer]
core.test_lifecycle
  ⚪ test_schedule_deploy[airflow-kubernetes-deployer]
  ⚪ test_deployed_flow_status[airflow-kubernetes-deployer]
core.test_resume
  ⚪ test_resume_hello_world[airflow-kubernetes-deployer]
  ⚪ test_resume_failed_flow[airflow-kubernetes-deployer]
  ⚪ test_resume_foreach[airflow-kubernetes-deployer]
  ⚪ test_resume_step_to_rerun[airflow-kubernetes-deployer]
core.test_sfn_compilation
  ⚪ test_linear_flow
  ⚪ test_branch_flow
  ⚪ test_foreach_flow
  ⚪ test_retry_flow
  ⚪ test_catch_flow
  ⚪ test_resources_flow
  ⚪ test_timeout_flow
  ⚪ test_schedule_flow

✅ junit-artifacts/junit-argo-kubernetes/junit-argo-kubernetes.xml

89 tests were completed in 3781s with 70 passed, 0 failed and 19 skipped.

Test suite Passed Failed Skipped Time
pytest 70✅ 19⚪ 3781s

✅ pytest

core.test_airflow_compilation
  ✅ test_linear_flow
  ✅ test_branch_flow
  ✅ test_foreach_flow
  ✅ test_retry_flow
  ✅ test_resources_flow
  ✅ test_schedule_flow
  ✅ test_tags_are_list_not_tuple
core.test_basic
  ✅ test_hello_world[argo-kubernetes-runner]
  ✅ test_from_deployment[argo-kubernetes-deployer]
  ✅ test_hello_world[argo-kubernetes-deployer]
  ✅ test_hello_project[argo-kubernetes-runner]
  ✅ test_hello_project[argo-kubernetes-deployer]
  ✅ test_retry[argo-kubernetes-runner]
  ✅ test_resources_cpu[argo-kubernetes-deployer]
  ✅ test_fail_flow_reports_failed_status[argo-kubernetes-deployer]
  ✅ test_retry[argo-kubernetes-deployer]
  ✅ test_resources[argo-kubernetes-runner]
  ✅ test_split_in_branch_deployer[argo-kubernetes-deployer]
  ✅ test_custom_step_names[argo-kubernetes-runner]
  ✅ test_resources[argo-kubernetes-deployer]
  ✅ test_custom_step_names[argo-kubernetes-deployer]
  ✅ test_single_step_flow[argo-kubernetes-runner]
  ✅ test_catch[argo-kubernetes-runner]
  ✅ test_single_step_flow[argo-kubernetes-deployer]
  ✅ test_catch[argo-kubernetes-deployer]
  ✅ test_custom_branch_flow[argo-kubernetes-runner]
  ✅ test_timeout[argo-kubernetes-runner]
  ✅ test_custom_branch_flow[argo-kubernetes-deployer]
  ⚪ test_resources_gpu[argo-kubernetes-deployer]
  ✅ test_timeout[argo-kubernetes-deployer]
  ✅ test_hello_conda[argo-kubernetes-runner]
  ✅ test_hello_conda[argo-kubernetes-deployer]
core.test_compliance
  ✅ test_run_params_multiple_values[argo-kubernetes-deployer]
  ✅ test_branch_propagated_to_steps[argo-kubernetes-deployer]
  ✅ test_retry_count_from_scheduler[argo-kubernetes-deployer]
  ✅ test_config_value_propagated[argo-kubernetes-deployer]
  ✅ test_nested_foreach_or_skip[argo-kubernetes-deployer]
  ⚪ test_timeout_enforcement[argo-kubernetes-deployer]
  ⚪ test_timeout_minutes_enforced[argo-kubernetes-deployer]
  ✅ test_run_param_not_dropped[argo-kubernetes-deployer]
core.test_config
  ✅ test_config_simple_config[argo-kubernetes-deployer]
  ✅ test_mutable_flow_default[argo-kubernetes-runner]
  ✅ test_mutable_flow_default[argo-kubernetes-deployer]
  ✅ test_mutable_flow_config_value[argo-kubernetes-runner]
  ✅ test_mutable_flow_config_value[argo-kubernetes-deployer]
  ✅ test_config_simple_default[argo-kubernetes-runner]
  ✅ test_config_corner_cases[argo-kubernetes-runner]
  ✅ test_config_simple_default[argo-kubernetes-deployer]
  ✅ test_config_corner_cases[argo-kubernetes-deployer]
  ✅ test_config_simple_config_value[argo-kubernetes-runner]
  ✅ test_config_from_deployment[argo-kubernetes-deployer]
  ✅ test_config_simple_config_value[argo-kubernetes-deployer]
  ✅ test_config_simple_config[argo-kubernetes-runner]
core.test_dag
  ✅ test_branch[argo-kubernetes-runner]
  ✅ test_foreach[argo-kubernetes-runner]
  ✅ test_branch[argo-kubernetes-deployer]
  ⚪ test_condition[argo-kubernetes-deployer]
  ✅ test_foreach[argo-kubernetes-deployer]
  ✅ test_nested_foreach[argo-kubernetes-runner]
  ✅ test_multibody_foreach[argo-kubernetes-runner]
  ✅ test_nested_foreach[argo-kubernetes-deployer]
  ✅ test_multibody_foreach[argo-kubernetes-deployer]
  ✅ test_nested_foreach_2x2[argo-kubernetes-runner]
  ✅ test_retry_foreach[argo-kubernetes-runner]
  ✅ test_nested_foreach_2x2[argo-kubernetes-deployer]
  ⚪ test_nested_foreach_3level[argo-kubernetes-runner]
  ⚪ test_nested_foreach_3level[argo-kubernetes-deployer]
  ✅ test_retry_foreach[argo-kubernetes-deployer]
  ⚪ test_condition[argo-kubernetes-runner]
core.test_decorators
  ✅ test_environment_vars[argo-kubernetes-runner]
  ✅ test_environment_vars[argo-kubernetes-deployer]
  ✅ test_environment_vars_foreach[argo-kubernetes-runner]
  ✅ test_environment_vars_foreach[argo-kubernetes-deployer]
  ✅ test_card_basic[argo-kubernetes-deployer]
  ✅ test_card_basic[argo-kubernetes-runner]
core.test_lifecycle
  ✅ test_schedule_deploy[argo-kubernetes-deployer]
  ✅ test_deployed_flow_status[argo-kubernetes-deployer]
core.test_resume
  ⚪ test_resume_failed_flow[argo-kubernetes-deployer]
  ⚪ test_resume_hello_world[argo-kubernetes-deployer]
  ⚪ test_resume_foreach[argo-kubernetes-deployer]
  ⚪ test_resume_step_to_rerun[argo-kubernetes-deployer]
core.test_sfn_compilation
  ⚪ test_linear_flow
  ⚪ test_foreach_flow
  ⚪ test_branch_flow
  ⚪ test_retry_flow
  ⚪ test_catch_flow
  ⚪ test_resources_flow
  ⚪ test_timeout_flow
  ⚪ test_schedule_flow

✅ junit-artifacts/junit-gcs-local/junit-gcs-local.xml

61 tests were completed in 148s with 31 passed, 0 failed and 30 skipped.

Test suite Passed Failed Skipped Time
pytest 31✅ 30⚪ 148s

✅ pytest

core.test_basic
  ⚪ test_from_deployment[NOTSET]
  ⚪ test_split_in_branch_deployer[NOTSET]
  ⚪ test_resources_gpu[NOTSET]
  ✅ test_hello_world[gcs-local-runner]
  ✅ test_retry[gcs-local-runner]
  ✅ test_custom_step_names[gcs-local-runner]
  ✅ test_hello_project[gcs-local-runner]
  ✅ test_single_step_flow[gcs-local-runner]
  ✅ test_resources[gcs-local-runner]
  ✅ test_catch[gcs-local-runner]
  ✅ test_custom_branch_flow[gcs-local-runner]
  ✅ test_timeout[gcs-local-runner]
  ⚪ test_resources_cpu[NOTSET]
  ⚪ test_fail_flow_reports_failed_status[NOTSET]
core.test_airflow_compilation
  ✅ test_retry_flow
  ✅ test_linear_flow
  ✅ test_tags_are_list_not_tuple
  ✅ test_branch_flow
  ✅ test_resources_flow
  ✅ test_foreach_flow
  ✅ test_schedule_flow
core.test_compliance
  ⚪ test_run_params_multiple_values[NOTSET]
  ⚪ test_branch_propagated_to_steps[NOTSET]
  ⚪ test_retry_count_from_scheduler[NOTSET]
  ⚪ test_config_value_propagated[NOTSET]
  ⚪ test_nested_foreach_or_skip[NOTSET]
  ⚪ test_timeout_enforcement[NOTSET]
  ⚪ test_timeout_minutes_enforced[NOTSET]
  ⚪ test_run_param_not_dropped[NOTSET]
core.test_config
  ✅ test_config_simple_default[gcs-local-runner]
  ✅ test_mutable_flow_default[gcs-local-runner]
  ✅ test_config_simple_config_value[gcs-local-runner]
  ✅ test_mutable_flow_config_value[gcs-local-runner]
  ✅ test_config_simple_config[gcs-local-runner]
  ✅ test_config_corner_cases[gcs-local-runner]
  ⚪ test_config_from_deployment[NOTSET]
core.test_dag
  ⚪ test_condition[gcs-local-runner]
  ⚪ test_nested_foreach_3level[gcs-local-runner]
  ✅ test_branch[gcs-local-runner]
  ✅ test_multibody_foreach[gcs-local-runner]
  ✅ test_nested_foreach[gcs-local-runner]
  ✅ test_foreach[gcs-local-runner]
  ✅ test_retry_foreach[gcs-local-runner]
  ✅ test_nested_foreach_2x2[gcs-local-runner]
core.test_decorators
  ✅ test_environment_vars[gcs-local-runner]
  ✅ test_environment_vars_foreach[gcs-local-runner]
  ✅ test_card_basic[gcs-local-runner]
core.test_lifecycle
  ⚪ test_schedule_deploy[NOTSET]
  ⚪ test_deployed_flow_status[NOTSET]
core.test_resume
  ⚪ test_resume_foreach[NOTSET]
  ⚪ test_resume_step_to_rerun[NOTSET]
  ⚪ test_resume_failed_flow[NOTSET]
  ⚪ test_resume_hello_world[NOTSET]
core.test_sfn_compilation
  ⚪ test_linear_flow
  ⚪ test_foreach_flow
  ⚪ test_retry_flow
  ⚪ test_schedule_flow
  ⚪ test_resources_flow
  ⚪ test_branch_flow
  ⚪ test_timeout_flow
  ⚪ test_catch_flow

✅ junit-artifacts/junit-local/junit-local.xml

62 tests were completed in 300s with 32 passed, 0 failed and 30 skipped.

Test suite Passed Failed Skipped Time
pytest 32✅ 30⚪ 300s

✅ pytest

core.test_basic
  ⚪ test_from_deployment[NOTSET]
  ⚪ test_fail_flow_reports_failed_status[NOTSET]
  ⚪ test_split_in_branch_deployer[NOTSET]
  ✅ test_hello_world[local-runner]
  ✅ test_custom_step_names[local-runner]
  ✅ test_custom_branch_flow[local-runner]
  ⚪ test_resources_gpu[NOTSET]
  ✅ test_hello_project[local-runner]
  ✅ test_single_step_flow[local-runner]
  ✅ test_retry[local-runner]
  ✅ test_resources[local-runner]
  ✅ test_catch[local-runner]
  ✅ test_timeout[local-runner]
  ✅ test_hello_conda[local-runner]
  ⚪ test_resources_cpu[NOTSET]
core.test_airflow_compilation
  ✅ test_linear_flow
  ✅ test_retry_flow
  ✅ test_tags_are_list_not_tuple
  ✅ test_branch_flow
  ✅ test_resources_flow
  ✅ test_foreach_flow
  ✅ test_schedule_flow
core.test_compliance
  ⚪ test_run_params_multiple_values[NOTSET]
  ⚪ test_branch_propagated_to_steps[NOTSET]
  ⚪ test_retry_count_from_scheduler[NOTSET]
  ⚪ test_config_value_propagated[NOTSET]
  ⚪ test_nested_foreach_or_skip[NOTSET]
  ⚪ test_timeout_enforcement[NOTSET]
  ⚪ test_timeout_minutes_enforced[NOTSET]
  ⚪ test_run_param_not_dropped[NOTSET]
core.test_config
  ✅ test_mutable_flow_default[local-runner]
  ✅ test_config_simple_default[local-runner]
  ✅ test_config_corner_cases[local-runner]
  ⚪ test_config_from_deployment[NOTSET]
  ✅ test_mutable_flow_config_value[local-runner]
  ✅ test_config_simple_config_value[local-runner]
  ✅ test_config_simple_config[local-runner]
core.test_dag
  ⚪ test_condition[local-runner]
  ✅ test_branch[local-runner]
  ✅ test_nested_foreach[local-runner]
  ✅ test_multibody_foreach[local-runner]
  ✅ test_foreach[local-runner]
  ⚪ test_nested_foreach_3level[local-runner]
  ✅ test_nested_foreach_2x2[local-runner]
  ✅ test_retry_foreach[local-runner]
core.test_decorators
  ✅ test_card_basic[local-runner]
  ✅ test_environment_vars[local-runner]
  ✅ test_environment_vars_foreach[local-runner]
core.test_lifecycle
  ⚪ test_schedule_deploy[NOTSET]
  ⚪ test_deployed_flow_status[NOTSET]
core.test_resume
  ⚪ test_resume_hello_world[NOTSET]
  ⚪ test_resume_failed_flow[NOTSET]
  ⚪ test_resume_foreach[NOTSET]
  ⚪ test_resume_step_to_rerun[NOTSET]
core.test_sfn_compilation
  ⚪ test_linear_flow
  ⚪ test_foreach_flow
  ⚪ test_retry_flow
  ⚪ test_branch_flow
  ⚪ test_resources_flow
  ⚪ test_catch_flow
  ⚪ test_timeout_flow
  ⚪ test_schedule_flow

✅ junit-artifacts/junit-sfn-batch/junit-sfn-batch.xml

89 tests were completed in 2193s with 40 passed, 0 failed and 49 skipped.

Test suite Passed Failed Skipped Time
pytest 40✅ 49⚪ 2193s

✅ pytest

core.test_airflow_compilation
  ✅ test_linear_flow
  ✅ test_branch_flow
  ✅ test_foreach_flow
  ✅ test_retry_flow
  ✅ test_resources_flow
  ✅ test_schedule_flow
  ✅ test_tags_are_list_not_tuple
core.test_basic
  ⚪ test_from_deployment[sfn-batch-deployer]
  ✅ test_hello_world[sfn-batch-runner]
  ⚪ test_hello_world[sfn-batch-deployer]
  ✅ test_hello_project[sfn-batch-runner]
  ⚪ test_hello_project[sfn-batch-deployer]
  ⚪ test_resources_cpu[sfn-batch-deployer]
  ⚪ test_fail_flow_reports_failed_status[sfn-batch-deployer]
  ⚪ test_split_in_branch_deployer[sfn-batch-deployer]
  ✅ test_custom_step_names[sfn-batch-runner]
  ⚪ test_custom_step_names[sfn-batch-deployer]
  ✅ test_retry[sfn-batch-runner]
  ⚪ test_retry[sfn-batch-deployer]
  ✅ test_single_step_flow[sfn-batch-runner]
  ⚪ test_single_step_flow[sfn-batch-deployer]
  ✅ test_resources[sfn-batch-runner]
  ⚪ test_resources[sfn-batch-deployer]
  ✅ test_custom_branch_flow[sfn-batch-runner]
  ⚪ test_custom_branch_flow[sfn-batch-deployer]
  ⚪ test_resources_gpu[sfn-batch-deployer]
  ✅ test_catch[sfn-batch-runner]
  ⚪ test_catch[sfn-batch-deployer]
  ✅ test_timeout[sfn-batch-runner]
  ⚪ test_timeout[sfn-batch-deployer]
  ✅ test_hello_conda[sfn-batch-runner]
  ⚪ test_hello_conda[sfn-batch-deployer]
core.test_compliance
  ⚪ test_run_params_multiple_values[sfn-batch-deployer]
  ⚪ test_branch_propagated_to_steps[sfn-batch-deployer]
  ⚪ test_retry_count_from_scheduler[sfn-batch-deployer]
  ⚪ test_config_value_propagated[sfn-batch-deployer]
  ⚪ test_nested_foreach_or_skip[sfn-batch-deployer]
  ⚪ test_timeout_enforcement[sfn-batch-deployer]
  ⚪ test_timeout_minutes_enforced[sfn-batch-deployer]
  ⚪ test_run_param_not_dropped[sfn-batch-deployer]
core.test_config
  ✅ test_config_simple_default[sfn-batch-runner]
  ⚪ test_config_simple_default[sfn-batch-deployer]
  ✅ test_config_simple_config_value[sfn-batch-runner]
  ⚪ test_config_simple_config_value[sfn-batch-deployer]
  ✅ test_config_simple_config[sfn-batch-runner]
  ⚪ test_config_simple_config[sfn-batch-deployer]
  ✅ test_mutable_flow_default[sfn-batch-runner]
  ⚪ test_mutable_flow_default[sfn-batch-deployer]
  ✅ test_mutable_flow_config_value[sfn-batch-runner]
  ⚪ test_mutable_flow_config_value[sfn-batch-deployer]
  ✅ test_config_corner_cases[sfn-batch-runner]
  ⚪ test_config_corner_cases[sfn-batch-deployer]
  ⚪ test_config_from_deployment[sfn-batch-deployer]
core.test_dag
  ✅ test_foreach[sfn-batch-runner]
  ⚪ test_foreach[sfn-batch-deployer]
  ✅ test_branch[sfn-batch-runner]
  ⚪ test_branch[sfn-batch-deployer]
  ⚪ test_condition[sfn-batch-deployer]
  ✅ test_multibody_foreach[sfn-batch-runner]
  ⚪ test_multibody_foreach[sfn-batch-deployer]
  ✅ test_nested_foreach[sfn-batch-runner]
  ⚪ test_nested_foreach[sfn-batch-deployer]
  ✅ test_retry_foreach[sfn-batch-runner]
  ⚪ test_retry_foreach[sfn-batch-deployer]
  ⚪ test_condition[sfn-batch-runner]
  ⚪ test_nested_foreach_3level[sfn-batch-runner]
  ⚪ test_nested_foreach_3level[sfn-batch-deployer]
  ✅ test_nested_foreach_2x2[sfn-batch-runner]
  ⚪ test_nested_foreach_2x2[sfn-batch-deployer]
core.test_decorators
  ✅ test_environment_vars[sfn-batch-runner]
  ⚪ test_environment_vars[sfn-batch-deployer]
  ⚪ test_card_basic[sfn-batch-deployer]
  ✅ test_environment_vars_foreach[sfn-batch-runner]
  ⚪ test_environment_vars_foreach[sfn-batch-deployer]
  ✅ test_card_basic[sfn-batch-runner]
core.test_lifecycle
  ✅ test_schedule_deploy[sfn-batch-deployer]
  ⚪ test_deployed_flow_status[sfn-batch-deployer]
core.test_resume
  ⚪ test_resume_hello_world[sfn-batch-deployer]
  ⚪ test_resume_failed_flow[sfn-batch-deployer]
  ⚪ test_resume_foreach[sfn-batch-deployer]
  ⚪ test_resume_step_to_rerun[sfn-batch-deployer]
core.test_sfn_compilation
  ✅ test_linear_flow
  ⚪ test_branch_flow
  ✅ test_foreach_flow
  ✅ test_retry_flow
  ✅ test_catch_flow
  ✅ test_resources_flow
  ✅ test_timeout_flow
  ✅ test_schedule_flow

✅ junit-artifacts/junit-unit/junit-unit.xml

552 tests were completed in 55s with 549 passed, 0 failed and 3 skipped.

Test suite Passed Failed Skipped Time
pytest 549✅ 3⚪ 55s

✅ pytest

test.unit.configs.test_config_naming.TestConfigNaming
  ✅ test_flow_completes
  ✅ test_config_with_underscore
  ✅ test_config_with_dash
  ✅ test_config_with_mixed_naming
test.unit.configs.test_config_plain.TestConfigPlain
  ✅ test_flow_completes
  ✅ test_plain_string_without_parser
  ✅ test_plain_list_with_parser
  ✅ test_plain_tuple_with_parser
test.unit.graph_inference.test_card_dag
  ✅ test_transform_flow_graph_supports_explicit_endpoints
  ✅ test_transform_flow_graph_keeps_legacy_start_end_detection
  ✅ test_default_card_includes_custom_graph_endpoints
test.unit.graph_inference.test_graph_inference
  ✅ test_custom_named_flow_completes
  ✅ test_custom_named_graph_info_has_endpoints
  ✅ test_custom_named_parameters_metadata_has_endpoints
  ✅ test_custom_named_graph_endpoints_property
  ✅ test_custom_named_end_task
  ✅ test_custom_named_steps_present
  ✅ test_custom_named_parent_steps
  ✅ test_custom_named_child_steps
  ✅ test_single_step_flow_completes
  ✅ test_single_step_graph_info_start_equals_end
  ✅ test_single_step_parameters_metadata
  ✅ test_single_step_end_task
  ✅ test_single_step_present
  ✅ test_single_step_parent_child_empty
  ✅ test_single_step_bare_flow_completes
  ✅ test_single_step_bare_graph_info_start_equals_end
  ✅ test_single_step_bare_parameters_metadata
  ✅ test_single_step_bare_end_task
  ✅ test_single_step_bare_step_present
  ✅ test_single_step_bare_parent_child_empty
  ✅ test_branch_flow_completes
  ✅ test_branch_graph_info_endpoints
  ✅ test_branch_end_task
  ✅ test_branch_merge_data
  ✅ test_branch_steps_present
  ✅ test_branch_entry_has_two_children
  ✅ test_branch_merge_has_two_parents
  ✅ test_trigger_from_runs_uses_custom_terminal_step
  ✅ test_single_step_with_config_completes
  ✅ test_single_step_with_config_value_flows_to_artifact
  ✅ test_single_step_with_stacked_decos_completes
  ✅ test_single_step_with_stacked_decos_graph_info
  ✅ test_single_step_with_flow_mutator_completes
  ✅ test_single_step_with_flow_mutator_applied
test.unit.inheritance.test_inheritance.TestComprehensiveLinear
  ✅ test_flow_completes
  ✅ test_all_parameters_accessible
  ✅ test_all_configs_accessible
  ✅ test_computation_with_configs
test.unit.inheritance.test_inheritance.TestMutatorWithBaseConfig
  ✅ test_flow_completes
  ✅ test_base_parameters_accessible
  ✅ test_base_config_accessible
  ✅ test_mutator_injects_from_base_config
  ✅ test_computation_with_injected_params
test.unit.inheritance.test_inheritance.TestMutatorWithDerivedConfig
  ✅ test_flow_completes
  ✅ test_all_parameters_accessible
  ✅ test_all_configs_accessible
  ✅ test_base_mutator_uses_derived_config
  ✅ test_computation_with_forward_injected_params
test.unit.inheritance.test_inheritance.TestComprehensiveDiamond
  ✅ test_flow_completes
  ✅ test_parameters_from_all_branches
  ✅ test_configs_from_all_branches
  ✅ test_mro_resolution
  ✅ test_computation_across_branches
test.unit.inheritance.test_inheritance.TestComprehensiveMultiHierarchy
  ✅ test_flow_completes
  ✅ test_parameters_from_first_hierarchy
  ✅ test_parameters_from_second_hierarchy
  ✅ test_merge_point_parameters
  ✅ test_configs_from_both_hierarchies
  ✅ test_step_override_from_merge_point
  ✅ test_cross_hierarchy_computation
  ✅ test_mutator_from_first_hierarchy_executes
  ✅ test_decorated_step_from_first_hierarchy
test.unit.inheritance.test_inheritance.TestInheritanceIntegration
  ✅ test_all_flows_complete_successfully[comprehensive_linear_run]
  ✅ test_all_flows_complete_successfully[mutator_with_base_config_run]
  ✅ test_all_flows_complete_successfully[mutator_with_derived_config_run]
  ✅ test_all_flows_complete_successfully[comprehensive_diamond_run]
  ✅ test_all_flows_complete_successfully[comprehensive_multi_hierarchy_run]
  ✅ test_expected_steps_present[comprehensive_linear_run-expected_steps0]
  ✅ test_expected_steps_present[mutator_with_base_config_run-expected_steps1]
  ✅ test_expected_steps_present[mutator_with_derived_config_run-expected_steps2]
  ✅ test_expected_steps_present[comprehensive_diamond_run-expected_steps3]
  ✅ test_expected_steps_present[comprehensive_multi_hierarchy_run-expected_steps4]
test.unit.localbatch.test_localbatch.TestBatchAPI
  ✅ test_health
  ✅ test_describe_queues_returns_default
  ✅ test_default_queue_is_healthy
  ✅ test_describe_compute_environments
  ✅ test_register_job_definition
  ✅ test_revision_increments_on_re_register
  ✅ test_describe_job_definitions_by_name
  ✅ test_submit_job_returns_id_and_name
  ✅ test_job_reaches_terminal_state
  ✅ test_describe_jobs_returns_correct_shape
  ✅ test_terminate_job_transitions_to_failed
  ✅ test_list_jobs_returns_summary_list
  ✅ test_ecs_metadata_endpoint
test.unit.localbatch.test_localbatch.TestDockerExecution
  ✅ test_successful_container
  ✅ test_failed_container_reports_exit_code
  ✅ test_inject_env_is_visible_inside_container
test.unit.localbatch.test_localbatch.TestMetaflowE2E
  ⚪ test_batch_step_artifacts_are_persisted
  ⚪ test_run_succeeds
  ⚪ test_all_steps_have_tasks
test.unit.mutators.test_add_decorator_returns.TestAddDecoratorReturns
  ✅ test_flow_completes
  ✅ test_returned_decorator_is_not_none
  ✅ test_returned_decorator_has_name
  ✅ test_decorator_was_applied
  ✅ test_duplicate_ignore_returns_none
  ✅ test_duplicate_was_not_applied
test.unit.mutators.test_dual_inheritance.TestDualInheritance
  ✅ test_flow_completes
  ✅ test_pre_mutate_ran
  ✅ test_mutate_ran
  ✅ test_pre_step_ran
  ✅ test_post_step_ran
test.unit.mutators.test_flow_mutator_addition.TestDynamicFlowMutatorAddition
  ✅ test_flow_completes
  ✅ test_inner_pre_mutate_ran
  ✅ test_inner_mutate_ran
test.unit.mutators.test_flow_mutator_addition.TestStringFlowMutatorAddition
  ✅ test_flow_completes
  ✅ test_string_mutator_pre_mutate_ran
  ✅ test_string_mutator_mutate_ran
test.unit.mutators.test_post_step_none_false.TestPostStepNoneFalse
  ✅ test_flow_completes
  ✅ test_pre_step_ran
  ✅ test_post_step_ran
test.unit.mutators.test_remove_decorator_guard.TestRemoveDecoratorGuard
  ✅ test_do_all_from_mutate_raises
  ✅ test_specific_match_from_mutate_raises
  ✅ test_do_all_from_pre_mutate_succeeds
test.unit.mutators.test_string_step_mutator.TestStringStepMutatorAddition
  ✅ test_flow_completes
  ✅ test_string_step_mutator_ran
test.unit.test_add_to_package
  ✅ test_flow_decorator_add_to_package
  ✅ test_flow_mutator_add_to_package_module
  ✅ test_step_mutator_deduplicated_across_steps
  ✅ test_step_mutator_distinct_instances
  ✅ test_legacy_two_tuple_defaults_to_code_content
  ✅ test_non_unique_filename_raises
  ✅ test_module_content_deduplicated
  ✅ test_other_content_type
  ✅ test_ordering_flow_decorators_before_step_decorators
  ✅ test_user_content_recorded
  ✅ test_user_content_duplicate_same_path_dedup
  ✅ test_user_content_duplicate_different_path_raises
  ✅ test_user_code_tuples_emits_addl_user_content_not_in_walker
  ✅ test_user_code_tuples_skips_addl_when_walker_already_has_it
  ✅ test_user_code_tuples_respects_user_code_filter
  ✅ test_integration_add_addl_then_user_code_tuples_dedupes_by_arcname
  ✅ test_integration_add_addl_contributes_file_outside_flow_dir
test.unit.test_argo_workflows_cli
  ✅ test_sanitize_for_argo[a-valid-name-a-valid-name]
  ✅ test_sanitize_for_argo[removing---@+_characters@_+-removing---characters]
  ✅ test_sanitize_for_argo[numb3rs-4r3-0k-123-numb3rs-4r3-0k-123]
  ✅ test_sanitize_for_argo[proj3ct.br4nch.flow_name-proj3ct.br4nch.flowname]
  ✅ test_sanitize_for_argo[---1breaking1---.--2subdomain2--.-3rules3-----1breaking1.2subdomain2.3rules3----]
  ✅ test_sanitize_for_argo[1brea---king1.2sub---domain2.-3ru-les3---1brea---king1.2sub---domain2.3ru-les3--]
  ✅ test_sanitize_for_argo[project.branch-cut-short-.flowname-project.branch-cut-short.flowname]
  ✅ test_sanitize_for_argo[test...name-test.name]
  ✅ test_get_schedule_no_decorator_returns_none
  ✅ test_get_schedule[schedule_none]
  ✅ test_get_schedule[schedule_none_with_timezone]
  ✅ test_get_schedule[cron_expression]
  ✅ test_get_schedule[cron_expression_with_timezone]
  ✅ test_trigger_explanation_no_schedule_does_not_claim_cronworkflow
  ✅ test_trigger_explanation_schedule_none_does_not_claim_cronworkflow
  ✅ test_trigger_explanation_active_schedule_claims_cronworkflow
test.unit.test_artifact_serializer
  ✅ test_auto_registration
  ✅ test_base_class_not_registered
  ✅ test_re_registration_overwrites
  ✅ test_priority_ordering
  ✅ test_priority_tie_last_wins
  ✅ test_deterministic_ordering
  ✅ test_high_priority_before_low
  ✅ test_metadata_fields
  ✅ test_metadata_is_namedtuple
  ✅ test_blob_bytes_auto_detect
  ✅ test_blob_str_auto_detect
  ✅ test_blob_explicit_is_reference_override
  ✅ test_blob_value_preserved
  ✅ test_blob_rejects_invalid_types
  ✅ test_format_enum_values
  ✅ test_dual_format_storage_roundtrip
  ✅ test_dual_format_wire_roundtrip
  ✅ test_pickle_serializer_rejects_wire
  ✅ test_priority_tie_lexicographic_fallback
  ✅ test_setup_imports_default_is_noop
  ✅ test_lazy_import_happy_path
  ✅ test_lazy_import_custom_alias
  ✅ test_lazy_import_rejects_reserved_names
  ✅ test_lazy_import_rejects_double_assignment
  ✅ test_setup_imports_accepts_both_signatures
test.unit.test_aws_util
  ✅ test_validate_aws_tag[test-value-False]
  ✅ test_validate_aws_tag[test-with@chars+ - = ._/-value@with.chars-+ - = ._/-False]
  ✅ test_validate_aws_tag[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ok-False]
  ✅ test_validate_aws_tag[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ok-True]
  ✅ test_validate_aws_tag[ok-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-False]
  ✅ test_validate_aws_tag[ok-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-True]
  ✅ test_validate_aws_tag[aWs:not-allowed-ok-True]
  ✅ test_validate_aws_tag[ok-AWS:not-allowed-True]
  ✅ test_validate_aws_tag[ok-aws:-middleaWs:not-allowed-False]
test.unit.test_compute_resource_attributes
  ✅ test_compute_resource_attributes
  ✅ test_compute_resource_attributes_string
test.unit.test_conda_decorator
  ✅ test_decorator_custom_attributes
  ✅ test_decorator_custom_attributes_with_backward_compatibility
test.unit.test_config_value
  ✅ test_isinstance
  ✅ test_todict
  ✅ test_container_has_config_value
  ✅ test_non_modifiable
  ✅ test_json_dumpable
  ✅ test_dict_like_behavior
test.unit.test_content_addressed_store
  ✅ test_load_blobs_error_message_uses_current_path_key[missing_version]
  ✅ test_load_blobs_error_message_uses_current_path_key[unknown_version]
  ✅ test_load_blobs_error_message_uses_current_path_key[unpack_failure]
test.unit.test_graph_endpoints_fallback
  ✅ test_missing_metadata_falls_back_to_literals
  ✅ test_metaflow_not_found_caches_fallback
  ✅ test_transient_error_not_cached
test.unit.test_graph_structure
  ✅ test_start_end_inference[standard]
  ✅ test_start_end_inference[custom_linear]
  ✅ test_start_end_inference[single_step]
  ✅ test_start_end_inference[branch]
  ✅ test_start_end_inference[foreach]
  ✅ test_start_end_inference[split_start]
  ✅ test_standard_flow_types
  ✅ test_custom_linear_types
  ✅ test_single_step_type_is_end
  ✅ test_branch_entry_is_split
  ✅ test_split_start_keeps_split_type
  ✅ test_foreach_entry_keeps_foreach_type
  ✅ test_custom_flow_in_funcs_out_funcs
  ✅ test_standard_graph_structure
  ✅ test_custom_linear_graph_structure
  ✅ test_single_step_graph_structure
  ✅ test_branch_graph_structure
  ✅ test_steps_info_types_match
  ✅ test_split_start_type_in_steps_info
  ✅ test_steps_info_has_next
  ✅ test_standard_sort
  ✅ test_custom_linear_sort
  ✅ test_single_step_sort
  ✅ test_branch_sort_order
  ✅ test_flow_passes_lint[standard]
  ✅ test_flow_passes_lint[custom_linear]
  ✅ test_flow_passes_lint[single_step]
  ✅ test_flow_passes_lint[branch]
  ✅ test_flow_passes_lint[foreach]
  ✅ test_flow_passes_lint[split_start]
  ✅ test_node_info_stored_on_dag_node
  ✅ test_node_info_default_is_none_or_empty
  ✅ test_node_info_appears_in_output_steps
  ✅ test_node_info_nested_dict
  ✅ test_node_info_nested_in_output_steps
  ✅ test_node_info_empty_dict
  ✅ test_node_info_absent_step_in_output_steps
  ✅ test_plain_step_has_no_annotations
  ✅ test_annotated_step_flags
  ✅ test_annotated_single_step
  ✅ test_source_backed_single_step_with_next_still_fails_lint
  ✅ test_mixed_annotated_start_named_end
  ✅ test_backward_compat_name_based
  ✅ test_single_step_with_config_descriptor_registered
  ✅ test_single_step_with_multiple_step_decorators
  ✅ test_single_step_with_flow_mutator_registered
  ✅ test_malformed_flow_sets_none[multiple_start]
  ✅ test_malformed_flow_sets_none[multiple_end]
  ✅ test_malformed_flow_sets_none[no_start]
  ✅ test_malformed_flow_sets_none[no_end]
  ✅ test_malformed_flow_caught_by_lint[multiple_start_lint]
  ✅ test_malformed_flow_caught_by_lint[multiple_end_lint]
  ✅ test_malformed_flow_caught_by_lint[no_start_lint]
  ✅ test_malformed_flow_caught_by_lint[no_end_lint]
test.unit.test_kubernetes
  ✅ test_kubernetes_decorator_validate_kube_labels[None]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels1]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels2]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels3]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels4]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels5]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels6]
  ✅ test_kubernetes_decorator_validate_kube_labels[labels7]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels0]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels1]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels2]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels3]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels4]
  ✅ test_kubernetes_decorator_validate_kube_labels_fail[labels5]
  ✅ test_kubernetes_parse_keyvalue_list[items0-True]
  ✅ test_kubernetes_parse_keyvalue_list[items1-True]
test.unit.test_local_metadata_provider
  ✅ test_deduce_run_id_from_meta_dir
test.unit.test_metaflow_version
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-0-g4ff334e-False-2.19.22]
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-0-g4ff334e-True-2.19.22]
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-5-g4ff334e-False-2.19.22.post5-git4ff334e]
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-5-g4ff334e-True-2.19.22.post5]
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-5-g4ff334e-dirty-False-2.19.22.post5-git4ff334e-dirty]
  ✅ test_format_git_describe_parses_known_shapes[2.19.22-0-g4ff334e-dirty-False-2.19.22-dirty]
  ✅ test_format_git_describe_parses_known_shapes[v1.0-rc.1-0-gabcdef0-False-v1.0-rc.1]
  ✅ test_format_git_describe_parses_known_shapes[v1.0-rc.1-12-gabcdef0-False-v1.0-rc.1.post12-gitabcdef0]
  ✅ test_format_git_describe_parses_known_shapes[v1.0-rc.1-12-gabcdef0-True-v1.0-rc.1.post12]
  ✅ test_format_git_describe_parses_known_shapes[v1.0-rc.1-12-gabcdef0-dirty-False-v1.0-rc.1.post12-gitabcdef0-dirty]
  ✅ test_format_git_describe_parses_known_shapes[v9.2.97-rc.15-100-g3a13f86-dirty-False-v9.2.97-rc.15.post100-git3a13f86-dirty]
  ✅ test_format_git_describe_returns_none_for_unparseable[None]
  ✅ test_format_git_describe_returns_none_for_unparseable[short]
  ✅ test_format_git_describe_returns_none_for_unparseable[a-b]
  ✅ test_format_git_describe_returns_none_for_unparseable[a-b-dirty]
  ✅ test_make_public_version_strips_only_private_suffixes[2.19.22-2.19.22]
  ✅ test_make_public_version_strips_only_private_suffixes[2.19.22.post5-git4ff334e-2.19.22.post5]
  ✅ test_make_public_version_strips_only_private_suffixes[2.19.22.post5-git4ff334e-dirty-2.19.22.post5]
  ✅ test_make_public_version_strips_only_private_suffixes[v1.0-rc.1-v1.0-rc.1]
  ✅ test_make_public_version_strips_only_private_suffixes[v1.0-rc.1.post12-gitabcdef0-v1.0-rc.1.post12]
  ✅ test_make_public_version_strips_only_private_suffixes[v1.0-rc.1.post12-gitabcdef0-dirty-v1.0-rc.1.post12]
  ✅ test_make_public_version_strips_only_private_suffixes[v1.0-rc.1.post12-gitabcdef0+ext(foo)-v1.0-rc.1.post12]
  ✅ test_get_version_public_from_info_preserves_dashed_tags
test.unit.test_multicore_utils
  ✅ test_parallel_map
test.unit.test_package_suffixes_mutator
  ✅ test_init_list_form
  ✅ test_init_string_form
  ✅ test_add_to_package_yields_matching_files
  ✅ test_add_to_package_empty_suffixes_yields_nothing
test.unit.test_packaging_utils
  ✅ test_walk_includes_files_when_hidden_dir_is_ancestor_of_root
  ✅ test_walk_excludes_hidden_dirs_under_root
test.unit.test_pickle_serializer
  ✅ test_type_is_pickle
  ✅ test_priority_is_fallback
  ✅ test_registered_in_store
  ✅ test_last_in_ordering
  ✅ test_can_serialize_any_object[int]
  ✅ test_can_serialize_any_object[str]
  ✅ test_can_serialize_any_object[float]
  ✅ test_can_serialize_any_object[None]
  ✅ test_can_serialize_any_object[bool]
  ✅ test_can_serialize_any_object[list]
  ✅ test_can_serialize_any_object[dict]
  ✅ test_can_serialize_any_object[tuple]
  ✅ test_can_serialize_any_object[set]
  ✅ test_can_serialize_any_object[bytes]
  ✅ test_can_serialize_any_object[object]
  ✅ test_can_deserialize_valid_encodings[pickle-v2]
  ✅ test_can_deserialize_valid_encodings[pickle-v4]
  ✅ test_can_deserialize_valid_encodings[gzip+pickle-v2]
  ✅ test_can_deserialize_valid_encodings[gzip+pickle-v4]
  ✅ test_cannot_deserialize_unknown_encodings[json]
  ✅ test_cannot_deserialize_unknown_encodings[iotype:text]
  ✅ test_cannot_deserialize_unknown_encodings[msgpack]
  ✅ test_cannot_deserialize_unknown_encodings[unknown]
  ✅ test_cannot_deserialize_unknown_encodings[]
  ✅ test_serialize_returns_single_blob
  ✅ test_serialize_metadata_encoding
  ✅ test_serialize_metadata_type
  ✅ test_serialize_metadata_size
  ✅ test_serialize_metadata_serializer_info_empty
  ✅ test_round_trip[int]
  ✅ test_round_trip[str]
  ✅ test_round_trip[float]
  ✅ test_round_trip[None]
  ✅ test_round_trip[True]
  ✅ test_round_trip[False]
  ✅ test_round_trip[list]
  ✅ test_round_trip[nested_dict]
  ✅ test_round_trip[tuple]
  ✅ test_round_trip[set]
  ✅ test_round_trip[bytes]
  ✅ test_round_trip_custom_class
test.unit.test_pypi_decorator
  ✅ test_decorator_custom_attributes
test.unit.test_pypi_parsers
  ✅ test_yml_parser
  ✅ test_requirements_parser
  ✅ test_toml_parser
test.unit.test_remove_decorator
  ✅ test_remove_decorator
test.unit.test_s3_storage
  ✅ test_save_bytes_put_many_preserves_metadata_slot
  ✅ test_save_bytes_sequential_preserves_metadata
test.unit.test_secrets_decorator
  ✅ test_missing_default_secrets_backend_type
  ✅ test_secret_spec_from_str_explicit_type
  ✅ test_secret_spec_from_str_implicit_type
  ✅ test_secret_spec_from_dict_explicit_type_no_options
  ✅ test_secret_spec_from_dict_implicit_type_with_options
  ✅ test_role_resolution_source_level_wins
  ✅ test_role_resolution_falls_back_to_decorator_level
  ✅ test_secret_spec_from_dict_rejects_invalid[bad_type]
  ✅ test_secret_spec_from_dict_rejects_invalid[bad_id]
  ✅ test_secret_spec_from_dict_rejects_invalid[bad_options]
  ✅ test_secret_spec_from_dict_rejects_invalid[bad_role]
  ✅ test_secrets_provider_resolution_unknown_backend
  ✅ test_validate_env_vars_across_secrets_rejects_overlap
  ✅ test_validate_env_vars_vs_existing_env_rejects_collision
  ✅ test_validate_env_vars_accepts_typical_keys
  ✅ test_validate_env_vars_rejects_mistyped_keys[1]
  ✅ test_validate_env_vars_rejects_mistyped_keys[bad_key1]
  ✅ test_validate_env_vars_rejects_mistyped_keys[old_school]
  ✅ test_validate_env_vars_rejects_mistyped_values[1]
  ✅ test_validate_env_vars_rejects_mistyped_values[bad_value1]
  ✅ test_validate_env_vars_rejects_mistyped_values[old_school]
  ✅ test_validate_env_vars_rejects_weird_keys[1_]
  ✅ test_validate_env_vars_rejects_weird_keys[hello world]
  ✅ test_validate_env_vars_rejects_weird_keys[hey_arnold!]
  ✅ test_validate_env_vars_rejects_weird_keys[I_\u2665_NY]
  ✅ test_validate_env_vars_rejects_weird_keys[door-]
  ✅ test_validate_env_vars_rejects_weird_keys[METAFLOW_SOMETHING_OR_OTHER]
test.unit.test_serializer_integration
  ✅ test_save_load_pickle_round_trip
  ✅ test_distinct_objects_on_load
  ✅ test_metadata_auto_populates_source_for_pickle
  ✅ test_author_source_is_not_overridden
  ✅ test_custom_serializer_takes_priority
  ✅ test_backward_compat_old_metadata
  ✅ test_backward_compat_no_encoding
  ✅ test_post_init_registration_reaches_existing_datastore
  ✅ test_info_not_populated_when_serializer_returns_no_blobs
  ✅ test_info_not_populated_when_serializer_returns_multi_blob
  ✅ test_pickle_serializer_raises_unpicklable_with_artifact_name
  ✅ test_extension_metaflow_exception_passes_through
  ✅ test_extension_type_error_is_not_mislabeled_unpicklable
  ✅ test_can_serialize_exception_falls_through_to_pickle
  ✅ test_can_deserialize_exception_falls_through
  ✅ test_subclass_lazy_import_stashes_on_child_not_parent
test.unit.test_serializer_lifecycle
  ✅ test_serializer_record_default_fields
  ✅ test_serializer_record_as_dict
  ✅ test_store_separates_all_vs_active
  ✅ test_bootstrap_activates_dependency_free_serializer
  ✅ test_bootstrap_rejects_name_type_mismatch
  ✅ test_bootstrap_missing_module_parks_entry
  ✅ test_bootstrap_missing_class_in_module_broken
  ✅ test_bootstrap_setup_imports_missing_dep_parks_entry
  ✅ test_bootstrap_setup_imports_other_exception_broken
  ✅ test_bootstrap_disabled_toggle
  ✅ test_retry_activates_pending_record_on_module_import
  ✅ test_retry_hits_loop_guard_after_repeated_failure
  ✅ test_retry_fires_via_real_import_hook
  ✅ test_bootstrap_with_no_extensions_still_runs_core
  ✅ test_bootstrap_stamps_core_source_on_record
  ✅ test_bootstrap_entries_accepts_source_override
  ✅ test_bootstrap_applies_disabled_toggle
  ✅ test_list_serializer_status_returns_dicts
  ✅ test_reset_for_tests_clears_registry_state
test.unit.test_serializer_public_api
  ✅ test_register_serializer_for_type_not_public
  ✅ test_serializer_config_not_public
  ✅ test_register_serializer_config_not_public
  ✅ test_iter_registered_configs_not_public
  ✅ test_load_serializer_class_not_public
  ✅ test_plugins_has_no_artifact_serializers_global
  ✅ test_pickle_serializer_is_active_after_import
test.unit.test_sourceless_dag_node
  ✅ test_dynamic_single_step_without_inspectable_source
test.unit.test_system_context
  ✅ test_execution_phase_enum_values
  ✅ test_phase_from_cli_args_none
  ✅ test_phase_from_cli_args_empty
  ✅ test_phase_from_cli_args_run_is_launch
  ✅ test_phase_from_cli_args_resume_is_launch
  ✅ test_phase_from_cli_args_step_is_task
  ✅ test_phase_from_cli_args_init_is_task
  ✅ test_phase_from_cli_args_spin_step_is_task
  ✅ test_phase_from_cli_args_batch_is_trampoline
  ✅ test_phase_from_cli_args_kubernetes_is_trampoline
  ✅ test_phase_from_cli_args_deployment_is_launch
  ✅ test_phase_from_cli_args_unknown_is_launch
  ✅ test_system_context_launch_phase_queries
  ✅ test_system_context_trampoline_phase_queries
  ✅ test_system_context_task_phase_queries
  ✅ test_system_context_initial_values_are_none
  ✅ test_system_context_progressive_update
  ✅ test_system_context_update_overwrites
  ✅ test_system_context_update_invalid_key_raises
  ✅ test_system_context_reset
  ✅ test_system_context_input_paths_initial_none
  ✅ test_system_context_input_paths_update
  ✅ test_decorator_system_ctx_property
  ✅ test_step_decorator_system_ctx_property
  ✅ test_flow_decorator_system_ctx_property
  ✅ test_step_decorator_ctx_variants_are_none
  ✅ test_flow_decorator_ctx_variant_is_none
  ✅ test_step_init_ctx_override
  ✅ test_task_step_completed_ctx_override_success
  ✅ test_task_step_completed_ctx_handles_exception
  ✅ test_task_decorate_ctx_override
  ✅ test_flow_init_ctx_override
  ✅ test_legacy_hook_still_works
  ✅ test_shared_state_publish_and_get
  ✅ test_shared_state_get_missing_namespace
  ✅ test_shared_state_get_missing_key
  ✅ test_shared_state_get_default
  ✅ test_shared_state_has_published_namespace
  ✅ test_shared_state_has_published_key
  ✅ test_shared_state_get_all_published
  ✅ test_shared_state_get_all_published_missing
  ✅ test_shared_state_overwrite_published
  ✅ test_shared_state_multiple_namespaces
  ✅ test_step_isolation_shared_state
  ✅ test_registration_register_and_get_step_decorators
  ✅ test_registration_get_step_decorators_missing_step
  ✅ test_registration_reset_clears_shared_and_decorators
test.unit.test_to_pod
  ✅ test_to_pod_primitives
  ✅ test_to_pod_list_set_tuple
  ✅ test_to_pod_dict
  ✅ test_to_pod_nested
  ✅ test_to_pod_callable_uses_qualname
  ✅ test_to_pod_callable_in_dict
  ✅ test_to_pod_lambda_uses_qualname
test.unit.test_tutorial_01_02_csv_parsing
  ✅ test_playlist_csv_parsing
  ✅ test_stats_csv_parsing
test.cmd.develop.test_stub_generator.TestStubGenerator
  ✅ test_get_element_name_basic_types
  ✅ test_get_element_name_class_objects
  ✅ test_get_element_name_generic_alias_with_class_objects
  ✅ test_get_element_name_nested_generics
  ✅ test_get_element_name_callable_with_class_args
  ✅ test_get_element_name_forward_references
  ✅ test_get_element_name_string_annotations
  ✅ test_get_element_name_self_reference
  ✅ test_function_stub_generation
  ✅ test_class_stub_generation
  ✅ test_exploit_annotation_method
  ✅ test_imports_and_typing_imports
  ✅ test_safe_module_aliasing
  ✅ test_get_element_name_union_types
  ✅ test_get_element_name_tuple_types
  ✅ test_get_element_name_tuple_with_ellipsis
  ✅ test_get_element_name_callable_with_ellipsis
  ✅ test_get_element_name_newtype
  ✅ test_get_element_name_classvar
  ✅ test_get_element_name_final
  ✅ test_get_element_name_literal
  ✅ test_get_element_name_deeply_nested
  ✅ test_get_element_name_error_handling_none_module
  ✅ test_get_element_name_error_handling_eval_failure
  ✅ test_get_element_name_generic_origin_without_name
  ✅ test_get_element_name_builtin_collections
  ✅ test_get_element_name_type_with_special_chars
  ✅ test_get_element_name_nested_classes
  ✅ test_generator_state_isolation
  ✅ test_get_element_name_nonetype_handling
test.cmd.develop.test_stub_generator
  ✅ test_class_objects_in_generic_types_no_leakage
test.cmd.diff.test_metaflow_diff.TestMetaflowDiff
  ✅ test_extract_code_package
  ✅ test_perform_diff_output_false[True]
  ✅ test_perform_diff_output_false[False]
  ✅ test_perform_diff_output_true
  ✅ test_run_op
  ✅ test_op_patch
test.plugins.conda.test_conda_decorator_unit.TestCondaStepDecorator
  ✅ test_default_attributes
  ✅ test_user_defined_python
  ✅ test_user_defined_packages
  ✅ test_libraries_backward_compat
  ✅ test_disabled_flag
  ✅ test_packages_and_libraries_merged
test.plugins.conda.test_conda_environment_unit.TestManifestConcurrentWrites
  ✅ test_concurrent_writes_no_corruption
test.plugins.conda.test_conda_environment_unit.TestCleanupCondaFile
  ✅ test_cleanup_temp_file
  ✅ test_cleanup_nonexistent_file_no_error
test.plugins.conda.test_parsers.TestRequirementsTxtParser
  ✅ test_simple_package
  ✅ test_multiple_packages
  ✅ test_python_version
  ✅ test_comments_and_blank_lines
  ✅ test_inline_comments
  ✅ test_extras
  ✅ test_direct_reference
  ✅ test_environment_markers_rejected
  ✅ test_invalid_requirement
  ✅ test_multiple_python_specs_rejected
  ✅ test_empty_content
  ✅ test_rye_lockfile_skip
test.plugins.conda.test_parsers.TestCondaEnvironmentYmlParser
  ✅ test_simple_deps
  ✅ test_python_version
  ✅ test_no_version
  ✅ test_comments_skipped
  ✅ test_subsection_rejected
  ✅ test_inline_comments
  ✅ test_empty_deps
  ✅ test_double_equals
test.plugins.pip.test_pip_indices
  ✅ test_multiple_extra_index_urls_literal_newline