behavex 4.2.2__tar.gz → 4.2.3__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 (245) hide show
  1. {behavex-4.2.2/behavex.egg-info → behavex-4.2.3}/PKG-INFO +1 -1
  2. behavex-4.2.3/behavex/__pycache__/__init__.cpython-310.pyc +0 -0
  3. behavex-4.2.3/behavex/__pycache__/__main__.cpython-310.pyc +0 -0
  4. behavex-4.2.3/behavex/__pycache__/arguments.cpython-310.pyc +0 -0
  5. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/arguments.cpython-39.pyc +0 -0
  6. behavex-4.2.3/behavex/__pycache__/conf_mgr.cpython-310.pyc +0 -0
  7. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/conf_mgr.cpython-39.pyc +0 -0
  8. behavex-4.2.3/behavex/__pycache__/environment.cpython-310.pyc +0 -0
  9. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/environment.cpython-39.pyc +0 -0
  10. behavex-4.2.3/behavex/__pycache__/execution_singleton.cpython-310.pyc +0 -0
  11. behavex-4.2.3/behavex/__pycache__/global_vars.cpython-310.pyc +0 -0
  12. behavex-4.2.3/behavex/__pycache__/progress_bar.cpython-310.pyc +0 -0
  13. behavex-4.2.3/behavex/__pycache__/runner.cpython-310.pyc +0 -0
  14. behavex-4.2.3/behavex/__pycache__/runner.cpython-39.pyc +0 -0
  15. behavex-4.2.3/behavex/__pycache__/utils.cpython-310.pyc +0 -0
  16. behavex-4.2.3/behavex/__pycache__/utils.cpython-39.pyc +0 -0
  17. {behavex-4.2.2 → behavex-4.2.3}/behavex/environment.py +9 -9
  18. behavex-4.2.3/behavex/outputs/__pycache__/__init__.cpython-310.pyc +0 -0
  19. behavex-4.2.3/behavex/outputs/__pycache__/formatter_manager.cpython-310.pyc +0 -0
  20. behavex-4.2.3/behavex/outputs/__pycache__/formatter_manager.cpython-39.pyc +0 -0
  21. behavex-4.2.3/behavex/outputs/__pycache__/jinja_mgr.cpython-310.pyc +0 -0
  22. behavex-4.2.3/behavex/outputs/__pycache__/output_strings.cpython-310.pyc +0 -0
  23. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/output_strings.cpython-39.pyc +0 -0
  24. behavex-4.2.3/behavex/outputs/__pycache__/report_html.cpython-310.pyc +0 -0
  25. behavex-4.2.3/behavex/outputs/__pycache__/report_json.cpython-310.pyc +0 -0
  26. behavex-4.2.3/behavex/outputs/__pycache__/report_utils.cpython-310.pyc +0 -0
  27. behavex-4.2.3/behavex/outputs/__pycache__/report_xml.cpython-310.pyc +0 -0
  28. behavex-4.2.3/behavex/outputs/formatters/__pycache__/allure_behavex_formatter.cpython-310.pyc +0 -0
  29. behavex-4.2.3/behavex/outputs/formatters/__pycache__/allure_behavex_formatter.cpython-39.pyc +0 -0
  30. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/output_strings.py +8 -5
  31. {behavex-4.2.2 → behavex-4.2.3}/behavex/runner.py +63 -26
  32. {behavex-4.2.2 → behavex-4.2.3}/behavex/utils.py +1 -7
  33. {behavex-4.2.2 → behavex-4.2.3/behavex.egg-info}/PKG-INFO +1 -1
  34. behavex-4.2.3/behavex.egg-info/SOURCES.txt +239 -0
  35. behavex-4.2.3/output/focused_test_run/outputs/logs/image_attachments_utils/__init__.py +4 -0
  36. behavex-4.2.3/output/full_test_run/outputs/logs/image_attachments_utils/__init__.py +4 -0
  37. behavex-4.2.3/output/image_test_verification/outputs/logs/image_attachments_utils/__init__.py +4 -0
  38. behavex-4.2.3/output/output_001349/outputs/logs/image_attachments_utils/__init__.py +4 -0
  39. behavex-4.2.3/output/output_003713/outputs/logs/image_attachments_utils/__init__.py +4 -0
  40. behavex-4.2.3/output/output_004697/outputs/logs/image_attachments_utils/__init__.py +4 -0
  41. behavex-4.2.3/output/output_006245/outputs/logs/image_attachments_utils/__init__.py +4 -0
  42. behavex-4.2.3/output/output_008581/outputs/logs/image_attachments_utils/__init__.py +4 -0
  43. behavex-4.2.3/output/output_014810/outputs/logs/image_attachments_utils/__init__.py +4 -0
  44. behavex-4.2.3/output/output_034257/outputs/logs/image_attachments_utils/__init__.py +4 -0
  45. behavex-4.2.3/output/output_049842/outputs/logs/image_attachments_utils/__init__.py +4 -0
  46. behavex-4.2.3/output/output_057264/outputs/logs/image_attachments_utils/__init__.py +4 -0
  47. behavex-4.2.3/output/output_065267/outputs/logs/image_attachments_utils/__init__.py +4 -0
  48. behavex-4.2.3/output/output_071651/outputs/logs/image_attachments_utils/__init__.py +4 -0
  49. behavex-4.2.3/output/output_080858/outputs/logs/image_attachments_utils/__init__.py +4 -0
  50. behavex-4.2.3/output/output_107483/outputs/logs/image_attachments_utils/__init__.py +4 -0
  51. behavex-4.2.3/output/output_116700/outputs/logs/image_attachments_utils/__init__.py +4 -0
  52. behavex-4.2.3/output/output_120092/outputs/logs/image_attachments_utils/__init__.py +4 -0
  53. behavex-4.2.3/output/output_140259/outputs/logs/image_attachments_utils/__init__.py +4 -0
  54. behavex-4.2.3/output/output_143213/outputs/logs/image_attachments_utils/__init__.py +4 -0
  55. behavex-4.2.3/output/output_146320/outputs/logs/image_attachments_utils/__init__.py +4 -0
  56. behavex-4.2.3/output/output_146403/outputs/logs/image_attachments_utils/__init__.py +4 -0
  57. behavex-4.2.3/output/output_154070/outputs/logs/image_attachments_utils/__init__.py +4 -0
  58. behavex-4.2.3/output/output_159339/outputs/logs/image_attachments_utils/__init__.py +4 -0
  59. behavex-4.2.3/output/output_164111/outputs/logs/image_attachments_utils/__init__.py +4 -0
  60. behavex-4.2.3/output/output_188075/outputs/logs/image_attachments_utils/__init__.py +4 -0
  61. behavex-4.2.3/output/output_189804/outputs/logs/image_attachments_utils/__init__.py +4 -0
  62. behavex-4.2.3/output/output_195102/outputs/logs/image_attachments_utils/__init__.py +4 -0
  63. behavex-4.2.3/output/output_206620/outputs/logs/image_attachments_utils/__init__.py +4 -0
  64. behavex-4.2.3/output/output_238600/outputs/logs/image_attachments_utils/__init__.py +4 -0
  65. behavex-4.2.3/output/output_251312/outputs/logs/image_attachments_utils/__init__.py +4 -0
  66. behavex-4.2.3/output/output_260546/outputs/logs/image_attachments_utils/__init__.py +4 -0
  67. behavex-4.2.3/output/output_288178/outputs/logs/image_attachments_utils/__init__.py +4 -0
  68. behavex-4.2.3/output/output_304378/outputs/logs/image_attachments_utils/__init__.py +4 -0
  69. behavex-4.2.3/output/output_323270/outputs/logs/image_attachments_utils/__init__.py +4 -0
  70. behavex-4.2.3/output/output_328507/outputs/logs/image_attachments_utils/__init__.py +4 -0
  71. behavex-4.2.3/output/output_344685/outputs/logs/image_attachments_utils/__init__.py +4 -0
  72. behavex-4.2.3/output/output_344776/outputs/logs/image_attachments_utils/__init__.py +4 -0
  73. behavex-4.2.3/output/output_344852/outputs/logs/image_attachments_utils/__init__.py +4 -0
  74. behavex-4.2.3/output/output_348748/outputs/logs/image_attachments_utils/__init__.py +4 -0
  75. behavex-4.2.3/output/output_372668/outputs/logs/image_attachments_utils/__init__.py +4 -0
  76. behavex-4.2.3/output/output_376424/outputs/logs/image_attachments_utils/__init__.py +4 -0
  77. behavex-4.2.3/output/output_382185/outputs/logs/image_attachments_utils/__init__.py +4 -0
  78. behavex-4.2.3/output/output_405504/outputs/logs/image_attachments_utils/__init__.py +4 -0
  79. behavex-4.2.3/output/output_422012/outputs/logs/image_attachments_utils/__init__.py +4 -0
  80. behavex-4.2.3/output/output_423021/outputs/logs/image_attachments_utils/__init__.py +4 -0
  81. behavex-4.2.3/output/output_426722/outputs/logs/image_attachments_utils/__init__.py +4 -0
  82. behavex-4.2.3/output/output_434999/outputs/logs/image_attachments_utils/__init__.py +4 -0
  83. behavex-4.2.3/output/output_435402/outputs/logs/image_attachments_utils/__init__.py +4 -0
  84. behavex-4.2.3/output/output_440809/outputs/logs/image_attachments_utils/__init__.py +4 -0
  85. behavex-4.2.3/output/output_449330/outputs/logs/image_attachments_utils/__init__.py +4 -0
  86. behavex-4.2.3/output/output_450637/outputs/logs/image_attachments_utils/__init__.py +4 -0
  87. behavex-4.2.3/output/output_450881/outputs/logs/image_attachments_utils/__init__.py +4 -0
  88. behavex-4.2.3/output/output_465338/outputs/logs/image_attachments_utils/__init__.py +4 -0
  89. behavex-4.2.3/output/output_475651/outputs/logs/image_attachments_utils/__init__.py +4 -0
  90. behavex-4.2.3/output/output_479506/outputs/logs/image_attachments_utils/__init__.py +4 -0
  91. behavex-4.2.3/output/output_489113/outputs/logs/image_attachments_utils/__init__.py +4 -0
  92. behavex-4.2.3/output/output_495088/outputs/logs/image_attachments_utils/__init__.py +4 -0
  93. behavex-4.2.3/output/output_496889/outputs/logs/image_attachments_utils/__init__.py +4 -0
  94. behavex-4.2.3/output/output_497394/outputs/logs/image_attachments_utils/__init__.py +4 -0
  95. behavex-4.2.3/output/output_540969/outputs/logs/image_attachments_utils/__init__.py +4 -0
  96. behavex-4.2.3/output/output_574360/outputs/logs/image_attachments_utils/__init__.py +4 -0
  97. behavex-4.2.3/output/output_577418/outputs/logs/image_attachments_utils/__init__.py +4 -0
  98. behavex-4.2.3/output/output_579891/outputs/logs/image_attachments_utils/__init__.py +4 -0
  99. behavex-4.2.3/output/output_588144/outputs/logs/image_attachments_utils/__init__.py +4 -0
  100. behavex-4.2.3/output/output_590886/outputs/logs/image_attachments_utils/__init__.py +4 -0
  101. behavex-4.2.3/output/output_596667/outputs/logs/image_attachments_utils/__init__.py +4 -0
  102. behavex-4.2.3/output/output_601328/outputs/logs/image_attachments_utils/__init__.py +4 -0
  103. behavex-4.2.3/output/output_602191/outputs/logs/image_attachments_utils/__init__.py +4 -0
  104. behavex-4.2.3/output/output_631745/outputs/logs/image_attachments_utils/__init__.py +4 -0
  105. behavex-4.2.3/output/output_634385/outputs/logs/image_attachments_utils/__init__.py +4 -0
  106. behavex-4.2.3/output/output_646388/outputs/logs/image_attachments_utils/__init__.py +4 -0
  107. behavex-4.2.3/output/output_654650/outputs/logs/image_attachments_utils/__init__.py +4 -0
  108. behavex-4.2.3/output/output_656366/outputs/logs/image_attachments_utils/__init__.py +4 -0
  109. behavex-4.2.3/output/output_678770/outputs/logs/image_attachments_utils/__init__.py +4 -0
  110. behavex-4.2.3/output/output_680470/outputs/logs/image_attachments_utils/__init__.py +4 -0
  111. behavex-4.2.3/output/output_683436/outputs/logs/image_attachments_utils/__init__.py +4 -0
  112. behavex-4.2.3/output/output_685176/outputs/logs/image_attachments_utils/__init__.py +4 -0
  113. behavex-4.2.3/output/output_689341/outputs/logs/image_attachments_utils/__init__.py +4 -0
  114. behavex-4.2.3/output/output_691007/outputs/logs/image_attachments_utils/__init__.py +4 -0
  115. behavex-4.2.3/output/output_695521/outputs/logs/image_attachments_utils/__init__.py +4 -0
  116. behavex-4.2.3/output/output_703468/outputs/logs/image_attachments_utils/__init__.py +4 -0
  117. behavex-4.2.3/output/output_704571/outputs/logs/image_attachments_utils/__init__.py +4 -0
  118. behavex-4.2.3/output/output_710568/outputs/logs/image_attachments_utils/__init__.py +4 -0
  119. behavex-4.2.3/output/output_711677/outputs/logs/image_attachments_utils/__init__.py +4 -0
  120. behavex-4.2.3/output/output_719414/outputs/logs/image_attachments_utils/__init__.py +4 -0
  121. behavex-4.2.3/output/output_723957/outputs/logs/image_attachments_utils/__init__.py +4 -0
  122. behavex-4.2.3/output/output_724106/outputs/logs/image_attachments_utils/__init__.py +4 -0
  123. behavex-4.2.3/output/output_725084/outputs/logs/image_attachments_utils/__init__.py +4 -0
  124. behavex-4.2.3/output/output_732485/outputs/logs/image_attachments_utils/__init__.py +4 -0
  125. behavex-4.2.3/output/output_732517/outputs/logs/image_attachments_utils/__init__.py +4 -0
  126. behavex-4.2.3/output/output_742134/outputs/logs/image_attachments_utils/__init__.py +4 -0
  127. behavex-4.2.3/output/output_756176/outputs/logs/image_attachments_utils/__init__.py +4 -0
  128. behavex-4.2.3/output/output_767286/outputs/logs/image_attachments_utils/__init__.py +4 -0
  129. behavex-4.2.3/output/output_773557/outputs/logs/image_attachments_utils/__init__.py +4 -0
  130. behavex-4.2.3/output/output_787703/outputs/logs/image_attachments_utils/__init__.py +4 -0
  131. behavex-4.2.3/output/output_798702/outputs/logs/image_attachments_utils/__init__.py +4 -0
  132. behavex-4.2.3/output/output_803377/outputs/logs/image_attachments_utils/__init__.py +4 -0
  133. behavex-4.2.3/output/output_818000/outputs/logs/image_attachments_utils/__init__.py +4 -0
  134. behavex-4.2.3/output/output_821244/outputs/logs/image_attachments_utils/__init__.py +4 -0
  135. behavex-4.2.3/output/output_841973/outputs/logs/image_attachments_utils/__init__.py +4 -0
  136. behavex-4.2.3/output/output_843772/outputs/logs/image_attachments_utils/__init__.py +4 -0
  137. behavex-4.2.3/output/output_851821/outputs/logs/image_attachments_utils/__init__.py +4 -0
  138. behavex-4.2.3/output/output_852322/outputs/logs/image_attachments_utils/__init__.py +4 -0
  139. behavex-4.2.3/output/output_857146/outputs/logs/image_attachments_utils/__init__.py +4 -0
  140. behavex-4.2.3/output/output_858906/outputs/logs/image_attachments_utils/__init__.py +4 -0
  141. behavex-4.2.3/output/output_867706/outputs/logs/image_attachments_utils/__init__.py +4 -0
  142. behavex-4.2.3/output/output_868972/outputs/logs/image_attachments_utils/__init__.py +4 -0
  143. behavex-4.2.3/output/output_886897/outputs/logs/image_attachments_utils/__init__.py +4 -0
  144. behavex-4.2.3/output/output_891058/outputs/logs/image_attachments_utils/__init__.py +4 -0
  145. behavex-4.2.3/output/output_892919/outputs/logs/image_attachments_utils/__init__.py +4 -0
  146. behavex-4.2.3/output/output_907134/outputs/logs/image_attachments_utils/__init__.py +4 -0
  147. behavex-4.2.3/output/output_909239/outputs/logs/image_attachments_utils/__init__.py +4 -0
  148. behavex-4.2.3/output/output_932996/outputs/logs/image_attachments_utils/__init__.py +4 -0
  149. behavex-4.2.3/output/output_936717/outputs/logs/image_attachments_utils/__init__.py +4 -0
  150. behavex-4.2.3/output/output_940684/outputs/logs/image_attachments_utils/__init__.py +4 -0
  151. behavex-4.2.3/output/output_945860/outputs/logs/image_attachments_utils/__init__.py +4 -0
  152. behavex-4.2.3/output/output_947760/outputs/logs/image_attachments_utils/__init__.py +4 -0
  153. behavex-4.2.3/output/output_952517/outputs/logs/image_attachments_utils/__init__.py +4 -0
  154. behavex-4.2.3/output/output_955858/outputs/logs/image_attachments_utils/__init__.py +4 -0
  155. behavex-4.2.3/output/output_959703/outputs/logs/image_attachments_utils/__init__.py +4 -0
  156. behavex-4.2.3/output/output_969405/outputs/logs/image_attachments_utils/__init__.py +4 -0
  157. behavex-4.2.3/output/output_972545/outputs/logs/image_attachments_utils/__init__.py +4 -0
  158. behavex-4.2.3/output/outputs/logs/image_attachments_utils/__init__.py +4 -0
  159. {behavex-4.2.2 → behavex-4.2.3}/pyproject.toml +1 -1
  160. {behavex-4.2.2 → behavex-4.2.3}/setup.py +1 -1
  161. behavex-4.2.2/behavex/__pycache__/runner.cpython-39.pyc +0 -0
  162. behavex-4.2.2/behavex/__pycache__/utils.cpython-39.pyc +0 -0
  163. behavex-4.2.2/behavex/outputs/__pycache__/formatter_manager.cpython-39.pyc +0 -0
  164. behavex-4.2.2/behavex/outputs/formatters/__pycache__/allure_behavex_formatter.cpython-39.pyc +0 -0
  165. behavex-4.2.2/behavex.egg-info/SOURCES.txt +0 -96
  166. {behavex-4.2.2 → behavex-4.2.3}/LICENSE +0 -0
  167. {behavex-4.2.2 → behavex-4.2.3}/MANIFEST.in +0 -0
  168. {behavex-4.2.2 → behavex-4.2.3}/README.md +0 -0
  169. {behavex-4.2.2 → behavex-4.2.3}/behavex/.DS_Store +0 -0
  170. {behavex-4.2.2 → behavex-4.2.3}/behavex/__init__.py +0 -0
  171. {behavex-4.2.2 → behavex-4.2.3}/behavex/__main__.py +0 -0
  172. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/__init__.cpython-39.pyc +0 -0
  173. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/__main__.cpython-39.pyc +0 -0
  174. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/execution_singleton.cpython-39.pyc +0 -0
  175. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/global_vars.cpython-39.pyc +0 -0
  176. {behavex-4.2.2 → behavex-4.2.3}/behavex/__pycache__/progress_bar.cpython-39.pyc +0 -0
  177. {behavex-4.2.2 → behavex-4.2.3}/behavex/arguments.py +0 -0
  178. {behavex-4.2.2 → behavex-4.2.3}/behavex/conf_behavex.cfg +0 -0
  179. {behavex-4.2.2 → behavex-4.2.3}/behavex/conf_logging.cfg +0 -0
  180. {behavex-4.2.2 → behavex-4.2.3}/behavex/conf_mgr.py +0 -0
  181. {behavex-4.2.2 → behavex-4.2.3}/behavex/execution_singleton.py +0 -0
  182. {behavex-4.2.2 → behavex-4.2.3}/behavex/global_vars.py +0 -0
  183. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__init__.py +0 -0
  184. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/__init__.cpython-39.pyc +0 -0
  185. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/jinja_mgr.cpython-39.pyc +0 -0
  186. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/report_html.cpython-39.pyc +0 -0
  187. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/report_json.cpython-39.pyc +0 -0
  188. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/report_utils.cpython-39.pyc +0 -0
  189. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/__pycache__/report_xml.cpython-39.pyc +0 -0
  190. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/behavex.css +0 -0
  191. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap-theme.css +0 -0
  192. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap-theme.min.css +0 -0
  193. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap-theme.min.css.map +0 -0
  194. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap.css +0 -0
  195. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap.min.css +0 -0
  196. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/bootstrap.min.css.map +0 -0
  197. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/css/pace-theme-loading-bar.min.css +0 -0
  198. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  199. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/fonts/glyphicons-halflings-regular.svg +0 -0
  200. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  201. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  202. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  203. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/bootstrap.js +0 -0
  204. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/bootstrap.min.js +0 -0
  205. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/chart.js +0 -0
  206. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/jquery-1.11.0.min.js +0 -0
  207. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/jquery-ui.min.js +0 -0
  208. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/jquery.tablesorter.min.js +0 -0
  209. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/jquery.tooltipster.min.js +0 -0
  210. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/bootstrap/js/pace.min.js +0 -0
  211. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/formatter_manager.py +0 -0
  212. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/formatters/allure_behavex_formatter.py +0 -0
  213. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja/base.jinja2 +0 -0
  214. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja/main.jinja2 +0 -0
  215. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja/manifest.jinja2 +0 -0
  216. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja/xml.jinja2 +0 -0
  217. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja/xml_json.jinja2 +0 -0
  218. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/jinja_mgr.py +0 -0
  219. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/report_html.py +0 -0
  220. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/report_json.py +0 -0
  221. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/report_utils.py +0 -0
  222. {behavex-4.2.2 → behavex-4.2.3}/behavex/outputs/report_xml.py +0 -0
  223. {behavex-4.2.2 → behavex-4.2.3}/behavex/progress_bar.py +0 -0
  224. {behavex-4.2.2 → behavex-4.2.3}/behavex/steps/__init__.py +0 -0
  225. {behavex-4.2.2 → behavex-4.2.3}/behavex.egg-info/dependency_links.txt +0 -0
  226. {behavex-4.2.2 → behavex-4.2.3}/behavex.egg-info/entry_points.txt +0 -0
  227. {behavex-4.2.2 → behavex-4.2.3}/behavex.egg-info/requires.txt +0 -0
  228. {behavex-4.2.2 → behavex-4.2.3}/behavex.egg-info/top_level.txt +0 -0
  229. {behavex-4.2.2 → behavex-4.2.3}/docs/conf.py +0 -0
  230. {behavex-4.2.2 → behavex-4.2.3}/setup.cfg +0 -0
  231. {behavex-4.2.2 → behavex-4.2.3}/tests/features/crashing_features/environment.py +0 -0
  232. {behavex-4.2.2 → behavex-4.2.3}/tests/features/crashing_features/steps/__init__.py +0 -0
  233. {behavex-4.2.2 → behavex-4.2.3}/tests/features/crashing_features/steps/crashing_steps.py +0 -0
  234. {behavex-4.2.2 → behavex-4.2.3}/tests/features/environment.py +0 -0
  235. {behavex-4.2.2 → behavex-4.2.3}/tests/features/secondary_features/__init__.py +0 -0
  236. {behavex-4.2.2 → behavex-4.2.3}/tests/features/secondary_features/environment.py +0 -0
  237. {behavex-4.2.2 → behavex-4.2.3}/tests/features/secondary_features/steps/__init__.py +0 -0
  238. {behavex-4.2.2 → behavex-4.2.3}/tests/features/secondary_features/steps/allure_formatter_secondary_steps.py +0 -0
  239. {behavex-4.2.2 → behavex-4.2.3}/tests/features/secondary_features/steps/generic_secondary_steps.py +0 -0
  240. {behavex-4.2.2 → behavex-4.2.3}/tests/features/steps/__init__.py +0 -0
  241. {behavex-4.2.2 → behavex-4.2.3}/tests/features/steps/allure_formatter_steps.py +0 -0
  242. {behavex-4.2.2 → behavex-4.2.3}/tests/features/steps/allure_formatter_unit_steps.py +0 -0
  243. {behavex-4.2.2 → behavex-4.2.3}/tests/features/steps/execution_steps.py +0 -0
  244. {behavex-4.2.2 → behavex-4.2.3}/tests/features/steps/install_steps.py +0 -0
  245. {behavex-4.2.2 → behavex-4.2.3}/venv/bin/activate_this.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: behavex
