testit-python-commons 5.1.0.post580__tar.gz → 5.1.1.post580__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/PKG-INFO +1 -1
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/setup.py +1 -1
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/api_client.py +58 -5
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/converter.py +56 -8
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/configurations/properties_names.py +6 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/adapter_manager.py +17 -14
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/adapter_manager_configuration.py +17 -1
- testit_python_commons-5.1.1.post580/src/testit_python_commons/services/test_run_metadata.py +50 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/PKG-INFO +1 -1
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/SOURCES.txt +1 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/README.md +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/setup.cfg +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/attachments_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/auto_tests_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/configurations_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/parameters_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_attributes_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_sections_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_work_items_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/projects_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/sections_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/test_results_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/test_runs_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/work_items_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/workflows_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api_client.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/apis/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/configuration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/exceptions.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_id_work_items_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_put_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_configurations_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_parameters_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_parameters_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_put_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_work_items_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_sections_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_results_id_put_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_results_search_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_id_reruns_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_put_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_work_items_post_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_attachment_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_auto_test_case_id_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_iteration_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_put_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_put_model_auto_test_step_results_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_update_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_case_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_create_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_filter_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_id_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_configuration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_status.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_result_reason_short.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_results_for_test_run_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model_filter.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model_includes.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_include_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_result_update_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_update_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_work_item_identifier_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/available_test_result_outcome.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_filter_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_short_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_empty_test_run_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_link_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_parameter_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_project_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_step_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_work_item_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_get_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_option_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_option_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_put_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_types_enum.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/date_time_range_selector_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/deletion_state.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/detailed_project_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/detailed_project_api_result_workflow.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/failure_category_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/guid_extraction_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/image_resize_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/int32_range_selector_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/int64_range_selector_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/iteration_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/iteration_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_short_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_create_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_post_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_put_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_short_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_update_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_extraction_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_filter.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model_test_result_ids.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/operation.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_iteration_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_short_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_short_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameters_filter_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/problem_details.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_attributes_filter_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_type_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_autotests_count.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_checklists_count.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_created_date.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_shared_steps_count.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_test_cases_count.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_post_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_shared_step.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_with_steps_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/shared_step_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/shared_step_result_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_comment_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_post_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_result_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/tag_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_link_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_outcome.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_short_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_short_response_status.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_step_comment_update_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_update_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_results_filter_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_results_filter_api_model_duration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_api_result_status.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_state.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_api_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/update_empty_test_run_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/update_link_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/validation_problem_details.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_entity_type_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_filter_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_filter_api_model_duration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_id_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_parameter_key_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_parameter_key_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_priority_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_priority_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_select_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_select_api_model_filter.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_short_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_source_type_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_state_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_states.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_type_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/workflow_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/workflow_status_api_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model_utils.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/models/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/rest.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/completion_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/health_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/system_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/test_results_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/workers_api.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api_client.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/apis/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/configuration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/exceptions.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/completion_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/health_status_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/register_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/register_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/set_worker_status_request.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/set_worker_status_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/shutdown_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/test_result_cut_api_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/test_result_save_response.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model_utils.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/models/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/rest.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/app_properties.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/client_configuration.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/bulk_autotest_helper.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/threads_manager.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/threads_for_create_and_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/threads_for_update_and_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/configurations/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/decorators.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/dynamic_methods.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/adapter_mode.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/fixture.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/link.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/link_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/outcome_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/status_type.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/step_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/test_result.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/test_result_with_all_fixture_step_results_model.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/fixture_manager.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/fixture_storage.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/logger.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/plugin_manager.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/retry.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/step_manager.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/step_result_storage.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/sync_storage/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/sync_storage/sync_storage_runner.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/utils.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/step.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/utils/__init__.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/utils/html_escape_utils.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/dependency_links.txt +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/requires.txt +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/top_level.txt +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_app_properties.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_dynamic_methods.py +0 -0
- {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_html_escape_utils.py +0 -0
|
@@ -30,6 +30,9 @@ from api_client_adapters.models import (
|
|
|
30
30
|
from testit_python_commons.client.client_configuration import ClientConfiguration
|
|
31
31
|
from testit_python_commons.client.converter import Converter
|
|
32
32
|
from testit_python_commons.client.helpers.bulk_autotest_helper import BulkAutotestHelper
|
|
33
|
+
from typing import List
|
|
34
|
+
|
|
35
|
+
from testit_python_commons.models.link import Link
|
|
33
36
|
from testit_python_commons.models.test_result import TestResult
|
|
34
37
|
from testit_python_commons.services.logger import adapter_logger
|
|
35
38
|
from testit_python_commons.services.retry import (
|
|
@@ -38,7 +41,6 @@ from testit_python_commons.services.retry import (
|
|
|
38
41
|
retry,
|
|
39
42
|
retry_on_connection_error,
|
|
40
43
|
)
|
|
41
|
-
from typing import List
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
class ApiClientWorker:
|
|
@@ -80,14 +82,25 @@ class ApiClientWorker:
|
|
|
80
82
|
|
|
81
83
|
@adapter_logger
|
|
82
84
|
@retry
|
|
83
|
-
def create_test_run(
|
|
85
|
+
def create_test_run(
|
|
86
|
+
self,
|
|
87
|
+
test_run_name: str = None,
|
|
88
|
+
tags: List[str] = None,
|
|
89
|
+
links: List[Link] = None) -> str:
|
|
84
90
|
test_run_name = f'TestRun_{datetime.today().strftime("%Y-%m-%dT%H:%M:%S")}' if \
|
|
85
91
|
not test_run_name else test_run_name
|
|
86
92
|
model = Converter.test_run_to_test_run_short_model(
|
|
87
93
|
self.__config.get_project_id(),
|
|
88
|
-
test_run_name
|
|
94
|
+
test_run_name,
|
|
95
|
+
tags=tags,
|
|
96
|
+
links=links,
|
|
89
97
|
)
|
|
90
98
|
|
|
99
|
+
logging.info(
|
|
100
|
+
'Creating test run with tags=%s, links=%s',
|
|
101
|
+
tags or [],
|
|
102
|
+
[link.get_url() for link in (links or [])],
|
|
103
|
+
)
|
|
91
104
|
response = self.__test_run_api.adapters_test_runs_post(
|
|
92
105
|
adapters_test_runs_post_request=model)
|
|
93
106
|
|
|
@@ -107,15 +120,55 @@ class ApiClientWorker:
|
|
|
107
120
|
raise Exception(f"Test run by id {test_run_id} not found!")
|
|
108
121
|
|
|
109
122
|
@retry
|
|
110
|
-
def update_test_run(
|
|
123
|
+
def update_test_run(
|
|
124
|
+
self,
|
|
125
|
+
test_run: TestRunApiResult,
|
|
126
|
+
tags: List[str] = None,
|
|
127
|
+
links: List[Link] = None) -> None:
|
|
111
128
|
"""Function updates test run."""
|
|
112
|
-
model = Converter.build_update_empty_request(test_run)
|
|
129
|
+
model = Converter.build_update_empty_request(test_run, tags=tags, links=links)
|
|
113
130
|
logging.debug(f"Updating test run with model: {model}")
|
|
114
131
|
|
|
115
132
|
self.__test_run_api.adapters_test_runs_put(adapters_test_runs_put_request=model)
|
|
116
133
|
|
|
117
134
|
logging.debug(f'Updated testrun (ID: {test_run.id})')
|
|
118
135
|
|
|
136
|
+
@adapter_logger
|
|
137
|
+
def apply_test_run_tags_and_links(
|
|
138
|
+
self,
|
|
139
|
+
test_run_id: str,
|
|
140
|
+
tags: List[str] = None,
|
|
141
|
+
links: List[Link] = None,
|
|
142
|
+
test_run_name: str = None) -> None:
|
|
143
|
+
tags = tags or []
|
|
144
|
+
links = links or []
|
|
145
|
+
if not tags and not links and not test_run_name:
|
|
146
|
+
return
|
|
147
|
+
|
|
148
|
+
try:
|
|
149
|
+
test_run = self.get_test_run(test_run_id)
|
|
150
|
+
name_changed = bool(test_run_name and test_run_name != test_run.name)
|
|
151
|
+
if name_changed:
|
|
152
|
+
test_run.name = test_run_name
|
|
153
|
+
|
|
154
|
+
if not tags and not links and not name_changed:
|
|
155
|
+
return
|
|
156
|
+
|
|
157
|
+
logging.info(
|
|
158
|
+
'Applying test run metadata to %s: tags=%s, links=%s, name=%s',
|
|
159
|
+
test_run_id,
|
|
160
|
+
tags,
|
|
161
|
+
[link.get_url() for link in links],
|
|
162
|
+
test_run_name,
|
|
163
|
+
)
|
|
164
|
+
self.update_test_run(test_run, tags=tags, links=links)
|
|
165
|
+
except Exception as exc:
|
|
166
|
+
logging.error(
|
|
167
|
+
'Cannot apply tags/links to test run %s: %s',
|
|
168
|
+
test_run_id,
|
|
169
|
+
exc,
|
|
170
|
+
)
|
|
171
|
+
|
|
119
172
|
@adapter_logger
|
|
120
173
|
def set_test_run_id(self, test_run_id: str) -> None:
|
|
121
174
|
self.__config.set_test_run_id(test_run_id)
|
|
@@ -48,11 +48,22 @@ from testit_python_commons.services.logger import adapter_logger
|
|
|
48
48
|
class Converter:
|
|
49
49
|
@staticmethod
|
|
50
50
|
@adapter_logger
|
|
51
|
-
def test_run_to_test_run_short_model(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
def test_run_to_test_run_short_model(
|
|
52
|
+
project_id: str,
|
|
53
|
+
name: str,
|
|
54
|
+
tags: List[str] = None,
|
|
55
|
+
links: List[Link] = None) -> AdaptersTestRunsPostRequest:
|
|
56
|
+
kwargs = {
|
|
57
|
+
'project_id': project_id,
|
|
58
|
+
'name': name,
|
|
59
|
+
}
|
|
60
|
+
if tags:
|
|
61
|
+
kwargs['tags'] = tags
|
|
62
|
+
if links:
|
|
63
|
+
kwargs['links'] = [
|
|
64
|
+
Converter.link_to_create_link_api_model(link) for link in links
|
|
65
|
+
]
|
|
66
|
+
return AdaptersTestRunsPostRequest(**kwargs)
|
|
56
67
|
|
|
57
68
|
@staticmethod
|
|
58
69
|
@adapter_logger
|
|
@@ -61,14 +72,51 @@ class Converter:
|
|
|
61
72
|
|
|
62
73
|
@classmethod
|
|
63
74
|
@adapter_logger
|
|
64
|
-
def build_update_empty_request(
|
|
75
|
+
def build_update_empty_request(
|
|
76
|
+
cls,
|
|
77
|
+
test_run: TestRunApiResult,
|
|
78
|
+
tags: List[str] = None,
|
|
79
|
+
links: List[Link] = None) -> AdaptersTestRunsPutRequest:
|
|
80
|
+
merged_tags = list(test_run.tags or [])
|
|
81
|
+
for tag in tags or []:
|
|
82
|
+
if tag not in merged_tags:
|
|
83
|
+
merged_tags.append(tag)
|
|
84
|
+
|
|
85
|
+
update_links = list(map(cls.build_update_link_api_model, test_run.links or []))
|
|
86
|
+
existing_urls = {link.url for link in (test_run.links or [])}
|
|
87
|
+
for link in links or []:
|
|
88
|
+
if link.get_url() not in existing_urls:
|
|
89
|
+
update_links.append(cls.link_to_update_link_api_model(link))
|
|
90
|
+
existing_urls.add(link.get_url())
|
|
91
|
+
|
|
65
92
|
return AdaptersTestRunsPutRequest(
|
|
66
93
|
id=test_run.id,
|
|
67
94
|
name=test_run.name,
|
|
68
95
|
description=test_run.description,
|
|
69
96
|
launch_source=test_run.launch_source,
|
|
70
|
-
attachments=list(map(cls.build_assign_attachment_api_model, test_run.attachments)),
|
|
71
|
-
links=
|
|
97
|
+
attachments=list(map(cls.build_assign_attachment_api_model, test_run.attachments or [])),
|
|
98
|
+
links=update_links,
|
|
99
|
+
tags=merged_tags,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
@staticmethod
|
|
103
|
+
@adapter_logger
|
|
104
|
+
def link_to_create_link_api_model(link: Link) -> CreateLinkApiModel:
|
|
105
|
+
return CreateLinkApiModel(
|
|
106
|
+
url=link.get_url(),
|
|
107
|
+
title=link.get_title(),
|
|
108
|
+
type=LinkType(link.get_link_type() or "Related"),
|
|
109
|
+
description=link.get_description(),
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
@staticmethod
|
|
113
|
+
@adapter_logger
|
|
114
|
+
def link_to_update_link_api_model(link: Link) -> UpdateLinkApiModel:
|
|
115
|
+
return UpdateLinkApiModel(
|
|
116
|
+
url=link.get_url(),
|
|
117
|
+
title=link.get_title(),
|
|
118
|
+
type=LinkType(link.get_link_type() or "Related"),
|
|
119
|
+
description=link.get_description(),
|
|
72
120
|
)
|
|
73
121
|
|
|
74
122
|
@staticmethod
|
|
@@ -7,6 +7,8 @@ class PropertiesNames:
|
|
|
7
7
|
CONFIGURATION_ID = 'configurationid'
|
|
8
8
|
TEST_RUN_ID = 'testrunid'
|
|
9
9
|
TEST_RUN_NAME = 'testrunname'
|
|
10
|
+
TEST_RUN_TAGS = 'testruntags'
|
|
11
|
+
TEST_RUN_LINKS = 'testrunlinks'
|
|
10
12
|
TMS_PROXY = 'tmsproxy'
|
|
11
13
|
ADAPTER_MODE = 'adaptermode'
|
|
12
14
|
CERT_VALIDATION = 'certvalidation'
|
|
@@ -23,6 +25,8 @@ ENV_TO_PROPERTY = {
|
|
|
23
25
|
'TMS_CONFIGURATION_ID': PropertiesNames.CONFIGURATION_ID,
|
|
24
26
|
'TMS_TEST_RUN_ID': PropertiesNames.TEST_RUN_ID,
|
|
25
27
|
'TMS_TEST_RUN_NAME': PropertiesNames.TEST_RUN_NAME,
|
|
28
|
+
'TMS_TEST_RUN_TAGS': PropertiesNames.TEST_RUN_TAGS,
|
|
29
|
+
'TMS_TEST_RUN_LINKS': PropertiesNames.TEST_RUN_LINKS,
|
|
26
30
|
'TMS_PROXY': PropertiesNames.TMS_PROXY,
|
|
27
31
|
'TMS_ADAPTER_MODE': PropertiesNames.ADAPTER_MODE,
|
|
28
32
|
'TMS_CERT_VALIDATION': PropertiesNames.CERT_VALIDATION,
|
|
@@ -40,6 +44,8 @@ OPTION_TO_PROPERTY = {
|
|
|
40
44
|
'set_configuration_id': PropertiesNames.CONFIGURATION_ID,
|
|
41
45
|
'set_test_run_id': PropertiesNames.TEST_RUN_ID,
|
|
42
46
|
'set_test_run_name': PropertiesNames.TEST_RUN_NAME,
|
|
47
|
+
'set_test_run_tags': PropertiesNames.TEST_RUN_TAGS,
|
|
48
|
+
'set_test_run_links': PropertiesNames.TEST_RUN_LINKS,
|
|
43
49
|
'set_tms_proxy': PropertiesNames.TMS_PROXY,
|
|
44
50
|
'set_adapter_mode': PropertiesNames.ADAPTER_MODE,
|
|
45
51
|
'set_cert_validation': PropertiesNames.CERT_VALIDATION,
|
|
@@ -34,6 +34,7 @@ class AdapterManager:
|
|
|
34
34
|
self.__fixture_manager = fixture_manager
|
|
35
35
|
self.__test_result_map = {}
|
|
36
36
|
self.__test_results = []
|
|
37
|
+
self.__test_run_metadata_applied = False
|
|
37
38
|
|
|
38
39
|
# Sync Storage integration
|
|
39
40
|
self.__sync_storage_runner = None
|
|
@@ -106,33 +107,35 @@ class AdapterManager:
|
|
|
106
107
|
test_run_id = self.__config.get_test_run_id()
|
|
107
108
|
|
|
108
109
|
if test_run_id:
|
|
109
|
-
self.
|
|
110
|
+
self.__apply_test_run_metadata_early(test_run_id)
|
|
110
111
|
|
|
111
112
|
return test_run_id or ""
|
|
112
113
|
|
|
113
114
|
result = self.__config.get_test_run_id()
|
|
114
115
|
if result is not None:
|
|
116
|
+
self.__apply_test_run_metadata_early(result)
|
|
115
117
|
return result
|
|
116
118
|
|
|
117
119
|
# create if not exists
|
|
118
120
|
test_run_name = self.__config.get_test_run_name()
|
|
119
|
-
return self.__api_client.create_test_run(
|
|
121
|
+
return self.__api_client.create_test_run(
|
|
122
|
+
test_run_name if test_run_name else "",
|
|
123
|
+
tags=self.__config.get_test_run_tags(),
|
|
124
|
+
links=self.__config.get_test_run_links(),
|
|
125
|
+
)
|
|
120
126
|
|
|
121
127
|
@adapter_logger
|
|
122
|
-
def
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if not test_run_name:
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
test_run = self.__api_client.get_test_run(test_run_id)
|
|
129
|
-
|
|
130
|
-
if test_run_name == test_run.name:
|
|
128
|
+
def __apply_test_run_metadata_early(self, test_run_id: str) -> None:
|
|
129
|
+
if self.__test_run_metadata_applied:
|
|
131
130
|
return
|
|
132
131
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
self.__test_run_metadata_applied = True
|
|
133
|
+
self.__api_client.apply_test_run_tags_and_links(
|
|
134
|
+
test_run_id,
|
|
135
|
+
tags=self.__config.get_test_run_tags(),
|
|
136
|
+
links=self.__config.get_test_run_links(),
|
|
137
|
+
test_run_name=self.__config.get_test_run_name(),
|
|
138
|
+
)
|
|
136
139
|
|
|
137
140
|
@adapter_logger
|
|
138
141
|
def get_autotests_for_launch(self):
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
1
3
|
from testit_python_commons.models.adapter_mode import AdapterMode
|
|
4
|
+
from testit_python_commons.models.link import Link
|
|
2
5
|
from testit_python_commons.services.logger import adapter_logger
|
|
6
|
+
from testit_python_commons.services.test_run_metadata import parse_test_run_links, parse_test_run_tags
|
|
3
7
|
from testit_python_commons.services.utils import Utils
|
|
4
8
|
from testit_python_commons.configurations.properties_names import PropertiesNames
|
|
5
9
|
|
|
10
|
+
|
|
6
11
|
class AdapterManagerConfiguration:
|
|
7
12
|
__test_run_id = None
|
|
8
13
|
|
|
@@ -14,8 +19,11 @@ class AdapterManagerConfiguration:
|
|
|
14
19
|
self.__automatic_creation_test_cases = Utils.convert_value_str_to_bool(
|
|
15
20
|
app_properties.get(PropertiesNames.AUTOMATIC_CREATION_TEST_CASES).lower())
|
|
16
21
|
|
|
17
|
-
self.__import_realtime = Utils.convert_value_str_to_bool(
|
|
22
|
+
self.__import_realtime = Utils.convert_value_str_to_bool(
|
|
23
|
+
app_properties.get(PropertiesNames.IMPORT_REALTIME).lower())
|
|
18
24
|
self.__test_run_name = app_properties.get(PropertiesNames.TEST_RUN_NAME)
|
|
25
|
+
self.__test_run_tags = parse_test_run_tags(app_properties.get(PropertiesNames.TEST_RUN_TAGS))
|
|
26
|
+
self.__test_run_links = parse_test_run_links(app_properties.get(PropertiesNames.TEST_RUN_LINKS))
|
|
19
27
|
|
|
20
28
|
@adapter_logger
|
|
21
29
|
def get_test_run_id(self):
|
|
@@ -29,6 +37,14 @@ class AdapterManagerConfiguration:
|
|
|
29
37
|
def get_test_run_name(self):
|
|
30
38
|
return self.__test_run_name
|
|
31
39
|
|
|
40
|
+
@adapter_logger
|
|
41
|
+
def get_test_run_tags(self) -> List[str]:
|
|
42
|
+
return self.__test_run_tags
|
|
43
|
+
|
|
44
|
+
@adapter_logger
|
|
45
|
+
def get_test_run_links(self) -> List[Link]:
|
|
46
|
+
return self.__test_run_links
|
|
47
|
+
|
|
32
48
|
@adapter_logger
|
|
33
49
|
def get_mode(self):
|
|
34
50
|
return self.__adapter_mode
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
|
|
5
|
+
from testit_python_commons.models.link import Link
|
|
6
|
+
from testit_python_commons.services.utils import Utils
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def parse_test_run_tags(raw: Optional[str]) -> List[str]:
|
|
10
|
+
if not raw or not str(raw).strip():
|
|
11
|
+
return []
|
|
12
|
+
|
|
13
|
+
value = str(raw).strip()
|
|
14
|
+
if value.startswith('['):
|
|
15
|
+
try:
|
|
16
|
+
parsed = json.loads(value)
|
|
17
|
+
except json.JSONDecodeError:
|
|
18
|
+
logging.warning('Invalid test run tags JSON: %s', value)
|
|
19
|
+
return []
|
|
20
|
+
if not isinstance(parsed, list):
|
|
21
|
+
logging.warning('Test run tags JSON must be an array: %s', value)
|
|
22
|
+
return []
|
|
23
|
+
return [str(tag).strip() for tag in parsed if str(tag).strip()]
|
|
24
|
+
|
|
25
|
+
return [tag.strip() for tag in value.split(',') if tag.strip()]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def parse_test_run_links(raw: Optional[str]) -> List[Link]:
|
|
29
|
+
if not raw or not str(raw).strip():
|
|
30
|
+
return []
|
|
31
|
+
|
|
32
|
+
value = str(raw).strip()
|
|
33
|
+
try:
|
|
34
|
+
parsed = json.loads(value)
|
|
35
|
+
except json.JSONDecodeError:
|
|
36
|
+
logging.warning('Invalid test run links JSON: %s', value)
|
|
37
|
+
return []
|
|
38
|
+
|
|
39
|
+
if not isinstance(parsed, list):
|
|
40
|
+
logging.warning('Test run links JSON must be an array: %s', value)
|
|
41
|
+
return []
|
|
42
|
+
|
|
43
|
+
links = []
|
|
44
|
+
for item in parsed:
|
|
45
|
+
if not isinstance(item, dict) or not item.get('url'):
|
|
46
|
+
logging.warning('Skipping invalid test run link (url is required): %s', item)
|
|
47
|
+
continue
|
|
48
|
+
links.append(Utils.convert_link_dict_to_link_model(item))
|
|
49
|
+
|
|
50
|
+
return links
|
|
@@ -249,6 +249,7 @@ src/testit_python_commons/services/plugin_manager.py
|
|
|
249
249
|
src/testit_python_commons/services/retry.py
|
|
250
250
|
src/testit_python_commons/services/step_manager.py
|
|
251
251
|
src/testit_python_commons/services/step_result_storage.py
|
|
252
|
+
src/testit_python_commons/services/test_run_metadata.py
|
|
252
253
|
src/testit_python_commons/services/utils.py
|
|
253
254
|
src/testit_python_commons/services/sync_storage/__init__.py
|
|
254
255
|
src/testit_python_commons/services/sync_storage/sync_storage_runner.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|