testit-python-commons 5.1.0__tar.gz → 5.1.1__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.
Files changed (262) hide show
  1. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/PKG-INFO +1 -1
  2. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/setup.py +1 -1
  3. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/api_client.py +58 -5
  4. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/converter.py +56 -8
  5. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/configurations/properties_names.py +6 -0
  6. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/adapter_manager.py +17 -14
  7. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/adapter_manager_configuration.py +17 -1
  8. testit_python_commons-5.1.1/src/testit_python_commons/services/test_run_metadata.py +50 -0
  9. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons.egg-info/PKG-INFO +1 -1
  10. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons.egg-info/SOURCES.txt +1 -0
  11. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/README.md +0 -0
  12. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/setup.cfg +0 -0
  13. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/__init__.py +0 -0
  14. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/__init__.py +0 -0
  15. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/attachments_api.py +0 -0
  16. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/auto_tests_api.py +0 -0
  17. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/configurations_api.py +0 -0
  18. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/parameters_api.py +0 -0
  19. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/project_attributes_api.py +0 -0
  20. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/project_sections_api.py +0 -0
  21. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/project_work_items_api.py +0 -0
  22. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/projects_api.py +0 -0
  23. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/sections_api.py +0 -0
  24. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/test_results_api.py +0 -0
  25. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/test_runs_api.py +0 -0
  26. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/work_items_api.py +0 -0
  27. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api/workflows_api.py +0 -0
  28. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/api_client.py +0 -0
  29. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/apis/__init__.py +0 -0
  30. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/configuration.py +0 -0
  31. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/exceptions.py +0 -0
  32. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/__init__.py +0 -0
  33. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_auto_tests_id_work_items_post_request.py +0 -0
  34. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_auto_tests_post_request.py +0 -0
  35. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_auto_tests_put_request.py +0 -0
  36. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_auto_tests_search_post_request.py +0 -0
  37. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_configurations_search_post_request.py +0 -0
  38. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_parameters_post_request.py +0 -0
  39. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_parameters_search_post_request.py +0 -0
  40. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_projects_post_request.py +0 -0
  41. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_projects_project_id_attributes_put_request.py +0 -0
  42. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_projects_project_id_attributes_search_post_request.py +0 -0
  43. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_projects_project_id_work_items_search_post_request.py +0 -0
  44. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_projects_search_post_request.py +0 -0
  45. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_sections_post_request.py +0 -0
  46. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_test_results_id_put_request.py +0 -0
  47. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_test_results_search_post_request.py +0 -0
  48. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_test_runs_id_reruns_post_request.py +0 -0
  49. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_test_runs_post_request.py +0 -0
  50. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_test_runs_put_request.py +0 -0
  51. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/adapters_work_items_post_request.py +0 -0
  52. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/assign_attachment_api_model.py +0 -0
  53. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/assign_auto_test_case_id_api_model.py +0 -0
  54. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/assign_iteration_api_model.py +0 -0
  55. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/attachment_api_result.py +0 -0
  56. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/attachment_model.py +0 -0
  57. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/attachment_put_model.py +0 -0
  58. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/attachment_put_model_auto_test_step_results_model.py +0 -0
  59. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/attachment_update_request.py +0 -0
  60. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test.py +0 -0
  61. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_api_result.py +0 -0
  62. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_case_api_model.py +0 -0
  63. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_create_api_model.py +0 -0
  64. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_filter_api_model.py +0 -0
  65. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_id_model.py +0 -0
  66. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_model.py +0 -0
  67. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_model_last_test_result_configuration.py +0 -0
  68. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_model_last_test_result_status.py +0 -0
  69. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_result_reason_short.py +0 -0
  70. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_results_for_test_run_model.py +0 -0
  71. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_search_api_model.py +0 -0
  72. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_search_api_model_filter.py +0 -0
  73. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_search_api_model_includes.py +0 -0
  74. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_search_include_api_model.py +0 -0
  75. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step.py +0 -0
  76. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step_api_model.py +0 -0
  77. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step_api_result.py +0 -0
  78. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step_model.py +0 -0
  79. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step_result.py +0 -0
  80. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_step_result_update_request.py +0 -0
  81. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_update_api_model.py +0 -0
  82. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/auto_test_work_item_identifier_api_result.py +0 -0
  83. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/available_test_result_outcome.py +0 -0
  84. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/configuration_filter_model.py +0 -0
  85. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/configuration_model.py +0 -0
  86. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/configuration_short_model.py +0 -0
  87. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_empty_test_run_api_model.py +0 -0
  88. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_link_api_model.py +0 -0
  89. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_parameter_api_model.py +0 -0
  90. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_project_api_model.py +0 -0
  91. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_step_api_model.py +0 -0
  92. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/create_work_item_api_model.py +0 -0
  93. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_api_result.py +0 -0
  94. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_get_model.py +0 -0
  95. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_option_api_result.py +0 -0
  96. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_option_model.py +0 -0
  97. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_put_model.py +0 -0
  98. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_type.py +0 -0
  99. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/custom_attribute_types_enum.py +0 -0
  100. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/date_time_range_selector_model.py +0 -0
  101. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/deletion_state.py +0 -0
  102. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/detailed_project_api_result.py +0 -0
  103. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/detailed_project_api_result_workflow.py +0 -0
  104. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/failure_category_model.py +0 -0
  105. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/guid_extraction_model.py +0 -0
  106. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/image_resize_type.py +0 -0
  107. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/int32_range_selector_model.py +0 -0
  108. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/int64_range_selector_model.py +0 -0
  109. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/iteration_api_result.py +0 -0
  110. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/iteration_model.py +0 -0
  111. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/label_api_model.py +0 -0
  112. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/label_api_result.py +0 -0
  113. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/label_short_model.py +0 -0
  114. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_api_result.py +0 -0
  115. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_create_api_model.py +0 -0
  116. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_model.py +0 -0
  117. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_post_model.py +0 -0
  118. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_put_model.py +0 -0
  119. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_short_api_result.py +0 -0
  120. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_type.py +0 -0
  121. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/link_update_api_model.py +0 -0
  122. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_api_result.py +0 -0
  123. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model.py +0 -0
  124. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_extraction_model.py +0 -0
  125. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_filter.py +0 -0
  126. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_test_result_api_model.py +0 -0
  127. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/manual_rerun_test_result_api_model_test_result_ids.py +0 -0
  128. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/operation.py +0 -0
  129. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/parameter_api_result.py +0 -0
  130. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/parameter_iteration_model.py +0 -0
  131. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/parameter_short_api_result.py +0 -0
  132. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/parameter_short_model.py +0 -0
  133. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/parameters_filter_api_model.py +0 -0
  134. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/problem_details.py +0 -0
  135. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/project_api_result.py +0 -0
  136. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/project_attributes_filter_model.py +0 -0
  137. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/project_type_model.py +0 -0
  138. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model.py +0 -0
  139. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model_autotests_count.py +0 -0
  140. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model_checklists_count.py +0 -0
  141. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model_created_date.py +0 -0
  142. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model_shared_steps_count.py +0 -0
  143. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/projects_filter_model_test_cases_count.py +0 -0
  144. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/section_model.py +0 -0
  145. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/section_post_model.py +0 -0
  146. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/section_shared_step.py +0 -0
  147. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/section_with_steps_model.py +0 -0
  148. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/shared_step_model.py +0 -0
  149. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/shared_step_result_api_model.py +0 -0
  150. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/step_comment_api_model.py +0 -0
  151. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/step_model.py +0 -0
  152. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/step_post_model.py +0 -0
  153. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/step_result_api_model.py +0 -0
  154. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/tag_model.py +0 -0
  155. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_link_api_result.py +0 -0
  156. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_outcome.py +0 -0
  157. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_response.py +0 -0
  158. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_short_response.py +0 -0
  159. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_short_response_status.py +0 -0
  160. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_step_comment_update_request.py +0 -0
  161. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_result_update_request.py +0 -0
  162. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_results_filter_api_model.py +0 -0
  163. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_results_filter_api_model_duration.py +0 -0
  164. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_run_api_result.py +0 -0
  165. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_run_api_result_status.py +0 -0
  166. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_run_state.py +0 -0
  167. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_status_api_result.py +0 -0
  168. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_status_api_type.py +0 -0
  169. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_status_model.py +0 -0
  170. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/test_status_type.py +0 -0
  171. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/update_empty_test_run_api_model.py +0 -0
  172. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/update_link_api_model.py +0 -0
  173. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/validation_problem_details.py +0 -0
  174. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_api_result.py +0 -0
  175. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_entity_type_api_model.py +0 -0
  176. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_filter_api_model.py +0 -0
  177. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_filter_api_model_duration.py +0 -0
  178. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_id_api_model.py +0 -0
  179. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_parameter_key_api_model.py +0 -0
  180. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_parameter_key_api_result.py +0 -0
  181. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_priority_api_model.py +0 -0
  182. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_priority_model.py +0 -0
  183. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_select_api_model.py +0 -0
  184. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_select_api_model_filter.py +0 -0
  185. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_short_api_result.py +0 -0
  186. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_source_type_model.py +0 -0
  187. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_state_api_model.py +0 -0
  188. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_states.py +0 -0
  189. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/work_item_type_model.py +0 -0
  190. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/workflow_api_result.py +0 -0
  191. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model/workflow_status_api_result.py +0 -0
  192. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/model_utils.py +0 -0
  193. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/models/__init__.py +0 -0
  194. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_adapters/rest.py +0 -0
  195. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/__init__.py +0 -0
  196. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/__init__.py +0 -0
  197. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/completion_api.py +0 -0
  198. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/health_api.py +0 -0
  199. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/system_api.py +0 -0
  200. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/test_results_api.py +0 -0
  201. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api/workers_api.py +0 -0
  202. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/api_client.py +0 -0
  203. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/apis/__init__.py +0 -0
  204. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/configuration.py +0 -0
  205. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/exceptions.py +0 -0
  206. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/__init__.py +0 -0
  207. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/completion_response.py +0 -0
  208. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/health_status_response.py +0 -0
  209. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/register_request.py +0 -0
  210. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/register_response.py +0 -0
  211. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/set_worker_status_request.py +0 -0
  212. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/set_worker_status_response.py +0 -0
  213. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/shutdown_response.py +0 -0
  214. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/test_result_cut_api_model.py +0 -0
  215. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model/test_result_save_response.py +0 -0
  216. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/model_utils.py +0 -0
  217. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/models/__init__.py +0 -0
  218. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/api_client_syncstorage/rest.py +0 -0
  219. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit.py +0 -0
  220. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/__init__.py +0 -0
  221. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/app_properties.py +0 -0
  222. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/__init__.py +0 -0
  223. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/client_configuration.py +0 -0
  224. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/helpers/__init__.py +0 -0
  225. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/helpers/bulk_autotest_helper.py +0 -0
  226. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/helpers/threads_manager.py +0 -0
  227. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/models/__init__.py +0 -0
  228. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/models/threads_for_create_and_result.py +0 -0
  229. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/client/models/threads_for_update_and_result.py +0 -0
  230. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/configurations/__init__.py +0 -0
  231. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/decorators.py +0 -0
  232. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/dynamic_methods.py +0 -0
  233. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/__init__.py +0 -0
  234. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/adapter_mode.py +0 -0
  235. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/fixture.py +0 -0
  236. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/link.py +0 -0
  237. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/link_type.py +0 -0
  238. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/outcome_type.py +0 -0
  239. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/status_type.py +0 -0
  240. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/step_result.py +0 -0
  241. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/test_result.py +0 -0
  242. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/models/test_result_with_all_fixture_step_results_model.py +0 -0
  243. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/__init__.py +0 -0
  244. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/fixture_manager.py +0 -0
  245. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/fixture_storage.py +0 -0
  246. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/logger.py +0 -0
  247. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/plugin_manager.py +0 -0
  248. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/retry.py +0 -0
  249. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/step_manager.py +0 -0
  250. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/step_result_storage.py +0 -0
  251. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/sync_storage/__init__.py +0 -0
  252. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/sync_storage/sync_storage_runner.py +0 -0
  253. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/services/utils.py +0 -0
  254. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/step.py +0 -0
  255. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/utils/__init__.py +0 -0
  256. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons/utils/html_escape_utils.py +0 -0
  257. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons.egg-info/dependency_links.txt +0 -0
  258. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons.egg-info/requires.txt +0 -0
  259. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/src/testit_python_commons.egg-info/top_level.txt +0 -0
  260. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/tests/test_app_properties.py +0 -0
  261. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/tests/test_dynamic_methods.py +0 -0
  262. {testit_python_commons-5.1.0 → testit_python_commons-5.1.1}/tests/test_html_escape_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testit-python-commons