3
- Version: 4.2.2
3
+ Version: 4.2.3
4
4
  Summary: Agile testing framework on top of Behave (BDD).
5
5
  Home-page: https://github.com/hrcorval/behavex
6
6
  Author: Hernan Rey
@@ -11,18 +11,18 @@ from datetime import datetime
11
11
 
12
12
  from behave.contrib.scenario_autoretry import patch_scenario_with_autoretry
13
13
  from behave.log_capture import capture
14
- from behave.model import ScenarioOutline
14
+ from behave.model import ScenarioOutline # pyright: ignore[reportUnusedImport]
15
15
  from behave.runner import Context, ModelRunner
16
16
 
17
17
  from behavex import conf_mgr
18
18
  from behavex.conf_mgr import get_env, get_param
19
19
  from behavex.global_vars import global_vars
20
20
  from behavex.outputs import report_json, report_xml
21
- from behavex.outputs.report_utils import create_log_path, strip_ansi_codes
21
+ from behavex.outputs.report_utils import (create_log_path, get_string_hash,
22
+ strip_ansi_codes)
22
23
  from behavex.utils import (LOGGING_CFG, create_custom_log_when_called,
23
24
  get_autoretry_attempts, get_logging_level,
24
- get_scenario_tags, get_scenarios_instances,
25
- get_string_hash)
25
+ get_scenario_tags, get_scenarios_instances)
26
26
 
