socx-cli 0.2.8__tar.gz → 0.2.10__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 (204) hide show
  1. {socx_cli-0.2.8 → socx_cli-0.2.10}/PKG-INFO +1 -1
  2. socx_cli-0.2.10/assets/rerun/outputs/04-04_passed.log +11 -0
  3. socx_cli-0.2.10/assets/rerun/outputs/04-05_passed.log +11 -0
  4. socx_cli-0.2.10/assets/rerun/outputs/04-06_passed.log +11 -0
  5. socx_cli-0.2.10/assets/rerun/outputs/04-07_failed.log +11 -0
  6. socx_cli-0.2.10/assets/rerun/outputs/04-11_failed.log +11 -0
  7. socx_cli-0.2.10/failed_tests_history2.log +11 -0
  8. {socx_cli-0.2.8 → socx_cli-0.2.10}/pyproject.toml +1 -1
  9. socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-17_passed.log +0 -0
  10. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/regression/regression.py +3 -20
  11. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/regression/test.py +17 -11
  12. socx_cli-0.2.10/src/socx_patches/__init__.py +0 -0
  13. socx_cli-0.2.10/src/socx_plugins/__init__.py +0 -0
  14. socx_cli-0.2.10/src/socx_plugins/convert/__init__.py +0 -0
  15. socx_cli-0.2.10/src/socx_plugins/regression/__init__.py +0 -0
  16. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/regression/_cli.py +16 -11
  17. {socx_cli-0.2.8 → socx_cli-0.2.10}/.env +0 -0
  18. {socx_cli-0.2.8 → socx_cli-0.2.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {socx_cli-0.2.8 → socx_cli-0.2.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {socx_cli-0.2.8 → socx_cli-0.2.10}/.gitignore +0 -0
  21. {socx_cli-0.2.8 → socx_cli-0.2.10}/.python-version +0 -0
  22. {socx_cli-0.2.8 → socx_cli-0.2.10}/LICENSE +0 -0
  23. {socx_cli-0.2.8 → socx_cli-0.2.10}/README.md +0 -0
  24. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/lst/inputs/MCUList.lst +0 -0
  25. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/lst/inputs/SPUList.list +0 -0
  26. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/lst/inputs/SPUList.lst +0 -0
  27. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/lst/inputs/hwsList.lst +0 -0
  28. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/lst/inputs/memLd.json +0 -0
  29. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-30_passed.log → /socx_cli-0.2.10/assets/rerun/outputs/04-04_failed.log +0 -0
  30. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-36_passed.log → /socx_cli-0.2.10/assets/rerun/outputs/04-05_failed.log +0 -0
  31. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-37_passed.log → /socx_cli-0.2.10/assets/rerun/outputs/04-06_failed.log +0 -0
  32. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-38_passed.log → /socx_cli-0.2.10/assets/rerun/outputs/04-07_passed.log +0 -0
  33. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-39_passed.log → /socx_cli-0.2.10/assets/rerun/outputs/04-11_passed.log +0 -0
  34. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/inputs/failed_tests_history.log +0 -0
  35. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-30_failed.log +0 -0
  36. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-42_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-30_passed.log +0 -0
  37. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-33_failed.log +0 -0
  38. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-33_passed.log +0 -0
  39. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-35_failed.log +0 -0
  40. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-35_passed.log +0 -0
  41. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-36_failed.log +0 -0
  42. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-43_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-36_passed.log +0 -0
  43. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-37_failed.log +0 -0
  44. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-45_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-37_passed.log +0 -0
  45. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-38_failed.log +0 -0
  46. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-47_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-38_passed.log +0 -0
  47. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-39_failed.log +0 -0
  48. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-49_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-39_passed.log +0 -0
  49. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-42_failed.log +0 -0
  50. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-50_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-42_passed.log +0 -0
  51. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-43_failed.log +0 -0
  52. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-51_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-43_passed.log +0 -0
  53. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-45_failed.log +0 -0
  54. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-52_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-45_passed.log +0 -0
  55. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-47_failed.log +0 -0
  56. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/12-58_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-47_passed.log +0 -0
  57. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-49_failed.log +0 -0
  58. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-01_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-49_passed.log +0 -0
  59. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-50_failed.log +0 -0
  60. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-03_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-50_passed.log +0 -0
  61. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-51_failed.log +0 -0
  62. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-05_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-51_passed.log +0 -0
  63. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-52_failed.log +0 -0
  64. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-08_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-52_passed.log +0 -0
  65. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/12-58_failed.log +0 -0
  66. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-09_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/12-58_passed.log +0 -0
  67. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-01_failed.log +0 -0
  68. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-16_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-01_passed.log +0 -0
  69. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-03_failed.log +0 -0
  70. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-17_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-03_passed.log +0 -0
  71. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-05_failed.log +0 -0
  72. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-29_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-05_passed.log +0 -0
  73. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-08_failed.log +0 -0
  74. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-30_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-08_passed.log +0 -0
  75. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-09_failed.log +0 -0
  76. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-53_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-09_passed.log +0 -0
  77. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-11_failed.log +0 -0
  78. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-11_passed.log +0 -0
  79. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-13_failed.log +0 -0
  80. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-13_passed.log +0 -0
  81. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-14_failed.log +0 -0
  82. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-14_passed.log +0 -0
  83. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-16_failed.log +0 -0
  84. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-54_failed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-16_passed.log +0 -0
  85. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-17_failed.log +0 -0
  86. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-55_failed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-17_passed.log +0 -0
  87. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-18_failed.log +0 -0
  88. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-18_passed.log +0 -0
  89. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-19_failed.log +0 -0
  90. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-19_passed.log +0 -0
  91. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-24_failed.log +0 -0
  92. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-24_passed.log +0 -0
  93. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-25_failed.log +0 -0
  94. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-25_passed.log +0 -0
  95. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-26_failed.log +0 -0
  96. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-26_passed.log +0 -0
  97. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-28_failed.log +0 -0
  98. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-28_passed.log +0 -0
  99. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-29_failed.log +0 -0
  100. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/13-58_failed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-29_passed.log +0 -0
  101. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-30_failed.log +0 -0
  102. /socx_cli-0.2.8/assets/rgr/outputs/02-03-2025/16-54_failed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-30_passed.log +0 -0
  103. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-31_failed.log +0 -0
  104. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-31_passed.log +0 -0
  105. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-33_failed.log +0 -0
  106. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-33_passed.log +0 -0
  107. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-34_failed.log +0 -0
  108. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-34_passed.log +0 -0
  109. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-35_failed.log +0 -0
  110. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-35_passed.log +0 -0
  111. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-53_failed.log +0 -0
  112. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-18_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-53_passed.log +0 -0
  113. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-20_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-54_failed.log +0 -0
  114. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-54_passed.log +0 -0
  115. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-23_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-55_failed.log +0 -0
  116. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-55_passed.log +0 -0
  117. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-24_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/13-58_failed.log +0 -0
  118. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/13-58_passed.log +0 -0
  119. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-31_passed.log → /socx_cli-0.2.10/assets/rgr/outputs/02-03-2025/16-54_failed.log +0 -0
  120. {socx_cli-0.2.8 → socx_cli-0.2.10}/assets/rgr/outputs/02-03-2025/16-54_passed.log +0 -0
  121. {socx_cli-0.2.8 → socx_cli-0.2.10}/bin/version +0 -0
  122. {socx_cli-0.2.8 → socx_cli-0.2.10}/ruff.toml +0 -0
  123. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-22_failed.log +0 -0
  124. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-22_passed.log +0 -0
  125. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-23_failed.log +0 -0
  126. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-23_passed.log +0 -0
  127. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-24_failed.log +0 -0
  128. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-24_passed.log +0 -0
  129. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-25_failed.log +0 -0
  130. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/08-25_passed.log +0 -0
  131. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-18_failed.log +0 -0
  132. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-33_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-18_passed.log +0 -0
  133. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-20_failed.log +0 -0
  134. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-35_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-20_passed.log +0 -0
  135. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-23_failed.log +0 -0
  136. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-36_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-23_passed.log +0 -0
  137. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-24_failed.log +0 -0
  138. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-37_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-24_passed.log +0 -0
  139. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-31_failed.log +0 -0
  140. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-39_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-31_passed.log +0 -0
  141. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-33_failed.log +0 -0
  142. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-40_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-33_passed.log +0 -0
  143. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-35_failed.log +0 -0
  144. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-42_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-35_passed.log +0 -0
  145. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-36_failed.log +0 -0
  146. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-46_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-36_passed.log +0 -0
  147. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-37_failed.log +0 -0
  148. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-57_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-37_passed.log +0 -0
  149. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-39_failed.log +0 -0
  150. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-03_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-39_passed.log +0 -0
  151. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-40_failed.log +0 -0
  152. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-12_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-40_passed.log +0 -0
  153. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-42_failed.log +0 -0
  154. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-15_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-42_passed.log +0 -0
  155. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-46_failed.log +0 -0
  156. /socx_cli-0.2.8/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-17_passed.log → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-46_passed.log +0 -0
  157. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-57_failed.log +0 -0
  158. /socx_cli-0.2.8/src/socx_patches/__init__.py → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/09-57_passed.log +0 -0
  159. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-03_failed.log +0 -0
  160. /socx_cli-0.2.8/src/socx_plugins/__init__.py → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-03_passed.log +0 -0
  161. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-12_failed.log +0 -0
  162. /socx_cli-0.2.8/src/socx_plugins/convert/__init__.py → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-12_passed.log +0 -0
  163. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-15_failed.log +0 -0
  164. /socx_cli-0.2.8/src/socx_plugins/regression/__init__.py → /socx_cli-0.2.10/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-15_passed.log +0 -0
  165. {socx_cli-0.2.8 → socx_cli-0.2.10}/scripts/socx/assets/rgr/rerun_failures/02-03-2025/10-17_failed.log +0 -0
  166. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/__init__.py +0 -0
  167. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/__main__.py +0 -0
  168. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/_config.py +0 -0
  169. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/_meta.py +0 -0
  170. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/cli/__init__.py +0 -0
  171. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/cli/_cli.py +0 -0
  172. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/cli/_params.py +0 -0
  173. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/cli/_rich.py +0 -0
  174. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/cli/cli.py +0 -0
  175. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/config.py +0 -0
  176. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/console.py +0 -0
  177. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/converter.py +0 -0
  178. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/decorators.py +0 -0
  179. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/formatter.py +0 -0
  180. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/log.py +0 -0
  181. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/memory.py +0 -0
  182. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/mixins.py +0 -0
  183. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/parser.py +0 -0
  184. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/reader.py +0 -0
  185. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/regression/__init__.py +0 -0
  186. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/regression/status.py +0 -0
  187. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/settings/converter.toml +0 -0
  188. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/settings/filetypes.toml +0 -0
  189. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/settings/plugins.toml +0 -0
  190. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/settings/regression.toml +0 -0
  191. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/settings/settings.toml +0 -0
  192. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/static/sql/socx.sql +0 -0
  193. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/tokenizer.py +0 -0
  194. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/validators.py +0 -0
  195. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/visitor.py +0 -0
  196. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx/writer.py +0 -0
  197. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_patches/post_process_sim_log.py +0 -0
  198. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/config.py +0 -0
  199. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/convert/lst.py +0 -0
  200. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/example.py +0 -0
  201. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/regression/_opts.py +0 -0
  202. {socx_cli-0.2.8 → socx_cli-0.2.10}/src/socx_plugins/regression/cli.py +0 -0
  203. {socx_cli-0.2.8 → socx_cli-0.2.10}/tests/test_uid.py +0 -0
  204. {socx_cli-0.2.8 → socx_cli-0.2.10}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: socx-cli
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Summary: System on chip verification and tooling infrastructure.
5
5
  Project-URL: Homepage, https://github.com/runsonmymachine/socx
6
6
  Project-URL: Issues, https://github.com/runsonmymachine/socx/issues
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -0,0 +1,11 @@
1
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 0
2
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1609892603
3
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_rdi_lc_vbat.cfg --seed 1689043616
4
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 0
5
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 474267113
6
+ socrun --flow sim --test vbat/pixie_fll_fw_basic_test_symclb_vbat.cfg --seed 533510332
7
+ socrun --flow sim --test vbat/pixie_fw_func_test_dma_vbat.cfg --seed 23688557
8
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_branch_vbat.cfg --seed 1033297733
9
+ socrun --flow sim --test vbat/pixie_fw_func_test_hws_basic_vbat.cfg --seed 732274191
10
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 249137077
11
+ socrun --flow sim --test vbat/pixie_fw_radio_test_vbat.cfg --seed 824307247
@@ -15,7 +15,7 @@ packages = ["src/socx", "src/socx_plugins", "src/socx_patches"]
15
15
  #
16
16
  [project]
17
17
  name = "socx-cli"
18
- version = "0.2.8"
18
+ version = "0.2.10"
19
19
  readme = "README.md"
20
20
  license = "Apache-2.0 OR MIT"
21
21
  authors = [ { name = "Sagi Kimhi", email = "sagi.kim5@gmail.com" } ]
@@ -136,19 +136,6 @@ class Regression(TestBase):
136
136
  async def start(self) -> None:
137
137
  """Start the regression."""
138
138
  self._status = TestStatus.Pending
139
- now = strftime("%H-%M")
140
- today = strftime("%d-%m-%Y")
141
- tests = set(iter(self))
142
- report_dir = Path(self.cfg.report.path) / today
143
- report_dir.mkdir(parents=True, exist_ok=True)
144
- passed_filepath = report_dir / f"{now}_passed.log"
145
- failed_filepath = report_dir / f"{now}_failed.log"
146
- passed_file = open_file(
147
- str(passed_filepath), mode="w", encoding="utf-8", lazy=True
148
- )
149
- failed_file = open_file(
150
- str(failed_filepath), mode="w", encoding="utf-8", lazy=True
151
- )
152
139
  try:
153
140
  async with aio.TaskGroup() as tg:
154
141
  tg.create_task(self._animate_progress())
@@ -158,18 +145,13 @@ class Regression(TestBase):
158
145
  self._status = TestStatus.Finished
159
146
  self._result = (
160
147
  TestResult.Passed
161
- if all(test.result == TestResult.Passed for test in self)
148
+ if all(test.passed for test in self)
162
149
  else TestResult.Failed
163
150
  )
164
151
  except Exception:
165
152
  self._status = TestStatus.Terminated
166
153
  self._result = TestResult.Failed
167
154
  raise
168
- finally:
169
- passed = {test for test in tests if test.passed}
170
- failed = tests.difference(passed)
171
- passed_file.write("\n".join(test.command.line for test in passed))
172
- failed_file.write("\n".join(test.command.line for test in failed))
173
155
 
174
156
  @override
175
157
  def suspend(self) -> None:
@@ -245,7 +227,7 @@ class Regression(TestBase):
245
227
  try:
246
228
  test = await self.pending.get()
247
229
  await self.messages.put(f"Runner({test.name}): running...")
248
- await aio.create_task(test.start())
230
+ await test.start()
249
231
  await self.messages.put(f"Runner({test.name}): done.")
250
232
  self._runner_advance()
251
233
  finally:
@@ -276,6 +258,7 @@ class Regression(TestBase):
276
258
  while not self.messages.empty():
277
259
  try:
278
260
  msgs += await self.messages.get()
261
+ msgs += "\n"
279
262
  finally:
280
263
  self.messages.task_done()
281
264
  return msgs
@@ -224,17 +224,17 @@ class Test(TestBase, UIDMixin):
224
224
  @property
225
225
  def idle(self) -> bool:
226
226
  """True if test has no active process and has not yet started."""
227
- return self._proc is None
227
+ return self._proc is None and self.status is TestStatus.Idle
228
228
 
229
229
  @property
230
230
  def pending(self):
231
231
  """The test is scheduled to be started soon but has not yet started."""
232
- return self._status == TestStatus.Pending
232
+ return self._proc is None and self.status == TestStatus.Pending
233
233
 
234
234
  @property
235
235
  def started(self) -> bool:
236
236
  """True if test was started via a prior call to method `start`."""
237
- return self._proc is not None
237
+ return self._proc is not None and self.status is TestStatus.Running
238
238
 
239
239
  @property
240
240
  def suspended(self) -> bool:
@@ -249,27 +249,33 @@ class Test(TestBase, UIDMixin):
249
249
  @property
250
250
  def finished(self) -> bool:
251
251
  """True if test finished running without normally interruption."""
252
- return self.started and self.returncode is not None
252
+ return (
253
+ self.started
254
+ and self.returncode is not None
255
+ and self.status is TestStatus.Finished
256
+ )
253
257
 
254
258
  @property
255
259
  def terminated(self) -> bool:
256
260
  """True if test started but was intentionaly terminated."""
257
- return self.finished and self.returncode < 0
261
+ return self.started and self.status is TestStatus.Terminated
258
262
 
259
263
  @property
260
264
  def passed(self) -> bool:
261
265
  """True if test has finished running and no errors occured."""
262
- return self.finished and self.returncode == 0
266
+ # change back to finished and return_code == 0 once patch is removed
267
+ return self.finished and self.result is TestResult.Passed
263
268
 
264
269
  @property
265
270
  def failed(self) -> bool:
266
271
  """True if test finished running and at least one error occured."""
267
- return self.finished and self.returncode > 0
272
+ # change back to finished and return_code != 0 once patch is removed
273
+ return self.finished and self.result is TestResult.Failed
268
274
 
269
275
  @property
270
276
  def stdin(self) -> TextIO | None:
271
277
  """The standard input of the test's process or None if not running."""
272
- return self._proc.stdin.decode() if self.running else None
278
+ return None # not currently needed, can be overriden by subclass
273
279
 
274
280
  @property
275
281
  def stdout(self) -> TextIO | None:
@@ -320,7 +326,7 @@ class Test(TestBase, UIDMixin):
320
326
  @property
321
327
  def runtime_logs(self):
322
328
  """Get the simulation's configured runtime path for ouput logs."""
323
- return self.runtime_path/self.runtime_cfg.logs.directory
329
+ return self.runtime_path / self.runtime_cfg.logs.directory
324
330
 
325
331
  @property
326
332
  def dirname(self):
@@ -330,7 +336,7 @@ class Test(TestBase, UIDMixin):
330
336
  @override
331
337
  async def start(self) -> None:
332
338
  """Start a test in a subprocess."""
333
- if not self.idle:
339
+ if self.status not in (TestStatus.Idle, TestStatus.Pending):
334
340
  msg = "Cannot start a test when it is already running."
335
341
  exc = OSError(msg)
336
342
  logger.exception(msg, exc_info=exc, stack_info=True)
@@ -402,7 +408,7 @@ class Test(TestBase, UIDMixin):
402
408
  def _parse_result(self) -> TestResult:
403
409
  logger.debug(f"parsing result from {self.runtime_path}")
404
410
  result_hack = pp_simlog.TestResults()
405
- result_hack.reset_log(self.runtime_logs/"run.log")
411
+ result_hack.reset_log(self.runtime_logs / "run.log")
406
412
  try:
407
413
  result_hack.parse_log()
408
414
  except ValueError:
File without changes
File without changes
File without changes
@@ -1,5 +1,4 @@
1
1
  import time
2
- import asyncio as aio
3
2
  from pathlib import Path
4
3
 
5
4
  import click
@@ -7,7 +6,10 @@ from dynaconf.utils.boxing import DynaBox
7
6
 
8
7
  from socx import Regression
9
8
  from socx import settings
10
- from socx import logger
9
+ from socx import get_logger
10
+
11
+
12
+ logger = get_logger(__name__)
11
13
 
12
14
 
13
15
  def _correct_path_in(input_path: str | Path | None = None) -> Path:
@@ -27,26 +29,26 @@ def _correct_paths_out(
27
29
  now = time.strftime("%H-%M")
28
30
  today = time.strftime("%d-%m-%Y")
29
31
  if output_path is None:
30
- output_path: DynaBox = settings.regression.rerun_failure_history.output
32
+ output_path: DynaBox = settings.regression.report.path
31
33
  dir_out: Path = Path(output_path.directory) / today
32
- fail_out: Path = Path(dir_out / f"{now}_failed.log")
33
- pass_out: Path = Path(dir_out / f"{now}_passed.log")
34
+ fail_out: Path = Path(dir_out) / f"{now}_failed.log"
35
+ pass_out: Path = Path(dir_out) / f"{now}_passed.log"
34
36
  else:
35
- fail_out: Path = Path(output_path / f"{now}_failed.log")
36
- pass_out: Path = Path(output_path / f"{now}_passed.log")
37
+ fail_out: Path = Path(output_path) / f"{now}_failed.log"
38
+ pass_out: Path = Path(output_path) / f"{now}_passed.log"
37
39
  fail_out.parent.mkdir(parents=True, exist_ok=True)
38
40
  pass_out.parent.mkdir(parents=True, exist_ok=True)
39
41
  return pass_out, fail_out
40
42
 
41
43
 
42
44
  def _write_results(
43
- fail_out: str | Path,
44
45
  pass_out: str | Path,
46
+ fail_out: str | Path,
45
47
  regression: Regression,
46
48
  ) -> None:
47
49
  with (
48
- open(fail_out, mode="w", encoding="utf-8") as ff,
49
- open(pass_out, mode="w", encoding="utf-8") as pf,
50
+ click.open_file(fail_out, mode="w", encoding="utf-8") as ff,
51
+ click.open_file(pass_out, mode="w", encoding="utf-8") as pf,
50
52
  ):
51
53
  for test in regression:
52
54
  if test.passed:
@@ -68,4 +70,7 @@ async def _run_from_file(
68
70
  path_in = _correct_path_in(input)
69
71
  regression = _populate_regression(path_in)
70
72
  pass_out, fail_out = _correct_paths_out(output)
71
- await regression.start()
73
+ try:
74
+ await regression.start()
75
+ finally:
76
+ _write_results(pass_out, fail_out, regression)
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