3
- Version: 5.1.0
3
+ Version: 5.1.1
4
4
  Summary: Python commons for Test IT
5
5
  Home-page: https://github.com/testit-tms/adapters-python/
6
6
  Author: Integration team
@@ -1,6 +1,6 @@
1
1
  from setuptools import find_packages, setup
2
2
 
3
- VERSION = "5.1.0"
3
+ VERSION = "5.1.1"
4
4
 
5
5
  setup(
6
6
  name='testit-python-commons',
@@ -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(self, test_run_name: str = None) -> str:
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(self, test_run: TestRunApiResult) -> None:
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(project_id: str, name: str) -> AdaptersTestRunsPostRequest:
52
- return AdaptersTestRunsPostRequest(
53
- project_id=project_id,
54
- name=name
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(cls, test_run: TestRunApiResult) -> AdaptersTestRunsPutRequest:
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=list(map(cls.build_update_link_api_model, test_run.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.__update_test_run_name(test_run_id)
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(test_run_name if test_run_name else "")
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 __update_test_run_name(self, test_run_id: str) -> None:
123
- test_run_name = self.__config.get_test_run_name()
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
- test_run.name = test_run_name
134
-
135
- self.__api_client.update_test_run(test_run)
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(app_properties.get(PropertiesNames.IMPORT_REALTIME).lower())
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testit-python-commons
3
- Version: 5.1.0
3
+ Version: 5.1.1
4
4
  Summary: Python commons for Test IT
5
5
  Home-page: https://github.com/testit-tms/adapters-python/
6
6
  Author: Integration team
@@ -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