27
27
  Context.__getattribute__ = create_custom_log_when_called
28
28
 
@@ -186,19 +186,19 @@ def before_scenario(context, scenario):
186
186
  scenario.start = _get_current_timestamp_ms()
187
187
 
188
188
 
189
- def before_step(context, step):
189
+ def before_step(context, step): # pyright: ignore[reportUnusedParameter]
190
190
  step.start = _get_current_timestamp_ms()
191
191
 
192
192
 
193
- def before_tag(context, tag):
193
+ def before_tag(context, tag): # pyright: ignore[reportUnusedParameter]
194
194
  pass
195
195
 
196
196
 
197
- def after_tag(context, tag):
197
+ def after_tag(context, tag): # pyright: ignore[reportUnusedParameter]
198
198
  pass
199
199
 
200
200
 
201
- def after_step(context, step):
201
+ def after_step(context, step): # pyright: ignore[reportUnusedParameter]
202
202
  step.stop = _get_current_timestamp_ms()
203
203
  try:
204
204
  if step.exception:
@@ -230,7 +230,7 @@ def after_scenario(context, scenario):
230
230
 
231
231
 
232
232
  # noinspection PyUnusedLocal
233
- def after_feature(context, feature):
233
+ def after_feature(context, feature): # pyright: ignore[reportUnusedParameter]
234
234
  try:
