Skip to content

Address comment

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

Allow FlowDecorators, FlowMutators and StepMutators to add_to_package #3082

Address comment
2ef9783
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results — Unit succeeded Apr 28, 2026 in 0s

338 passed, 0 failed and 3 skipped

Tests passed successfully

✅ junit-unit.xml

341 tests were completed in 44s with 338 passed, 0 failed and 3 skipped.

Test suite Passed Failed Skipped Time
pytest 338✅ 3⚪ 44s

✅ 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.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_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_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_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_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_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