name: kolla-drift-test run_id: commands[0] env HOME: /home/zuul env LANG: C.UTF-8 env PATH: /home/zuul/src/github.com/osism/generics/.tox/kolla-drift-test/bin:/usr/local/bin:/usr/bin:/bin:/usr/games env PIP_DISABLE_PIP_VERSION_CHECK: 1 env PIP_USER: 0 env PYTHONHASHSEED: 3145002858 env PYTHONIOENCODING: utf-8 env TOX_ENV_DIR: /home/zuul/src/github.com/osism/generics/.tox/kolla-drift-test env TOX_ENV_NAME: kolla-drift-test env TOX_WORK_DIR: /home/zuul/src/github.com/osism/generics/.tox env VIRTUAL_ENV: /home/zuul/src/github.com/osism/generics/.tox/kolla-drift-test metadata pid: 1794 cwd: /home/zuul/src/github.com/osism/generics allow: /home/zuul/src/github.com/osism/generics/.tox/kolla-drift-test/bin/* cmd: pytest tests/kolla_drift/ -v exit_code: 0 ============================= test session starts ============================== platform linux -- Python 3.11.2, pytest-8.3.4, pluggy-1.6.0 -- /home/zuul/src/github.com/osism/generics/.tox/kolla-drift-test/bin/python cachedir: .tox/kolla-drift-test/.pytest_cache rootdir: /home/zuul/src/github.com/osism/generics collecting ... collected 146 items tests/kolla_drift/test_config.py::test_load_minimal_config PASSED [ 0%] tests/kolla_drift/test_config.py::test_osism_root_and_paths_are_unknown_keys PASSED [ 1%] tests/kolla_drift/test_config.py::test_unknown_top_level_key_errors PASSED [ 2%] tests/kolla_drift/test_config.py::test_allowlist_broad_match PASSED [ 2%] tests/kolla_drift/test_config.py::test_apply_marks_matching_drift_allowlisted PASSED [ 3%] tests/kolla_drift/test_config.py::test_apply_returns_unmatched_drift_unchanged PASSED [ 4%] tests/kolla_drift/test_config.py::test_allowlist_narrow_by_alias PASSED [ 4%] tests/kolla_drift/test_config.py::test_allowlist_very_narrow PASSED [ 5%] tests/kolla_drift/test_config.py::test_allowlist_empty_reason_errors PASSED [ 6%] tests/kolla_drift/test_config.py::test_allowlist_no_file_returns_empty PASSED [ 6%] tests/kolla_drift/test_config.py::test_sources_parsed PASSED [ 7%] tests/kolla_drift/test_config.py::test_default_owner_defaults_when_absent PASSED [ 8%] tests/kolla_drift/test_config.py::test_unknown_source_key_errors PASSED [ 8%] tests/kolla_drift/test_config.py::test_stale_flags_unused_entry PASSED [ 9%] tests/kolla_drift/test_config.py::test_stale_scoped_to_ran_plugins PASSED [ 10%] tests/kolla_drift/test_config.py::test_prefix_matches_service_and_subgroups PASSED [ 10%] tests/kolla_drift/test_config.py::test_prefix_does_not_match_adjacent_name PASSED [ 11%] tests/kolla_drift/test_config.py::test_exact_is_default_and_unchanged PASSED [ 12%] tests/kolla_drift/test_config.py::test_allowlist_unknown_match_value_errors PASSED [ 13%] tests/kolla_drift/test_config.py::test_allowlist_empty_image_errors PASSED [ 13%] tests/kolla_drift/test_config.py::test_prefix_entry_stale_when_no_match PASSED [ 14%] tests/kolla_drift/test_config.py::test_releases_and_release_refs_parse PASSED [ 15%] tests/kolla_drift/test_config.py::test_releases_default_empty PASSED [ 15%] tests/kolla_drift/test_config.py::test_to_remote_only_clears_base_dirs_preserves_rest PASSED [ 16%] tests/kolla_drift/test_driver.py::test_base_dir_not_found_exits_2 PASSED [ 17%] tests/kolla_drift/test_driver_stale.py::test_stale_entry_forces_exit_1_and_is_reported PASSED [ 17%] tests/kolla_drift/test_driver_stale.py::test_no_allowlist_ignores_invalid_file PASSED [ 18%] tests/kolla_drift/test_enablement.py::test_canon_normalizes_hyphen_to_underscore PASSED [ 19%] tests/kolla_drift/test_enablement.py::test_parse_enable_flags_strips_prefix PASSED [ 19%] tests/kolla_drift/test_enablement.py::test_truthy_enables_literal_only_and_canon PASSED [ 20%] tests/kolla_drift/test_enablement.py::test_parse_build_set_unions_both_blocks_canon PASSED [ 21%] tests/kolla_drift/test_enablement.py::test_release_range_derives_from_file_set PASSED [ 21%] tests/kolla_drift/test_enablement.py::test_release_range_override_wins PASSED [ 22%] tests/kolla_drift/test_enablement.py::test_upstream_enable_keys_monolithic PASSED [ 23%] tests/kolla_drift/test_enablement.py::test_upstream_enable_keys_split_dir PASSED [ 23%] tests/kolla_drift/test_enablement.py::test_osism_enable_ids_truthy PASSED [ 24%] tests/kolla_drift/test_enablement.py::test_osism_enable_ids_explicit_includes_all_keys PASSED [ 25%] tests/kolla_drift/test_enablement.py::test_osism_enable_ids_unknown_scope_raises PASSED [ 26%] tests/kolla_drift/test_inventory_sections.py::test_returns_groups_with_sorted_members PASSED [ 26%] tests/kolla_drift/test_inventory_sections.py::test_empty_group_has_no_members PASSED [ 27%] tests/kolla_drift/test_kolla_docker.py::test_normalises_hyphen_to_underscore PASSED [ 28%] tests/kolla_drift/test_kolla_docker.py::test_empty PASSED [ 28%] tests/kolla_drift/test_kolla_enablement_build.py::test_flags_enabled_buildable_not_built PASSED [ 29%] tests/kolla_drift/test_kolla_enablement_build.py::test_allowlist_marks_allowlisted PASSED [ 30%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_truthy_scope_flags_absent_truthy_services PASSED [ 30%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_explicit_scope_also_flags_dead_no_flags PASSED [ 31%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_present_upstream_is_not_orphan PASSED [ 32%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_union_across_releases_not_intersection PASSED [ 32%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_allowlist_marks_allowlisted PASSED [ 33%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_run_uses_explicit_default PASSED [ 34%] tests/kolla_drift/test_kolla_enablement_orphan.py::test_empty_release_range_raises PASSED [ 34%] tests/kolla_drift/test_kolla_inventory.py::test_flags_upstream_only_groups PASSED [ 35%] tests/kolla_drift/test_kolla_inventory.py::test_red_entry_carries_members PASSED [ 36%] tests/kolla_drift/test_kolla_inventory.py::test_exact_and_prefix_allowlist_match PASSED [ 36%] tests/kolla_drift/test_kolla_orphan_config.py::test_flags_dead_service_companion_vars PASSED [ 37%] tests/kolla_drift/test_kolla_orphan_config.py::test_found_src_points_to_each_file PASSED [ 38%] tests/kolla_drift/test_kolla_orphan_config.py::test_no_dead_services_returns_empty PASSED [ 39%] tests/kolla_drift/test_kolla_orphan_config.py::test_respects_orphan_allowlist PASSED [ 39%] tests/kolla_drift/test_kolla_orphan_config.py::test_own_allowlist_marks_allowlisted PASSED [ 40%] tests/kolla_drift/test_kolla_secrets_orphan.py::test_flags_orphan_secrets_per_release PASSED [ 41%] tests/kolla_drift/test_kolla_secrets_orphan.py::test_present_secret_is_not_orphan PASSED [ 41%] tests/kolla_drift/test_kolla_secrets_orphan.py::test_allowlist_marks_allowlisted PASSED [ 42%] tests/kolla_drift/test_kolla_secrets_orphan.py::test_missing_template_skips_release PASSED [ 43%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_flags_all_inert_keys PASSED [ 43%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_enabled_and_buildable_key_is_an_add PASSED [ 44%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_disabled_or_unbuildable_key_is_a_remove PASSED [ 45%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_add_and_remove_render_as_separate_blocks PASSED [ 45%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_hyphen_underscore_is_not_drift PASSED [ 46%] tests/kolla_drift/test_kolla_version_chain_inner.py::test_allowlist_marks_allowlisted PASSED [ 47%] tests/kolla_drift/test_kolla_version_chain_upstream.py::test_flags_services_without_template_key PASSED [ 47%] tests/kolla_drift/test_kolla_version_chain_upstream.py::test_present_service_not_flagged PASSED [ 48%] tests/kolla_drift/test_kolla_version_chain_upstream.py::test_allowlist_marks_allowlisted PASSED [ 49%] tests/kolla_drift/test_model.py::test_drift_entry_has_all_fields PASSED [ 50%] tests/kolla_drift/test_model.py::test_drift_entry_to_dict_for_json PASSED [ 50%] tests/kolla_drift/test_plugin_registry.py::test_registry_is_a_list PASSED [ 51%] tests/kolla_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [ 52%] tests/kolla_drift/test_plugin_registry.py::test_kolla_inner_plugin_registered PASSED [ 52%] tests/kolla_drift/test_plugin_registry.py::test_kolla_upstream_plugin_registered PASSED [ 53%] tests/kolla_drift/test_plugin_registry.py::test_kolla_inventory_plugin_registered PASSED [ 54%] tests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_build_plugin_registered PASSED [ 54%] tests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_orphan_plugin_registered PASSED [ 55%] tests/kolla_drift/test_plugin_registry.py::test_kolla_secrets_orphan_plugin_registered PASSED [ 56%] tests/kolla_drift/test_plugin_registry.py::test_kolla_orphan_config_plugin_registered PASSED [ 56%] tests/kolla_drift/test_plugin_registry.py::test_every_plugin_has_summary_and_remediation PASSED [ 57%] tests/kolla_drift/test_plugin_registry.py::test_default_config_enables_every_registered_plugin PASSED [ 58%] tests/kolla_drift/test_plugin_registry.py::test_plugins_in_lifecycle_order PASSED [ 58%] tests/kolla_drift/test_report.py::test_single_plugin_groups_sorts_and_renders PASSED [ 59%] tests/kolla_drift/test_report.py::test_orders_blocks_by_plugins_list PASSED [ 60%] tests/kolla_drift/test_report.py::test_build_style_splits_one_block_per_ref_pair PASSED [ 60%] tests/kolla_drift/test_report.py::test_allowlisted_excluded_from_blocks_and_count PASSED [ 61%] tests/kolla_drift/test_report.py::test_empty_returns_empty_list PASSED [ 62%] tests/kolla_drift/test_report.py::test_entry_summary_remediation_override_plugin_default PASSED [ 63%] tests/kolla_drift/test_report.py::test_lists_image_not_alias PASSED [ 63%] tests/kolla_drift/test_sbom_map.py::test_extracts_keys PASSED [ 64%] tests/kolla_drift/test_sbom_map.py::test_missing_map_raises PASSED [ 65%] tests/kolla_drift/test_secrets_map.py::test_extracts_top_level_keys PASSED [ 65%] tests/kolla_drift/test_secrets_map.py::test_ignores_comments_indented_and_markers PASSED [ 66%] tests/kolla_drift/test_secrets_map.py::test_empty_input PASSED [ 67%] tests/kolla_drift/test_source.py::test_read_local_working_tree_when_found PASSED [ 67%] tests/kolla_drift/test_source.py::test_read_not_found_in_base_dir_is_mode_b_error PASSED [ 68%] tests/kolla_drift/test_source.py::test_read_local_file_absent_is_error_not_remote PASSED [ 69%] tests/kolla_drift/test_source.py::test_read_remote_fallback_when_not_found PASSED [ 69%] tests/kolla_drift/test_source.py::test_read_no_base_dir_is_remote PASSED [ 70%] tests/kolla_drift/test_source.py::test_first_base_dir_with_the_repo_wins PASSED [ 71%] tests/kolla_drift/test_source.py::test_pinned_local_git_repo_reads_at_pin_ref PASSED [ 71%] tests/kolla_drift/test_source.py::test_pinned_non_git_dir_falls_back_to_remote PASSED [ 72%] tests/kolla_drift/test_source.py::test_pinned_non_git_dir_no_fallback_is_mode_b PASSED [ 73%] tests/kolla_drift/test_source.py::test_read_remote_404_errors PASSED [ 73%] tests/kolla_drift/test_source.py::test_read_network_error PASSED [ 74%] tests/kolla_drift/test_source.py::test_read_underscore_repo_translates_to_hyphen PASSED [ 75%] tests/kolla_drift/test_source.py::test_read_optional_present_local PASSED [ 76%] tests/kolla_drift/test_source.py::test_read_optional_missing_local_returns_none PASSED [ 76%] tests/kolla_drift/test_source.py::test_read_optional_404_returns_none PASSED [ 77%] tests/kolla_drift/test_source.py::test_read_optional_network_error_still_raises PASSED [ 78%] tests/kolla_drift/test_source.py::test_read_optional_underscore_repo_translates_to_hyphen PASSED [ 78%] tests/kolla_drift/test_source.py::test_list_dir_local PASSED [ 79%] tests/kolla_drift/test_source.py::test_list_dir_remote PASSED [ 80%] tests/kolla_drift/test_source.py::test_list_dir_remote_404_errors PASSED [ 80%] tests/kolla_drift/test_source.py::test_list_dir_underscore_repo_translates_to_hyphen PASSED [ 81%] tests/kolla_drift/test_source.py::test_source_override_redirects_owner_and_ref PASSED [ 82%] tests/kolla_drift/test_source.py::test_list_dir_local_dirs_only_excludes_files PASSED [ 82%] tests/kolla_drift/test_source.py::test_list_dir_remote_dirs_only_filters_type PASSED [ 83%] tests/kolla_drift/test_source.py::test_list_dir_at_ref_uses_explicit_ref_and_owner PASSED [ 84%] tests/kolla_drift/test_source.py::test_list_dir_at_ref_404_raises PASSED [ 84%] tests/kolla_drift/test_source.py::test_release_to_ref_prefers_stable PASSED [ 85%] tests/kolla_drift/test_source.py::test_release_to_ref_falls_back_through_candidates PASSED [ 86%] tests/kolla_drift/test_source.py::test_release_to_ref_treats_422_as_absent PASSED [ 86%] tests/kolla_drift/test_source.py::test_release_to_ref_uses_eom_tag_last PASSED [ 87%] tests/kolla_drift/test_source.py::test_release_to_ref_none_raises PASSED [ 88%] tests/kolla_drift/test_source.py::test_release_to_ref_override_wins PASSED [ 89%] tests/kolla_drift/test_source.py::test_read_at_ref_returns_bytes_at_explicit_ref PASSED [ 89%] tests/kolla_drift/test_source.py::test_read_at_ref_optional_404_returns_none PASSED [ 90%] tests/kolla_drift/test_source.py::test_read_at_ref_404_raises_when_not_optional PASSED [ 91%] tests/kolla_drift/test_source.py::test_describe_resolution_local_and_remote PASSED [ 91%] tests/kolla_drift/test_source.py::test_describe_resolution_mode_b_raises PASSED [ 92%] tests/kolla_drift/test_source.py::test_git_show_multi_ref_from_one_clone PASSED [ 93%] tests/kolla_drift/test_source.py::test_git_show_optional_absent_path PASSED [ 93%] tests/kolla_drift/test_source.py::test_git_ls_tree_returns_basenames_and_dirs_only PASSED [ 94%] tests/kolla_drift/test_source.py::test_resolve_local_ref_finds_non_origin_remote PASSED [ 95%] tests/kolla_drift/test_source.py::test_git_show_unresolvable_ref_raises PASSED [ 95%] tests/kolla_drift/test_source.py::test_git_ref_exists PASSED [ 96%] tests/kolla_drift/test_source.py::test_read_at_ref_local_git PASSED [ 97%] tests/kolla_drift/test_source.py::test_describe_resolution_pinned_local_tag PASSED [ 97%] tests/kolla_drift/test_source.py::test_read_at_ref_unpinned_local_dir_is_remote PASSED [ 98%] tests/kolla_drift/test_versions_template.py::test_extracts_distinct_keys PASSED [ 99%] tests/kolla_drift/test_versions_template.py::test_empty_input PASSED [100%] ============================= 146 passed in 1.28s ==============================