235
235
  if get_env('multiprocessing') and get_param('parallel_scheme') == 'scenario':
236
236
  return
@@ -45,8 +45,8 @@ TEXTS = {
45
45
  'description': '',
46
46
  'modal': {
47
47
  'title': '',
48
- 'body': '<b>Test Automation Rate:</b> % of automated scenarios.<br>'
49
- '<b>Pass Rate:</b>: % of passed scenarios.<br>',
48
+ 'body': ('<b>Test Automation Rate:</b> % of automated scenarios.<br>'
49
+ '<b>Pass Rate:</b>: % of passed scenarios.<br>'),
50
50
  },
51
51
  },
52
52
  'joined': {'title': '', 'description': '', 'modal': {'title': '', 'modal': 'the'}},
@@ -61,9 +61,9 @@ TEXTS = {
61
61
  'serial_execution': u'\n{0}\nRunning serial scenarios (tagged as @SERIAL).\n{0}\n'.format('*' * 60),
62
62
  'running_parallels': u'\n{0}\nRunning parallel scenarios\n{0}\n'.format('*' * 60),
63
63
  'run_behave': u"Running feature '{}' with scenario '{}'.",
64
- 'duplicated_scenarios': '{0}\nThere are duplicate scenario names to run.\n'
65
- 'Parallel test execution by scenario cannot be performed.\n'
66
- 'Duplicated scenario names: \n{1}.\n{0}\n'.format('*' * 60, {}),
64
+ 'duplicated_scenarios': ('{0}\nThere are duplicate scenario names to run.\n'
65
+ 'Parallel test execution by scenario cannot be performed.\n'
66
+ 'Duplicated scenario names: \n{1}.\n{0}\n').format('*' * 60, {}),
67
67
  'execution_crashed': 'Execution crashed or was interrupted when executing the scenario. No outputs could be generated.'
68
68
  },
69
69
  'folder': {'run_behave': u"Running folder: '{}' and feature '{}'."},
@@ -77,6 +77,9 @@ TEXTS = {
77
77
  'execution': {
78
78
  'callback': {
79
79
  'error': u'\nError occurred during execution callback: {}'
80
+ },
81
+ 'dry_run': {
82
+ 'completed': u'\nDry run completed. Please, see the report in {0} folder.\n\n'
80
83
  }
81
84
  },
82
85
  'parallel': {
@@ -12,33 +12,33 @@ including setup, execution, and reporting.
12
12
  from __future__ import absolute_import, print_function
13
13
 
14
14
  import codecs
15
- import concurrent
15
+ import concurrent # pyright: ignore[reportUnusedImport]
16
16
  import copy
17
17
  import io
18
18
  import json
19
- import logging.config
19
+ import logging.config # pyright: ignore[reportUnusedImport]
20
20
  import multiprocessing
21
21
  import os
22
22
  import os.path
23
23
  import platform
24
- import re
25
24
  import signal
26
25
  import sys
27
26
  import time
28
27
  import traceback
29
28
  from concurrent.futures import ProcessPoolExecutor
29
+ from concurrent.futures.process import BrokenProcessPool
30
30
  from multiprocessing import active_children
31
31
  from multiprocessing.managers import DictProxy
32
32
  from tempfile import gettempdir
33
+ from typing import Any, Dict
33
34
 
34
35
  from behave import __main__ as behave_script
35
36
  from behave.model import Feature, Scenario, ScenarioOutline
36
37
 
37
38
  # noinspection PyUnresolvedReferences
38
- import behavex.outputs.report_json
39
39
  from behavex import conf_mgr
40
40
  from behavex.arguments import BEHAVE_ARGS, BEHAVEX_ARGS, parse_arguments
41
- from behavex.conf_mgr import ConfigRun, get_env, get_param, set_env
41
+ from behavex.conf_mgr import ConfigRun, get_env, get_param
42
42
  from behavex.environment import extend_behave_hooks
43
43
  from behavex.execution_singleton import ExecutionSingleton
44
44
  from behavex.global_vars import global_vars
@@ -53,13 +53,12 @@ from behavex.utils import (IncludeNameMatch, IncludePathsMatch, MatchInclude,
53
53
  cleanup_folders, configure_logging,
54
54
  copy_bootstrap_html_generator,
55
55
  create_execution_complete_callback_function,
56
- expand_paths, explore_features, generate_hash,
57
- generate_reports, get_feature_and_scenario_line,
58
- get_json_results, get_logging_level,
59
- get_scenario_tags, get_scenarios_instances,
60
- get_text, join_feature_reports,
61
- join_scenario_reports, len_scenarios,
62
- print_env_variables, print_parallel,
56
+ expand_paths, explore_features, generate_reports,
57
+ get_feature_and_scenario_line, get_json_results,
58
+ get_logging_level, get_scenario_tags,
59
+ get_scenarios_instances, get_text,
60
+ join_feature_reports, join_scenario_reports,
61
+ len_scenarios, print_env_variables, print_parallel,
63
62
  set_behave_tags, set_env_variable,
64
63
  set_environ_config, set_system_paths)
65
64
 
@@ -136,8 +135,8 @@ def run(args):
136
135
  # Handle include_paths parameter
137
136
  if len(get_param('include_paths')) > 0:
138
137
  include_paths = ",".join(expand_paths(get_param('include_paths'))).replace('\n', '')
139
- features_path = os.environ.get('FEATURES_PATH')
140
- if features_path == '' or features_path is None or not os.path.exists(features_path):
138
+ features_path = os.environ.get('FEATURES_PATH', '')
139
+ if features_path == '' or not os.path.exists(features_path):
141
140
  os.environ['FEATURES_PATH'] = include_paths
142
141
  else:
143
142
  os.environ['FEATURES_PATH'] = features_path + ',' + include_paths
@@ -210,7 +209,7 @@ def launch_behavex():
210
209
  execution_codes = []
211
210
  results = None
212
211
  config = conf_mgr.get_config()
213
- features_path = os.environ.get('FEATURES_PATH')
212
+ features_path = os.environ.get('FEATURES_PATH', '')
214
213
  parallel_scheme = get_param('parallel_scheme')
215
214
  if get_param('dry_run'):
216
215
  parallel_processes = 1
@@ -221,7 +220,7 @@ def launch_behavex():
221
220
  show_progress_bar = get_param('show_progress_bar')
222
221
  multiprocess = (
223
222
  True
224
- if get_param('parallel_processes') > 1 and not get_param('dry_run')
223
+ if parallel_processes > 1 and not get_param('dry_run')
225
224
  else False
226
225
  )
227
226
  set_behave_tags()
@@ -283,11 +282,9 @@ def launch_behavex():
283
282
  lock,
284
283
  show_progress_bar)
285
284
  wrap_up_process_pools(process_pool, json_reports, scenario)
286
- time_end = global_vars.execution_end_time
287
285
 
288
286
  if get_param('dry_run'):
289
- msg = '\nDry run completed. Please, see the report in {0}' ' folder.\n\n'
290
- print(msg.format(get_env('OUTPUT')))
287
+ print_parallel('execution.dry_run.completed', get_env('OUTPUT'))
291
288
 
292
289
  remove_temporary_files(parallel_processes, json_reports)
293
290
 
@@ -397,7 +394,6 @@ def create_scenario_line_references(features):
397
394
  updated_features = {}
398
395
  for feature_path, scenarios in features.items():
399
396
  for scenario in scenarios:
400
- scenario_filename = text(scenario.filename)
401
397
  if global_vars.rerun_failures or ".feature:" in feature_path:
402
398
  if feature_path not in updated_features:
403
399
  updated_features[feature_path] = []
@@ -502,8 +498,10 @@ def launch_by_feature(features,
502
498
  for parallel_process in parallel_processes:
503
499
  try:
504
500
  parallel_process.result()
501
+ except (KeyboardInterrupt, SystemExit):
502
+ # Allow KeyboardInterrupt (Ctrl+C) and SystemExit to propagate to top level
503
+ raise
505
504
  except:
506
- from concurrent.futures.process import BrokenProcessPool
507
505
  e = sys.exc_info()[1]
508
506
  if isinstance(e, BrokenProcessPool):
509
507
  print_parallel('process.pool.broken.main', str(e))
@@ -625,8 +623,10 @@ def launch_by_scenario(features,
625
623
  for parallel_process in parallel_processes:
626
624
  try:
627
625
  parallel_process.result()
626
+ except (KeyboardInterrupt, SystemExit):
627
+ # Allow KeyboardInterrupt (Ctrl+C) and SystemExit to propagate to top level
628
+ raise
628
629
  except:
629
- from concurrent.futures.process import BrokenProcessPool
630
630
  e = sys.exc_info()[1]
631
631
  if isinstance(e, BrokenProcessPool):
632
632
  print_parallel('process.pool.broken.main', str(e))
@@ -772,21 +772,57 @@ def _launch_behave(behave_args):
772
772
 
773
773
  # Use a custom output capture class that mirrors to console and captures
774
774
  class TeePrint:
775
+ """A complete wrapper for stdout that captures output while maintaining all stdout functionality."""
776
+
775
777
  def __init__(self, original_stdout):
776
- self.original_stdout = original_stdout
777
- self.captured = io.StringIO()
778
+ # Use object.__setattr__ to avoid recursion with __setattr__
779
+ object.__setattr__(self, 'original_stdout', original_stdout)
780
+ object.__setattr__(self, 'captured', io.StringIO())
778
781
 
779
782
  def write(self, data):
783
+ """Override write to capture output while maintaining original behavior."""
780
784
  self.original_stdout.write(data)
781
785
  self.captured.write(data)
786
+ return len(data) if hasattr(data, '__len__') else None
782
787
 
783
788
  def flush(self):
789
+ """Override flush to flush both original and captured streams."""
784
790
  self.original_stdout.flush()
785
791
  self.captured.flush()
786
792
 
787
793
  def getvalue(self):
794
+ """Custom method to get captured output."""
788
795
  return self.captured.getvalue()
789
796
 
797
+ def __getattr__(self, name):
798
+ """Delegate all other attributes/methods to the original stdout."""
799
+ try:
800
+ return getattr(self.original_stdout, name)
801
+ except AttributeError:
802
+ raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
803
+
804
+ def __setattr__(self, name, value):
805
+ """Delegate attribute setting to original stdout (except for our internal attributes)."""
806
+ if name in ('original_stdout', 'captured'):
807
+ object.__setattr__(self, name, value)
808
+ else:
809
+ setattr(self.original_stdout, name, value)
810
+
811
+ def __getattribute__(self, name):
812
+ """Handle attribute access with proper delegation."""
813
+ # Handle our own methods and attributes first
814
+ if name in ('original_stdout', 'captured', 'write', 'flush', 'getvalue',
815
+ '__class__', '__dict__', '__getattr__', '__setattr__'):
816
+ return object.__getattribute__(self, name)
817
+
818
+ # For common stdout properties, delegate to original_stdout
819
+ try:
820
+ original_stdout = object.__getattribute__(self, 'original_stdout')
821
+ return getattr(original_stdout, name)
822
+ except (AttributeError, KeyError):
823
+ # Fallback to our own implementation
824
+ return object.__getattribute__(self, name)
825
+
790
826
  # Create the tee capture object
791
827
  tee = TeePrint(sys.__stdout__)
792
828
 
@@ -867,7 +903,7 @@ def wrap_up_process_pools(process_pool,
867
903
  output = os.path.join(get_env('OUTPUT'))
868
904
  try:
869
905
  process_pool.shutdown(wait=True)
870
- except Exception as ex:
906
+ except Exception:
871
907
  process_pool.shutdown(wait=False, cancel_futures=True)
872
908
  if type(json_reports) is list:
873
909
  if scenario:
@@ -1267,8 +1303,9 @@ def dump_json_results():
1267
1303
  process_name = multiprocessing.current_process().name.split('-')[-1]
1268
1304
  path_info = os.path.join(gettempdir(), 'result{}.tmp'.format(process_name))
1269
1305
 
1270
- def _load_json():
1306
+ def _load_json() -> Dict[str, Any]:
1271
1307
  """this function load from file"""
1308
+ json_output_converted = {}
1272
1309
  with open(path_info, 'r') as info_file:
1273
1310
  json_output_file = info_file.read()
1274
1311
  json_output_converted = json.loads(json_output_file)
@@ -20,6 +20,7 @@ import shutil
20
20
  import sys
21
21
  import time
22
22
  import uuid
23
+ from concurrent.futures.process import BrokenProcessPool
23
24
  from functools import reduce
24
25
  from tempfile import gettempdir
25
26
 
@@ -55,13 +56,6 @@ def handle_execution_complete_callback(codes,
55
56
  try:
56
57
  tuple_values = future.result()
57
58
  except: # isort:skip
58
- # Handle BrokenProcessPool and other exceptions gracefully
59
- from concurrent.futures.process import BrokenProcessPool
60
- e = sys.exc_info()[1]
61
- if isinstance(e, BrokenProcessPool):
62
- print_parallel('process.pool.broken', str(e))
63
- else:
64
- print_parallel('execution.callback.error', str(e))
65
59
  json_reports += []
66
60
  codes.append(1)
67
61
  if tuple_values:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: behavex
3
- Version: 4.2.2
3
+ Version: 4.2.3
4
4
  Summary: Agile testing framework on top of Behave (BDD).
5
5
  Home-page: https://github.com/hrcorval/behavex
6
6
  Author: Hernan Rey