smart-tests-cli 2.15.0__tar.gz → 2.15.2__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 (681) hide show
  1. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/PKG-INFO +2 -1
  2. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/pyproject.toml +1 -0
  3. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/session.py +2 -2
  4. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/tests.py +24 -10
  5. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/verify.py +21 -12
  6. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/jar/exe_deploy.jar +0 -0
  7. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/karma.py +2 -2
  8. smart_tests_cli-2.15.2/smart_tests/utils/authentication.py +155 -0
  9. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/env_keys.py +10 -0
  10. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/java.py +18 -1
  11. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/PKG-INFO +2 -1
  12. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/SOURCES.txt +2 -0
  13. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/requires.txt +1 -0
  14. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/scm_file_list.json +2 -0
  15. smart_tests_cli-2.15.2/smart_tests_cli.egg-info/scm_version.json +8 -0
  16. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +43 -2
  17. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/Main.java +21 -2
  18. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_tests.py +32 -0
  19. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_verify.py +39 -1
  20. smart_tests_cli-2.15.2/tests/data/maven/record_test_nested_displayname_result.json +27 -0
  21. smart_tests_cli-2.15.2/tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml +4 -0
  22. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_maven.py +44 -35
  23. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_authentication.py +82 -0
  24. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/uv.lock +14 -0
  25. smart_tests_cli-2.15.0/smart_tests/utils/authentication.py +0 -99
  26. smart_tests_cli-2.15.0/smart_tests_cli.egg-info/scm_version.json +0 -8
  27. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.bazelrc +0 -0
  28. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.bazelversion +0 -0
  29. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.claude/skills/merge-v1-to-main/SKILL.md +0 -0
  30. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.dockerignore +0 -0
  31. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.editorconfig +0 -0
  32. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/release.yml +0 -0
  33. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/bazel-test.yml +0 -0
  34. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/e2e.yml +0 -0
  35. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/pre-commit.yml +0 -0
  36. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/publish.yml +0 -0
  37. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/test.yml +0 -0
  38. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/update_maven_install_json.yml +0 -0
  39. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.gitignore +0 -0
  40. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.pre-commit-config.yaml +0 -0
  41. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.python-version +0 -0
  42. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.tagpr +0 -0
  43. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/CLAUDE.md +0 -0
  44. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/CONTRIBUTING.md +0 -0
  45. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/Dockerfile +0 -0
  46. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/LICENSE.txt +0 -0
  47. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/MODULE.bazel +0 -0
  48. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/MODULE.bazel.lock +0 -0
  49. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/README.md +0 -0
  50. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/WORKSPACE.bzlmod +0 -0
  51. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/build-java.sh +0 -0
  52. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/renovate.json +0 -0
  53. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/scripts/update_docs.sh +0 -0
  54. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/scripts/update_schema.sh +0 -0
  55. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/setup.cfg +0 -0
  56. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/setup.py +0 -0
  57. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/__init__.py +0 -0
  58. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/__main__.py +0 -0
  59. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/app.py +0 -0
  60. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/README.md +0 -0
  61. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/__init__.py +0 -0
  62. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/argument.py +0 -0
  63. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/command.py +0 -0
  64. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/converters/__init__.py +0 -0
  65. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/decorators.py +0 -0
  66. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/exceptions.py +0 -0
  67. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/option.py +0 -0
  68. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/parameter.py +0 -0
  69. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/typer/__init__.py +0 -0
  70. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/__init__.py +0 -0
  71. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/analyze/__init__.py +0 -0
  72. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/analyze/subset.py +0 -0
  73. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/compare/__init__.py +0 -0
  74. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/compare/subsets.py +0 -0
  75. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/detect_flakes.py +0 -0
  76. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/gate.py +0 -0
  77. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/__init__.py +0 -0
  78. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/api_schema.py +0 -0
  79. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/docs.py +0 -0
  80. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/__init__.py +0 -0
  81. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/model.py +0 -0
  82. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/subset.py +0 -0
  83. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/tests.py +0 -0
  84. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/__init__.py +0 -0
  85. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/attachment.py +0 -0
  86. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/build.py +0 -0
  87. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/case_event.py +0 -0
  88. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/commit.py +0 -0
  89. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/deployment.py +0 -0
  90. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/stats/__init__.py +0 -0
  91. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/stats/test_sessions.py +0 -0
  92. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/subset.py +0 -0
  93. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/test_path_writer.py +0 -0
  94. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/update/__init__.py +0 -0
  95. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/update/alias.py +0 -0
  96. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/__init__.py +0 -0
  97. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/flaky_tests.py +0 -0
  98. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/longest_tests.py +0 -0
  99. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/never_failing_tests.py +0 -0
  100. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/test_results.py +0 -0
  101. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/antora.yml +0 -0
  102. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/adb.adoc +0 -0
  103. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ant.adoc +0 -0
  104. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/bazel.adoc +0 -0
  105. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/behave.adoc +0 -0
  106. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations/github-actions.adoc +0 -0
  107. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations.adoc +0 -0
  108. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ctest.adoc +0 -0
  109. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/cucumber.adoc +0 -0
  110. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/cypress.adoc +0 -0
  111. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/dotnet-test.adoc +0 -0
  112. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/flutter.adoc +0 -0
  113. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/go-test.adoc +0 -0
  114. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/googletest.adoc +0 -0
  115. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/gradle.adoc +0 -0
  116. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/jest.adoc +0 -0
  117. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/karma.adoc +0 -0
  118. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/maven.adoc +0 -0
  119. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/minitest.adoc +0 -0
  120. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/playwright.adoc +0 -0
  121. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/prove.adoc +0 -0
  122. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/pytest.adoc +0 -0
  123. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/robot.adoc +0 -0
  124. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/rspec.adoc +0 -0
  125. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/c-plus-plus.adoc +0 -0
  126. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/dotnet.adoc +0 -0
  127. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/go.adoc +0 -0
  128. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/java.adoc +0 -0
  129. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/javascript.adoc +0 -0
  130. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/perl.adoc +0 -0
  131. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/python.adoc +0 -0
  132. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/ruby.adoc +0 -0
  133. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/appium.adoc +0 -0
  134. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/cucumber.adoc +0 -0
  135. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/googletest.adoc +0 -0
  136. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/jest.adoc +0 -0
  137. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/junit.adoc +0 -0
  138. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/minitest.adoc +0 -0
  139. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nose.adoc +0 -0
  140. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nunit.adoc +0 -0
  141. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/prove.adoc +0 -0
  142. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/robot.adoc +0 -0
  143. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/rspec.adoc +0 -0
  144. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/selenium.adoc +0 -0
  145. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/testng.adoc +0 -0
  146. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/vitest.adoc +0 -0
  147. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/xctest.adoc +0 -0
  148. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
  149. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
  150. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
  151. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/507088cf-209d-4856-be3e-60477c166d92.png +0 -0
  152. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
  153. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
  154. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
  155. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
  156. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
  157. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
  158. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
  159. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
  160. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/groups-2-record-after.png +0 -0
  161. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/auto-quarantine.png +0 -0
  162. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/failure-test.png +0 -0
  163. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/manual-quarantine.png +0 -0
  164. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/how-long-train-ml-model.png +0 -0
  165. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/icons/icon-vertical-three-dots-dark.png +0 -0
  166. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustion-run-whitelisted-tests-1.png +0 -0
  167. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-ignore-flakes-1.png +0 -0
  168. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-rotate-optimize-coverage.png +0 -0
  169. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-run-recently-failed-tests.png +0 -0
  170. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
  171. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/link-to-results-example.png +0 -0
  172. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/model-training-evaluation-confidence-curves.png +0 -0
  173. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/new-code-existing-tests.png +0 -0
  174. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
  175. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
  176. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
  177. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
  178. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/predictive-test-selection-observation-mode.png +0 -0
  179. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
  180. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/pts/pts-observe.png +0 -0
  181. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
  182. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
  183. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately-detailed.png +0 -0
  184. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately.png +0 -0
  185. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos.png +0 -0
  186. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-41-20.png +0 -0
  187. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-44-15.png +0 -0
  188. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-45-10.png +0 -0
  189. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-08-22-at-22-50-49.png +0 -0
  190. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-1-48-30-pm.png +0 -0
  191. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-2-14-11-pm.png +0 -0
  192. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-4-50-56-pm.png +0 -0
  193. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-06-32-pm.png +0 -0
  194. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-09-04-pm.png +0 -0
  195. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-21-37-pm.png +0 -0
  196. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/builds-dashboard.png +0 -0
  197. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/create-api-key.png +0 -0
  198. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/initial-settings.png +0 -0
  199. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/organization-profile-id.png +0 -0
  200. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/record-session.png +0 -0
  201. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/test-session-interface.png +0 -0
  202. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
  203. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
  204. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
  205. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/slack-desktop-with-app-messages.png +0 -0
  206. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-subset-formation-flow.png +0 -0
  207. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-builds-interface-v1png.png +0 -0
  208. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-cli-3.png +0 -0
  209. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-monthly-time-saved.png +0 -0
  210. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_api_key_setting_20210613.png +0 -0
  211. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_invite_url_20220613.png +0 -0
  212. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_settings_20220613.png +0 -0
  213. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
  214. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset/dynamic-parallel.png +0 -0
  215. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
  216. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
  217. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
  218. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
  219. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
  220. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
  221. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
  222. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-2.png +0 -0
  223. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-3.png +0 -0
  224. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-4.png +0 -0
  225. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
  226. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-details-with-content.png +0 -0
  227. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-report-example.png +0 -0
  228. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
  229. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
  230. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
  231. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
  232. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
  233. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
  234. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
  235. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
  236. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
  237. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
  238. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
  239. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
  240. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
  241. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/data-examples.adoc +0 -0
  242. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/data-privacy-and-protection.adoc +0 -0
  243. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/security-policies.adoc +0 -0
  244. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/troubleshooting.adoc +0 -0
  245. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
  246. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
  247. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
  248. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
  249. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
  250. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
  251. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
  252. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
  253. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
  254. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/high-failure-rate-tests-and-quarantine.adoc +0 -0
  255. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
  256. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/how-we-select-tests.adoc +0 -0
  257. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/use-cases-for-predictive-test-selection.adoc +0 -0
  258. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/viewing-time-savings.adoc +0 -0
  259. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
  260. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications/github-app-for-test-sessions.adoc +0 -0
  261. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications/test-notifications-via-slack.adoc +0 -0
  262. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
  263. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
  264. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
  265. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-trends-and-insights.adoc +0 -0
  266. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/ai-assistance.adoc +0 -0
  267. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/cli-reference.adoc +0 -0
  268. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/cli-version.txt +0 -0
  269. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/faq.adoc +0 -0
  270. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations/raw.adoc +0 -0
  271. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations/use-the-generic-file-based-runner-integration.adoc +0 -0
  272. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations.adoc +0 -0
  273. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide/best-practices-checklist.adoc +0 -0
  274. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide/optional-configurations.adoc +0 -0
  275. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide.adoc +0 -0
  276. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/supported-languages.adoc +0 -0
  277. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/supported-test-frameworks.adoc +0 -0
  278. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/choose-a-value-for-build-name.adoc +0 -0
  279. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/deal-with-shallow-clones.adoc +0 -0
  280. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-microservices.adoc +0 -0
  281. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-multistage-build.adoc +0 -0
  282. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-from-multiple-repositories.adoc +0 -0
  283. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds.adoc +0 -0
  284. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/run-under-restricted-networks.adoc +0 -0
  285. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-sessions/record-sessions.adoc +0 -0
  286. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/attach-log-files.adoc +0 -0
  287. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/convert-test-reports-to-junit-format.adoc +0 -0
  288. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/ensure-record-tests-always-runs.adoc +0 -0
  289. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/manage-complex-test-session-layouts.adoc +0 -0
  290. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/record-test-results.adoc +0 -0
  291. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/separate-out-test-suites.adoc +0 -0
  292. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/use-flavors-to-run-the-best-tests-for-an-environment.adoc +0 -0
  293. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/send-data-to-smart-tests.adoc +0 -0
  294. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/getting-started.adoc +0 -0
  295. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/migration-to-github-oidc-auth.adoc +0 -0
  296. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/use-the-cli-with-docker-image.adoc +0 -0
  297. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/choose-a-subset-optimization-target.adoc +0 -0
  298. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/combine-with-rule-based-test-selection.adoc +0 -0
  299. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/observe-subset-behavior.adoc +0 -0
  300. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/replace-static-parallel-suites-dynamic-parallel-subset.adoc +0 -0
  301. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/request-and-run-a-subset-of-tests.adoc +0 -0
  302. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-subset-optimization-target.adoc +0 -0
  303. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-tests-extension-for-VS-code.adoc +0 -0
  304. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-predictive-test-selection.adoc +0 -0
  305. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-with-the-smart-tests-cli.adoc +0 -0
  306. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/use-groups-to-split-subsets.adoc +0 -0
  307. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/zero-input-subsetting.adoc +0 -0
  308. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/plugins/__init__.py +0 -0
  309. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/schema/openapi-schema.json +0 -0
  310. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/__init__.py +0 -0
  311. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/adb.py +0 -0
  312. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/ant.py +0 -0
  313. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/bazel.py +0 -0
  314. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/behave.py +0 -0
  315. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/codeceptjs.py +0 -0
  316. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/ctest.py +0 -0
  317. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cts.py +0 -0
  318. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cucumber.py +0 -0
  319. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cypress.py +0 -0
  320. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/dotnet.py +0 -0
  321. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/file.py +0 -0
  322. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/flutter.py +0 -0
  323. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/go_test.py +0 -0
  324. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/googletest.py +0 -0
  325. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/gradle.py +0 -0
  326. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/jasmine.py +0 -0
  327. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/jest.py +0 -0
  328. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/maven.py +0 -0
  329. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/minitest.py +0 -0
  330. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/nunit.py +0 -0
  331. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/playwright.py +0 -0
  332. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/prove.py +0 -0
  333. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/pytest.py +0 -0
  334. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/raw.py +0 -0
  335. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/robot.py +0 -0
  336. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/rspec.py +0 -0
  337. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/smart_tests.py +0 -0
  338. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/vitest.py +0 -0
  339. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/xctest.py +0 -0
  340. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/testpath.py +0 -0
  341. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/__init__.py +0 -0
  342. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/ci_provider.py +0 -0
  343. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/commands.py +0 -0
  344. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/commit_ingester.py +0 -0
  345. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/common_tz.py +0 -0
  346. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/edit_distance.py +0 -0
  347. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/exceptions.py +0 -0
  348. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/fail_fast_mode.py +0 -0
  349. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/file_name_pattern.py +0 -0
  350. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/git_log_parser.py +0 -0
  351. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/glob.py +0 -0
  352. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/gzipgen.py +0 -0
  353. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/http_client.py +0 -0
  354. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/input_snapshot.py +0 -0
  355. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/link.py +0 -0
  356. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/logger.py +0 -0
  357. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/no_build.py +0 -0
  358. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/sax.py +0 -0
  359. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/session.py +0 -0
  360. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/smart_tests_client.py +0 -0
  361. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/subprocess.py +0 -0
  362. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/tracking.py +0 -0
  363. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/typer_types.py +0 -0
  364. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/version.py +0 -0
  365. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
  366. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/entry_points.txt +0 -0
  367. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/top_level.txt +0 -0
  368. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/BUILD +0 -0
  369. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  370. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
  371. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
  372. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
  373. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
  374. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
  375. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
  376. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
  377. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  378. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
  379. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
  380. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
  381. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  382. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
  383. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
  384. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
  385. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  386. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
  387. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
  388. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  389. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
  390. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  391. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  392. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
  393. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
  394. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/maven_install.json +0 -0
  395. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
  396. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
  397. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
  398. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
  399. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
  400. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
  401. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/GitFileTest.java +0 -0
  402. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
  403. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
  404. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
  405. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  406. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  407. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/test-runner/__main__.py +0 -0
  408. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/__init__.py +0 -0
  409. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/__init__.py +0 -0
  410. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/converters/__init__.py +0 -0
  411. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/converters/test_converters.py +0 -0
  412. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_badcode.py +0 -0
  413. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_badinput.py +0 -0
  414. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_command.py +0 -0
  415. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_decorators.py +0 -0
  416. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_help.py +0 -0
  417. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_parameter.py +0 -0
  418. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_typer.py +0 -0
  419. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/cli_test_case.py +0 -0
  420. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/__init__.py +0 -0
  421. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/compare/__init__.py +0 -0
  422. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/compare/test_subsets.py +0 -0
  423. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_model.py +0 -0
  424. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_subset.py +0 -0
  425. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_tests.py +0 -0
  426. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/__init__.py +0 -0
  427. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_attachment.py +0 -0
  428. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_build.py +0 -0
  429. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_case_event.py +0 -0
  430. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_commit.py +0 -0
  431. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_deployment.py +0 -0
  432. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_session.py +0 -0
  433. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_api_error.py +0 -0
  434. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_detect_flakes.py +0 -0
  435. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_gate.py +0 -0
  436. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_subset.py +0 -0
  437. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_flaky_tests.py +0 -0
  438. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_longest_tests.py +0 -0
  439. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_never_failing_tests.py +0 -0
  440. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_test_results.py +0 -0
  441. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/update/__init__.py +0 -0
  442. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/update/test_alias.py +0 -0
  443. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/adb/subset_result.json +0 -0
  444. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
  445. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
  446. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  447. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/record_test_result.json +0 -0
  448. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
  449. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
  450. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/library/Cache.java +0 -0
  451. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
  452. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/subset_result.json +0 -0
  453. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  454. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +0 -0
  455. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
  456. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  457. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  458. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  459. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  460. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  461. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  462. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  463. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  464. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  465. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  466. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  467. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  468. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  469. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  470. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  471. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  472. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/build_event.json +0 -0
  473. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/build_event_rest.json +0 -0
  474. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_result.json +0 -0
  475. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
  476. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
  477. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/subset_result.json +0 -0
  478. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/record_test_result.json +0 -0
  479. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/reports/report.xml +0 -0
  480. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/subset_result.json +0 -0
  481. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/broken_xml/broken.xml +0 -0
  482. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/broken_xml/normal.xml +0 -0
  483. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
  484. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/codeceptjs/record_test_result.json +0 -0
  485. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  486. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/ctest_list.json +0 -0
  487. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/record_test_result.json +0 -0
  488. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/subset_result.json +0 -0
  489. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/record_test_result.json +0 -0
  490. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/subset_result.json +0 -0
  491. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/test_result.xml +0 -0
  492. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo/bar.feature +0 -0
  493. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  494. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo-bar.feature +0 -0
  495. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  496. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/record_test_json_result.json +0 -0
  497. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/record_test_result.json +0 -0
  498. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  499. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  500. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  501. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/dummy.xml +0 -0
  502. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/result.json +0 -0
  503. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/empty.json +0 -0
  504. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/empty.xml +0 -0
  505. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/record_test_result.json +0 -0
  506. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/subset_result.json +0 -0
  507. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/test-result.xml +0 -0
  508. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/junit-result-with-metadata.xml +0 -0
  509. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/junit-result.xml +0 -0
  510. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result-junit-with-metadata.json +0 -0
  511. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result-junit.json +0 -0
  512. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result.json +0 -0
  513. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/test-result.xml +0 -0
  514. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/record_test_result.json +0 -0
  515. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/record_test_result_custom_attribute.json +0 -0
  516. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/result.xml +0 -0
  517. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/result_custom_attribute.xml +0 -0
  518. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/flutter/record_test_result.json +0 -0
  519. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/flutter/report.json +0 -0
  520. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/git_log_ingest/sample.out +0 -0
  521. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/record_test_result.json +0 -0
  522. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  523. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  524. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/subset_result.json +0 -0
  525. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/fail/output.xml +0 -0
  526. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/fail/record_test_result.json +0 -0
  527. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/output_a.xml +0 -0
  528. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/output_b.xml +0 -0
  529. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/record_test_result.json +0 -0
  530. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/subset_result.json +0 -0
  531. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
  532. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
  533. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
  534. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/recursion/expected.json +0 -0
  535. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  536. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/README.md +0 -0
  537. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
  538. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/jasmine-test-results.json +0 -0
  539. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/record_test_result.json +0 -0
  540. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/subset_payload.json +0 -0
  541. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/junit.xml +0 -0
  542. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/record_test_result.json +0 -0
  543. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/subset_result.json +0 -0
  544. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/README.md +0 -0
  545. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/record_test_result.json +0 -0
  546. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/sample-report.json +0 -0
  547. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/subset_payload.json +0 -0
  548. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/subset_result.json +0 -0
  549. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/createdFile_1.lst +0 -0
  550. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/createdFile_2.lst +0 -0
  551. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml +0 -0
  552. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml +0 -0
  553. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
  554. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
  555. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java +0 -0
  556. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/list.lst +0 -0
  557. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/record_test_result.json +0 -0
  558. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-1.xml +0 -0
  559. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-2.xml +0 -0
  560. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-nested.xml +0 -0
  561. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/dummy.xml +0 -0
  562. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
  563. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_by_confidence_result.json +0 -0
  564. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_from_file_result.json +0 -0
  565. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_result.json +0 -0
  566. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_scan_dryrun_results_result.json +0 -0
  567. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
  568. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
  569. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  570. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  571. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  572. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  573. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserTest.xml +0 -0
  574. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result.json +0 -0
  575. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  576. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  577. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/subset_result.json +0 -0
  578. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/test/example_test.rb +0 -0
  579. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/list.xml +0 -0
  580. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  581. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  582. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/output-linux.xml +0 -0
  583. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/output-windows.xml +0 -0
  584. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/record_test_result-linux.json +0 -0
  585. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/record_test_result-windows.json +0 -0
  586. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/.gitignore +0 -0
  587. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/Program.cs +0 -0
  588. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/README.md +0 -0
  589. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/Test.cs +0 -0
  590. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/calc.csproj +0 -0
  591. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/subset_result.json +0 -0
  592. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/packages/e2e/.gitkeep +0 -0
  593. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/playwright.config.ts +0 -0
  594. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result.json +0 -0
  595. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_json.json +0 -0
  596. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_json_base.json +0 -0
  597. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_prefix.json +0 -0
  598. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report.json +0 -0
  599. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report.xml +0 -0
  600. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report_with_json_base.json +0 -0
  601. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report_with_prefix.json +0 -0
  602. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/prove/record_test_result.json +0 -0
  603. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/prove/report.xml +0 -0
  604. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/pytest.ini +0 -0
  605. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/record_test_result.json +0 -0
  606. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/record_test_result_json.json +0 -0
  607. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/report.json +0 -0
  608. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/report.xml +0 -0
  609. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/subset_result.json +0 -0
  610. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/conftest.py +0 -0
  611. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/__init__.py +0 -0
  612. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  613. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  614. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/funcs3_test.py +0 -0
  615. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/test_funcs1.py +0 -0
  616. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/test_funcs2.py +0 -0
  617. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/dryrun.xml +0 -0
  618. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/output.xml +0 -0
  619. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/output_legacy.xml +0 -0
  620. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  621. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_legacy_result.json +0 -0
  622. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_result.json +0 -0
  623. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/single-output.xml +0 -0
  624. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/subset_result.json +0 -0
  625. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/rspec/record_test_result.json +0 -0
  626. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/rspec/rspec.xml +0 -0
  627. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/vitest/record_test_result.json +0 -0
  628. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/vitest/report.xml +0 -0
  629. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/junit.xml +0 -0
  630. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/record_test_result.json +0 -0
  631. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/subset_result.json +0 -0
  632. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/helper.py +0 -0
  633. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/plugins/foo.py +0 -0
  634. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_cli_test_case.py +0 -0
  635. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_plugin.py +0 -0
  636. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/__init__.py +0 -0
  637. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_adb.py +0 -0
  638. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_ant.py +0 -0
  639. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_bazel.py +0 -0
  640. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_behave.py +0 -0
  641. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_codeceptjs.py +0 -0
  642. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_ctest.py +0 -0
  643. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cts.py +0 -0
  644. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cucumber.py +0 -0
  645. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cypress.py +0 -0
  646. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_dotnet.py +0 -0
  647. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_file.py +0 -0
  648. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_go_test.py +0 -0
  649. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_googletest.py +0 -0
  650. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_gradle.py +0 -0
  651. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_jasmine.py +0 -0
  652. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_jest.py +0 -0
  653. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_karma.py +0 -0
  654. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_minitest.py +0 -0
  655. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_nunit.py +0 -0
  656. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_playwright.py +0 -0
  657. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_prove.py +0 -0
  658. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_pytest.py +0 -0
  659. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_raw.py +0 -0
  660. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_robot.py +0 -0
  661. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_rspec.py +0 -0
  662. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_vitest.py +0 -0
  663. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_xctest.py +0 -0
  664. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_testpath.py +0 -0
  665. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_version.py +0 -0
  666. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/__init__.py +0 -0
  667. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_edit_distance.py +0 -0
  668. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_fail_fast_mode.py +0 -0
  669. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_file_name_pattern.py +0 -0
  670. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_git_log_parser.py +0 -0
  671. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_glob.py +0 -0
  672. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_gzipgen.py +0 -0
  673. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_http_client.py +0 -0
  674. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_link.py +0 -0
  675. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_logger.py +0 -0
  676. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_session.py +0 -0
  677. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_tracking.py +0 -0
  678. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_typer.py +0 -0
  679. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_typer_types.py +0 -0
  680. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tools/README.md +0 -0
  681. {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tools/generate_reference.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.15.0
3
+ Version: 2.15.2
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -20,6 +20,7 @@ Requires-Dist: python-dateutil>=2.9
20
20
  Requires-Dist: tabulate>=0.9
21
21
  Requires-Dist: click<8.2,>=8.1
22
22
  Requires-Dist: InquirerPy>=0.3.4
23
+ Requires-Dist: requests-toolbelt>=1.0.0
23
24
  Dynamic: license-file
24
25
 
25
26
  This is a CLI to interact with CloudBees Smart Tests.
@@ -19,6 +19,7 @@ dependencies = [
19
19
  "tabulate>=0.9",
20
20
  "click>=8.1,<8.2",
21
21
  "InquirerPy>=0.3.4",
22
+ "requests-toolbelt>=1.0.0",
22
23
  ]
23
24
  dynamic = ["version"]
24
25
 
@@ -97,8 +97,8 @@ def session(
97
97
  res = client.request("post", sub_path, payload=payload)
98
98
 
99
99
  if res.status_code == HTTPStatus.NOT_FOUND:
100
- msg = f"Build {build_name} was not found." \
101
- f"Make sure to run `launchable record build --build {build_name}` before you run this command."
100
+ msg = f"Build {build_name} was not found. " \
101
+ f"Make sure to run `smart-tests record build --build {build_name}` before you run this command."
102
102
  tracking_client.send_error_event(
103
103
  event_name=Tracking.ErrorEvent.INTERNAL_CLI_ERROR,
104
104
  stack_trace=msg,
@@ -12,6 +12,7 @@ import click
12
12
  from dateutil.parser import ParserError, parse
13
13
  from junitparser import JUnitXml, TestCase, TestSuite # type: ignore # noqa: F401
14
14
  from more_itertools import ichunked
15
+ from requests_toolbelt import MultipartEncoder # type: ignore
15
16
  from tabulate import tabulate
16
17
 
17
18
  import smart_tests.args4p.converters as converters
@@ -33,6 +34,13 @@ from ...utils.logger import Logger
33
34
  from ...utils.smart_tests_client import SmartTestsClient
34
35
  from .case_event import CaseEvent, CaseEventGenerator, CaseEventType, DataBuilder, TestPathBuilder
35
36
 
37
+ # Together with the workers sending events, this stays within urllib3's default pool size (10 connections per host)
38
+ MAX_RAW_FILE_UPLOAD_WORKERS = 5
39
+ # (connect timeout, read timeout)
40
+ # urllib3 applies the connect timeout to each write of the request body, too. The read timeout is long because
41
+ # the server may store the file before responding.
42
+ RAW_FILE_UPLOAD_TIMEOUT = (30, 300)
43
+
36
44
  GROUP_NAME_RULE = re.compile("^[a-zA-Z0-9][a-zA-Z0-9_-]*$")
37
45
  RESERVED_GROUP_NAMES = ["group", "groups", "nogroup", "nogroups"]
38
46
 
@@ -272,17 +280,19 @@ class RecordTests:
272
280
  url = f"{self.client.base_url()}{path}"
273
281
 
274
282
  with open(file_path, 'rb') as f:
275
- files = {'file': (os.path.basename(file_path), f)}
283
+ # Stream the multipart body instead of using `files=`. With `files=`, requests builds the whole body
284
+ # in memory and writes it in one go, and urllib3 applies the connect timeout to that write, so large
285
+ # files fail with "The write operation timed out".
286
+ body = MultipartEncoder(fields={'file': (os.path.basename(file_path), f)})
276
287
  headers = self.client.http_client._headers(compress=False)
277
- # Remove Content-Type header to let requests set it for multipart
278
- headers.pop('Content-Type', None)
288
+ headers['Content-Type'] = body.content_type
279
289
 
280
290
  response = self.client.http_client.session.request(
281
291
  'POST',
282
292
  url,
283
- files=files,
293
+ data=body,
284
294
  headers=headers,
285
- timeout=(5, 60),
295
+ timeout=RAW_FILE_UPLOAD_TIMEOUT,
286
296
  verify=(not self.client.http_client.skip_cert_verification)
287
297
  )
288
298
 
@@ -300,17 +310,21 @@ class RecordTests:
300
310
  self.logger.warning(f"Error uploading raw test result file {file_path}: {str(e)}")
301
311
  return False
302
312
 
303
- def upload_raw_files(self) -> None:
313
+ def upload_raw_files(self, executor: ThreadPoolExecutor) -> None:
304
314
 
305
315
  if self.reports and not self.dry_run:
306
316
  self.logger.debug(f"Uploading {len(self.reports)} raw test result file(s)")
307
317
  for report_file in self.reports:
308
- self.upload_raw_file(report_file)
318
+ executor.submit(self.upload_raw_file, report_file)
309
319
 
310
320
  def run(self):
311
- # Upload raw test result files before parsing
312
- self.upload_raw_files()
321
+ # Upload raw test result files in the background while parsing and recording test results,
322
+ # so that large files don't delay recording. Leaving the `with` block waits for the uploads to finish.
323
+ with ThreadPoolExecutor(max_workers=MAX_RAW_FILE_UPLOAD_WORKERS) as executor:
324
+ self.upload_raw_files(executor)
325
+ self._record_tests()
313
326
 
327
+ def _record_tests(self):
314
328
  count = 0 # count number of test cases sent
315
329
  is_observation = False
316
330
 
@@ -487,7 +501,7 @@ class RecordTests:
487
501
  url = self._get_test_session_url()
488
502
  click.echo(
489
503
  f"\nVisit {url} to view uploaded test results "
490
- f"(or run `launchable inspect tests --test-session-id {self.test_session_id}`)")
504
+ f"(or run `smart-tests inspect tests --test-session-id {self.test_session_id}`)")
491
505
 
492
506
  def _get_test_session_url(self) -> str:
493
507
  cbp_workspace = self.client.get_cbp_workspace()
@@ -18,7 +18,7 @@ from .. import args4p
18
18
  from ..app import Application
19
19
  from ..utils.authentication import ensure_org_workspace, get_oidc_token, get_org_workspace
20
20
  from ..utils.commands import Command
21
- from ..utils.env_keys import OIDC_TOKEN_KEY, ORGANIZATION_KEY, TOKEN_KEY, WORKSPACE_KEY
21
+ from ..utils.env_keys import GITHUB_OIDC_KEY, LEGACY_GITHUB_OIDC_KEY, OIDC_TOKEN_KEY, ORGANIZATION_KEY, TOKEN_KEY, WORKSPACE_KEY
22
22
  from ..utils.http_client import DEFAULT_GET_TIMEOUT, _HttpClient
23
23
  from ..utils.java import get_java_command
24
24
  from ..utils.smart_tests_client import SmartTestsClient
@@ -204,20 +204,27 @@ def verify_oidc(app_instance: Application):
204
204
  Credential-free OIDC bootstrap. Presents the pipeline's OIDC id-token to Intake's
205
205
  /intake/oidc/verify endpoint and translates the 200/403/401 contract into CLI behavior:
206
206
 
207
- - 200: the subject is registered. Print `export` lines (org/workspace/oidc-token) so the
208
- pipeline can `eval "$(smart-tests verify --oidc)"` and authenticate subsequent
209
- commands with the same token. Exit 0.
207
+ - 200: the subject is registered. Print `export` lines (org/workspace, plus the OIDC token
208
+ when it is a fixed pass-through value) so the pipeline can
209
+ `eval "$(smart-tests verify --oidc)"` and authenticate subsequent commands. Exit 0.
210
210
  - 403: the token verified but its subject isn't registered to any workspace yet. Show the
211
211
  normalized `sub` so the user can register it from the WebApp settings. Exit 1.
212
212
  - 401: the token is missing/expired/invalid. Exit 1.
213
213
  '''
214
214
  tracking_client = TrackingClient(Command.VERIFY, app=app_instance)
215
215
 
216
- token = get_oidc_token()
217
- if not token:
218
- msg = (f"OIDC authentication requires the {OIDC_TOKEN_KEY} environment variable to hold the "
219
- "pipeline's OIDC id-token. In Jenkins, bind an id-token credential to this variable; "
220
- "see the OIDC pipeline-authentication setup guide.")
216
+ # authentication_headers() supplies the bearer for the request below; here we only confirm an OIDC
217
+ # flow is configured (fail fast) and decide whether the token can be echoed back. A pass-through
218
+ # token (SMART_TESTS_OIDC_TOKEN, e.g. a Jenkins-bound credential) is a fixed value we re-export;
219
+ # the GitHub flows mint a short-lived token per request, so exporting one here would only leave a
220
+ # stale value behind.
221
+ passthrough_token = get_oidc_token()
222
+ github_oidc_configured = os.getenv(GITHUB_OIDC_KEY) or os.getenv(LEGACY_GITHUB_OIDC_KEY)
223
+ if not passthrough_token and not github_oidc_configured:
224
+ msg = (f"OIDC authentication requires an OIDC flow to be configured: set {OIDC_TOKEN_KEY} to "
225
+ "the pipeline's OIDC id-token (e.g. a Jenkins-bound credential), or set "
226
+ f"{GITHUB_OIDC_KEY}=1 in GitHub Actions to fetch one automatically. "
227
+ "See the OIDC pipeline-authentication setup guide.")
221
228
  click.secho(msg, fg='red', err=True)
222
229
  tracking_client.send_error_event(
223
230
  event_name=Tracking.ErrorEvent.USER_ERROR,
@@ -296,11 +303,13 @@ def verify_oidc(app_instance: Application):
296
303
 
297
304
  # Emit eval-able export lines so the pipeline can hydrate its environment:
298
305
  # eval "$(smart-tests verify --oidc)"
299
- # Subsequent commands then read org/workspace from these vars and present the same OIDC token
300
- # (kept in SMART_TESTS_OIDC_TOKEN) as their bearer.
306
+ # Subsequent commands read org/workspace from these vars. For a pass-through token we also
307
+ # re-export it as the bearer; the GitHub flows re-mint a fresh short-lived token per request in
308
+ # authentication_headers(), so exporting one here would only leave a stale value behind.
301
309
  click.echo(f'export {ORGANIZATION_KEY}={_shell_quote(org)}')
302
310
  click.echo(f'export {WORKSPACE_KEY}={_shell_quote(workspace)}')
303
- click.echo(f'export {OIDC_TOKEN_KEY}={_shell_quote(token)}')
311
+ if passthrough_token:
312
+ click.echo(f'export {OIDC_TOKEN_KEY}={_shell_quote(passthrough_token)}')
304
313
  click.secho(
305
314
  f"OIDC authentication verified for organization {org!r}, workspace {workspace!r}" + emoji(" \U0001f389"),
306
315
  fg='green', err=True)
@@ -26,10 +26,10 @@ def subset(client, _with: Annotated[str | None, typer.Option(
26
26
  """
27
27
  Usage:
28
28
  find src -name "*.spec.ts" -o -name "*.spec.js" > test-list.txt
29
- cat test-list.txt | launchable subset --target 10% karma
29
+ cat test-list.txt | smart-tests subset karma --session @session.txt --target 10%
30
30
 
31
31
  # Output in ng test format
32
- find src -name "*.spec.ts" | launchable subset --target 10% karma --with ng
32
+ find src -name "*.spec.ts" | smart-tests subset karma --session @session.txt --target 10% --with ng
33
33
  """
34
34
  for t in client.stdin():
35
35
  path = t.strip()
@@ -0,0 +1,155 @@
1
+ import os
2
+ from typing import Optional, Tuple
3
+ from urllib.parse import quote
4
+
5
+ import click
6
+ import requests
7
+
8
+ import smart_tests.args4p.typer as typer
9
+
10
+ from .env_keys import (GITHUB_OIDC_KEY, LEGACY_GITHUB_OIDC_KEY, OIDC_AUDIENCE_KEY,
11
+ OIDC_TOKEN_KEY, ORGANIZATION_KEY, WORKSPACE_KEY, get_token)
12
+
13
+ # Default audience Intake expects in an OIDC id-token (launchableinc.intake.oidc.audience).
14
+ DEFAULT_OIDC_AUDIENCE = "https://app.cloudbees.io/smart-tests"
15
+ # Header the CLI sends to opt into Intake's deprecated GitHub Actions OIDC path. Absent it, a
16
+ # GitHub-issued token is verified through the generic OIDC path. Mirrors RESTAuthConverter.
17
+ LEGACY_GITHUB_OIDC_HEADER = "GitHub-OIDC-Legacy"
18
+
19
+ # authentication_headers() runs on every API request, so guard the legacy deprecation notice to
20
+ # print at most once per process instead of once per request.
21
+ _legacy_oidc_warning_shown = False
22
+
23
+
24
+ def get_org_workspace():
25
+ '''
26
+ Returns (org,ws) tuple from LAUNCHABLE_TOKEN, or (None,None) if not found.
27
+ Use ensure_org_workspace() if this is supposed to be an error condition
28
+ '''
29
+ token = get_token()
30
+ if token:
31
+ try:
32
+ _, user, _ = token.split(":", 2)
33
+ org, workspace = user.split("/", 1)
34
+ return org, workspace
35
+ except ValueError:
36
+ click.secho("Invalid value in LAUNCHABLE_TOKEN environment variable.", fg="red")
37
+ raise typer.Exit(1)
38
+
39
+ return os.getenv(ORGANIZATION_KEY), os.getenv(WORKSPACE_KEY)
40
+
41
+
42
+ def ensure_org_workspace() -> Tuple[str, str]:
43
+ org, workspace = get_org_workspace()
44
+ if org is None or workspace is None:
45
+ click.secho(
46
+ "Could not identify Smart Tests organization/workspace. "
47
+ "Please confirm if you set SMART_TESTS_TOKEN "
48
+ "(or LAUNCHABLE_TOKEN for backward compatibility) or SMART_TESTS_ORGANIZATION and "
49
+ "SMART_TESTS_WORKSPACE environment variables", fg='red', err=True)
50
+ raise typer.Exit(1)
51
+ return org, workspace
52
+
53
+
54
+ def get_oidc_token():
55
+ '''
56
+ Returns the CI-issued OIDC id-token (e.g. a Jenkins-minted RS256 JWT) from the environment,
57
+ or None if not set. This is the same token `smart-tests verify --oidc` exchanges for an
58
+ org/workspace, and the one subsequent workspace-scoped calls present as their bearer.
59
+ '''
60
+ return os.getenv(OIDC_TOKEN_KEY)
61
+
62
+
63
+ def authentication_headers():
64
+ token = get_token()
65
+ if token:
66
+ return {'Authorization': f'Bearer {token}'}
67
+
68
+ # A pipeline that authenticated via `verify --oidc` carries no SMART_TESTS_TOKEN; it presents
69
+ # its OIDC id-token directly. Intake routes this by `iss` (RESTAuthVerifier) to the generic OIDC
70
+ # verifier, so subsequent workspace-scoped calls authenticate with the same JWT.
71
+ oidc_token = get_oidc_token()
72
+ if oidc_token:
73
+ return {'Authorization': f'Bearer {oidc_token}'}
74
+
75
+ # Generic GitHub Actions OIDC: fetch the id-token minted for the Smart Tests audience and present
76
+ # it like any other OIDC token. Intake routes by `iss` to the generic verifier and matches the
77
+ # normalized `repo:OWNER/REPO` subject against trusted_oidc_subjects. The audience is required
78
+ # here because the generic path enforces `aud` for GitHub's issuer.
79
+ if os.getenv(GITHUB_OIDC_KEY):
80
+ id_token = _fetch_github_id_token(audience=_expected_oidc_audience())
81
+ return {'Authorization': f'Bearer {id_token}'}
82
+
83
+ # Deprecated legacy GitHub Actions OIDC: Intake matches the `repository` claim against
84
+ # trusted_github_repositories. The legacy path never checks `aud`, so no audience is requested.
85
+ # The header tells Intake to take the legacy branch; without it the token would be verified
86
+ # through the generic path.
87
+ if os.getenv(LEGACY_GITHUB_OIDC_KEY):
88
+ global _legacy_oidc_warning_shown
89
+ if not _legacy_oidc_warning_shown:
90
+ _legacy_oidc_warning_shown = True
91
+ click.secho(
92
+ f"{LEGACY_GITHUB_OIDC_KEY} enables the deprecated GitHub Actions OIDC flow. Migrate "
93
+ f"by registering your repository as a Trusted OIDC subject and switching to "
94
+ f"{GITHUB_OIDC_KEY}=1. See "
95
+ "https://docs.cloudbees.com/docs/cloudbees-smart-tests/latest/send-data-to-smart-tests/set-up-smart-tests/migration-to-github-oidc-auth", # noqa: E501
96
+ fg='yellow', err=True)
97
+ id_token = _fetch_github_id_token()
98
+ return {
99
+ 'Authorization': f'Bearer {id_token}',
100
+ LEGACY_GITHUB_OIDC_HEADER: '1',
101
+ }
102
+
103
+ if os.getenv('GITHUB_ACTIONS'):
104
+ headers = {
105
+ 'GitHub-Actions': os.environ['GITHUB_ACTIONS'],
106
+ 'GitHub-Run-Id': os.environ['GITHUB_RUN_ID'],
107
+ 'GitHub-Repository': os.environ['GITHUB_REPOSITORY'],
108
+ 'GitHub-Workflow': os.environ['GITHUB_WORKFLOW'],
109
+ 'GitHub-Run-Number': os.environ['GITHUB_RUN_NUMBER'],
110
+ 'GitHub-Event-Name': os.environ['GITHUB_EVENT_NAME'],
111
+ 'GitHub-Sha': os.environ['GITHUB_SHA'],
112
+ }
113
+
114
+ # GITHUB_PR_HEAD_SHA might not exist
115
+ pr_head_sha = os.getenv('GITHUB_PR_HEAD_SHA')
116
+ if pr_head_sha:
117
+ headers['GitHub-Pr-Head-Sha'] = pr_head_sha
118
+
119
+ return headers
120
+ return {}
121
+
122
+
123
+ def _expected_oidc_audience() -> str:
124
+ '''Audience the GitHub id-token must carry for Intake's generic OIDC path to accept it.'''
125
+ return os.getenv(OIDC_AUDIENCE_KEY) or DEFAULT_OIDC_AUDIENCE
126
+
127
+
128
+ def _fetch_github_id_token(audience: Optional[str] = None) -> str:
129
+ '''
130
+ Retrieve a GitHub Actions OIDC id-token via the runner's token endpoint.
131
+
132
+ Requires the `id-token: write` workflow permission, which populates ACTIONS_ID_TOKEN_REQUEST_URL
133
+ and ACTIONS_ID_TOKEN_REQUEST_TOKEN. When `audience` is given it is requested so the token's `aud`
134
+ claim matches what Intake expects (the generic OIDC path enforces it); the legacy path omits it.
135
+ '''
136
+ req_url = os.getenv('ACTIONS_ID_TOKEN_REQUEST_URL')
137
+ rt_token = os.getenv('ACTIONS_ID_TOKEN_REQUEST_TOKEN')
138
+ if not req_url or not rt_token:
139
+ click.secho(
140
+ "GitHub Actions OIDC tokens cannot be retrieved."
141
+ "Confirm that you have added necessary permissions following "
142
+ "https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers#adding-permissions-settings", # noqa: E501
143
+ fg='red', err=True)
144
+ raise typer.Exit(1)
145
+ if audience:
146
+ sep = '&' if '?' in req_url else '?'
147
+ req_url = f"{req_url}{sep}audience={quote(audience, safe='')}"
148
+ r = requests.get(req_url,
149
+ headers={
150
+ 'Authorization': f'Bearer {rt_token}',
151
+ 'Accept': 'application/json; api-version=2.0',
152
+ 'Content-Type': 'application/json',
153
+ })
154
+ r.raise_for_status()
155
+ return r.json()['value']
@@ -9,6 +9,16 @@ OIDC_TOKEN_KEY = "SMART_TESTS_OIDC_TOKEN"
9
9
  ORGANIZATION_KEY = "SMART_TESTS_ORGANIZATION"
10
10
  WORKSPACE_KEY = "SMART_TESTS_WORKSPACE"
11
11
  BASE_URL_KEY = "SMART_TESTS_BASE_URL"
12
+ # Opt in to the generic GitHub Actions OIDC flow: the CLI fetches the GitHub id-token and presents
13
+ # it like any other OIDC token. Intake verifies it against trusted_oidc_subjects (self-serve in the
14
+ # webapp) instead of the deprecated trusted_github_repositories path. See authentication_headers().
15
+ GITHUB_OIDC_KEY = "SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH"
16
+ # Deprecated opt in to the legacy GitHub Actions OIDC flow (repository-claim matching). Kept working
17
+ # for backward compatibility; when set, the CLI signals Intake to use the legacy path via a header.
18
+ LEGACY_GITHUB_OIDC_KEY = "EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH"
19
+ # Audience the GitHub id-token must be minted for so the generic OIDC path's aud check passes.
20
+ # Overridable for non-production Intake environments.
21
+ OIDC_AUDIENCE_KEY = "SMART_TESTS_OIDC_AUDIENCE"
12
22
  SKIP_TIMEOUT_RETRY = "SMART_TESTS_SKIP_TIMEOUT_RETRY"
13
23
  COMMIT_TIMEOUT = "SMART_TESTS_COMMIT_TIMEOUT"
14
24
  SKIP_CERT_VERIFICATION = "SMART_TESTS_SKIP_CERT_VERIFICATION"
@@ -48,6 +48,12 @@ def junit5_nested_class_path_builder(
48
48
  Note: Launchable allows $ in test paths. But we decided to remove it in this case
49
49
  because $ in the class name is not a common case.
50
50
 
51
+ Separately, when a @Nested class carries an explicit @DisplayName, Surefire (>= ~3.5.x)
52
+ drops the outer class name from the `classname` attribute entirely and reports just the
53
+ @DisplayName value (e.g. classname="addFollowList", with no dot and no $). In that case we
54
+ fall back to the enclosing <testsuite name="..."> attribute, which is always the outer
55
+ class's fully-qualified name.
56
+
51
57
  Args:
52
58
  default_path_builder: The original path builder function to wrap
53
59
 
@@ -56,6 +62,17 @@ def junit5_nested_class_path_builder(
56
62
  """
57
63
  def path_builder(case: TestCase, suite: TestSuite, report_file: str) -> TestPath:
58
64
  test_path = default_path_builder(case, suite, report_file)
59
- return [{**item, "name": item["name"].split("$")[0]} if item["type"] == "class" else item for item in test_path]
65
+
66
+ def fix_class(item):
67
+ if item["type"] != "class":
68
+ return item
69
+ name = item["name"]
70
+ if "." not in name:
71
+ suite_name = suite._elem.attrib.get("name")
72
+ if suite_name and "." in suite_name:
73
+ name = suite_name
74
+ return {**item, "name": name.split("$")[0]}
75
+
76
+ return [fix_class(item) for item in test_path]
60
77
 
61
78
  return path_builder
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.15.0
3
+ Version: 2.15.2
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -20,6 +20,7 @@ Requires-Dist: python-dateutil>=2.9
20
20
  Requires-Dist: tabulate>=0.9
21
21
  Requires-Dist: click<8.2,>=8.1
22
22
  Requires-Dist: InquirerPy>=0.3.4
23
+ Requires-Dist: requests-toolbelt>=1.0.0
23
24
  Dynamic: license-file
24
25
 
25
26
  This is a CLI to interact with CloudBees Smart Tests.
@@ -546,6 +546,7 @@ tests/data/karma/subset_result.json
546
546
  tests/data/maven/createdFile_1.lst
547
547
  tests/data/maven/createdFile_2.lst
548
548
  tests/data/maven/list.lst
549
+ tests/data/maven/record_test_nested_displayname_result.json
549
550
  tests/data/maven/record_test_result.json
550
551
  tests/data/maven/subset_by_absolute_time_result.json
551
552
  tests/data/maven/subset_by_confidence_result.json
@@ -563,6 +564,7 @@ tests/data/maven/reports/TEST-1.xml
563
564
  tests/data/maven/reports/TEST-2.xml
564
565
  tests/data/maven/reports/TEST-nested.xml
565
566
  tests/data/maven/reports/dummy.xml
567
+ tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml
566
568
  tests/data/minitest/TEST-Admin_UserTest.xml
567
569
  tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml
568
570
  tests/data/minitest/TEST-UserControllerTest.xml
@@ -6,3 +6,4 @@ python-dateutil>=2.9
6
6
  tabulate>=0.9
7
7
  click<8.2,>=8.1
8
8
  InquirerPy>=0.3.4
9
+ requests-toolbelt>=1.0.0
@@ -539,7 +539,9 @@
539
539
  "tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java",
540
540
  "tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java",
541
541
  "tests/data/maven/list.lst",
542
+ "tests/data/maven/record_test_nested_displayname_result.json",
542
543
  "tests/data/maven/record_test_result.json",
544
+ "tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml",
543
545
  "tests/data/maven/reports/TEST-1.xml",
544
546
  "tests/data/maven/reports/TEST-2.xml",
545
547
  "tests/data/maven/reports/TEST-nested.xml",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.15.2",
3
+ "distance": 0,
4
+ "node": "g17521872e945f52bba869b47c72b0b7157bf5789",
5
+ "dirty": false,
6
+ "branch": "main",
7
+ "node_date": "2026-10-05"
8
+ }
@@ -6,6 +6,9 @@ import com.google.common.base.Strings;
6
6
  import com.google.common.collect.ImmutableList;
7
7
  import java.io.IOException;
8
8
  import java.io.UncheckedIOException;
9
+ import java.io.UnsupportedEncodingException;
10
+ import java.net.URLEncoder;
11
+ import java.nio.charset.StandardCharsets;
9
12
  import org.apache.http.Header;
10
13
  import org.apache.http.client.methods.CloseableHttpResponse;
11
14
  import org.apache.http.client.methods.HttpGet;
@@ -15,10 +18,29 @@ import org.apache.http.message.BasicHeader;
15
18
  import org.kohsuke.args4j.CmdLineException;
16
19
 
17
20
  public class GitHubIdTokenAuthenticator implements Authenticator {
21
+ // Default audience Intake expects in an OIDC id-token (launchableinc.intake.oidc.audience).
22
+ // Mirrors the Python CLI's DEFAULT_OIDC_AUDIENCE.
23
+ static final String DEFAULT_OIDC_AUDIENCE = "https://app.cloudbees.io/smart-tests";
24
+ // Header the CLI sends to opt into Intake's deprecated GitHub Actions OIDC path. Absent it, a
25
+ // GitHub-issued token is verified through the generic OIDC path. Mirrors RESTAuthConverter.
26
+ static final String LEGACY_GITHUB_OIDC_HEADER = "GitHub-OIDC-Legacy";
27
+
18
28
  private static final ObjectMapper objectMapper = new ObjectMapper();
19
29
  private final String idToken;
30
+ private final boolean legacy;
20
31
 
21
- public GitHubIdTokenAuthenticator() throws CmdLineException {
32
+ /**
33
+ * Retrieves a GitHub Actions OIDC id-token via the runner's token endpoint.
34
+ *
35
+ * @param audience When non-empty, requested so the token's {@code aud} claim matches what
36
+ * Intake's generic OIDC path enforces. Pass {@code null}/empty for the legacy path, which
37
+ * never checks {@code aud}.
38
+ * @param legacy When true, signals Intake to take the deprecated GitHub Actions OIDC path via the
39
+ * {@link #LEGACY_GITHUB_OIDC_HEADER} header; without it the token is verified through the
40
+ * generic path.
41
+ */
42
+ public GitHubIdTokenAuthenticator(String audience, boolean legacy) throws CmdLineException {
43
+ this.legacy = legacy;
22
44
  String reqUrl = System.getenv("ACTIONS_ID_TOKEN_REQUEST_URL");
23
45
  String rtToken = System.getenv("ACTIONS_ID_TOKEN_REQUEST_TOKEN");
24
46
  if (Strings.isNullOrEmpty(reqUrl) || Strings.isNullOrEmpty(rtToken)) {
@@ -28,6 +50,11 @@ public class GitHubIdTokenAuthenticator implements Authenticator {
28
50
  + "https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers#adding-permissions-settings");
29
51
  }
30
52
 
53
+ if (!Strings.isNullOrEmpty(audience)) {
54
+ String sep = reqUrl.contains("?") ? "&" : "?";
55
+ reqUrl = reqUrl + sep + "audience=" + encode(audience);
56
+ }
57
+
31
58
  HttpGet request = new HttpGet(reqUrl);
32
59
  request.setHeader("Authorization", "Bearer " + rtToken);
33
60
  request.setHeader("Accept", "applicaiton/json; api-version=2.0");
@@ -49,7 +76,21 @@ public class GitHubIdTokenAuthenticator implements Authenticator {
49
76
 
50
77
  @Override
51
78
  public ImmutableList<Header> getAuthenticationHeaders() {
52
- return ImmutableList.of(new BasicHeader("Authorization", "Bearer " + idToken));
79
+ ImmutableList.Builder<Header> headers = ImmutableList.builder();
80
+ headers.add(new BasicHeader("Authorization", "Bearer " + idToken));
81
+ if (legacy) {
82
+ headers.add(new BasicHeader(LEGACY_GITHUB_OIDC_HEADER, "1"));
83
+ }
84
+ return headers.build();
85
+ }
86
+
87
+ private static String encode(String value) {
88
+ try {
89
+ return URLEncoder.encode(value, StandardCharsets.UTF_8.name());
90
+ } catch (UnsupportedEncodingException e) {
91
+ // UTF-8 is always supported.
92
+ throw new AssertionError(e);
93
+ }
53
94
  }
54
95
 
55
96
  @JsonIgnoreProperties(ignoreUnknown = true)
@@ -1,6 +1,7 @@
1
1
  package com.launchableinc.ingest.commits;
2
2
 
3
3
  import com.google.common.annotations.VisibleForTesting;
4
+ import com.google.common.base.Strings;
4
5
  import java.io.File;
5
6
  import java.io.IOException;
6
7
  import java.net.MalformedURLException;
@@ -110,8 +111,26 @@ public class Main {
110
111
  this.ws = w;
111
112
  }
112
113
 
113
- if (System.getenv("EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH") != null) {
114
- authenticator = new GitHubIdTokenAuthenticator();
114
+ if (!Strings.isNullOrEmpty(System.getenv("SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH"))) {
115
+ // Generic GitHub Actions OIDC: fetch the id-token minted for the Smart Tests audience and
116
+ // present it like any other OIDC token. Intake routes by `iss` to the generic verifier
117
+ // and matches the normalized `repo:OWNER/REPO` subject against trusted_oidc_subjects. The
118
+ // audience is required because the generic path enforces `aud` for GitHub's issuer.
119
+ String audience = System.getenv("SMART_TESTS_OIDC_AUDIENCE");
120
+ if (Strings.isNullOrEmpty(audience)) {
121
+ audience = GitHubIdTokenAuthenticator.DEFAULT_OIDC_AUDIENCE;
122
+ }
123
+ authenticator = new GitHubIdTokenAuthenticator(audience, false);
124
+ } else if (!Strings.isNullOrEmpty(System.getenv("EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH"))) {
125
+ // Deprecated legacy GitHub Actions OIDC: Intake matches the `repository` claim against
126
+ // trusted_github_repositories. The legacy path never checks `aud`, so no audience is
127
+ // requested; the legacy header tells Intake to take the legacy branch.
128
+ System.err.println(
129
+ "EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH enables the deprecated GitHub Actions OIDC flow."
130
+ + " Migrate by registering your repository as a Trusted OIDC subject and switching"
131
+ + " to SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH=1. See "
132
+ + "https://docs.cloudbees.com/docs/cloudbees-smart-tests/latest/send-data-to-smart-tests/set-up-smart-tests/migration-to-github-oidc-auth");
133
+ authenticator = new GitHubIdTokenAuthenticator(null, true);
115
134
  } else {
116
135
  authenticator = new GitHubActionsAuthenticator();
117
136
  }
@@ -9,6 +9,7 @@ from unittest import mock
9
9
  import responses # type: ignore
10
10
 
11
11
  from smart_tests.commands.record.tests import INVALID_TIMESTAMP, parse_launchable_timeformat
12
+ from smart_tests.utils.http_client import get_base_url
12
13
  from tests.cli_test_case import CliTestCase
13
14
 
14
15
 
@@ -62,6 +63,37 @@ class TestsTest(CliTestCase):
62
63
  # normal.xml
63
64
  self.assertIn('open_class_user_test.rb', gzip.decompress(self.find_request('/events').request.body).decode())
64
65
 
66
+ @responses.activate
67
+ @mock.patch.dict(os.environ, {"SMART_TESTS_TOKEN": CliTestCase.smart_tests_token})
68
+ def test_upload_raw_files(self):
69
+ uploads = []
70
+
71
+ def callback(request):
72
+ body = request.body
73
+ if hasattr(body, 'read'):
74
+ body = body.read()
75
+ self.assertEqual(int(request.headers['Content-Length']), len(body))
76
+ self.assertTrue(request.headers['Content-Type'].startswith('multipart/form-data; boundary='))
77
+ uploads.append(body)
78
+ return 200, {}, ''
79
+
80
+ responses.add_callback(
81
+ responses.POST,
82
+ f"{get_base_url()}/intake/organizations/{self.organization}/workspaces/{self.workspace}"
83
+ f"/builds/{self.build_name}/test_sessions/{self.session_id}/test_result_file",
84
+ callback=callback)
85
+
86
+ xml_a = Path(__file__).parent.joinpath('../../data/googletest/output_a.xml').resolve()
87
+ xml_b = Path(__file__).parent.joinpath('../../data/googletest/output_b.xml').resolve()
88
+ result = self.cli('record', 'tests', 'googletest', '--session', self.session, str(xml_a), str(xml_b))
89
+
90
+ self.assert_success(result)
91
+ self.assertNotIn("Error uploading raw test result file", result.output)
92
+ self.assertEqual(len(uploads), 2)
93
+ for path in (xml_a, xml_b):
94
+ body = next(b for b in uploads if f'filename="{path.name}"'.encode() in b)
95
+ self.assertIn(path.read_bytes(), body)
96
+
65
97
  def test_parse_launchable_timeformat(self):
66
98
  t1 = "2021-04-01T09:35:47.934+00:00" # 1617269747.934
67
99
  t2 = "2021-05-24T18:29:04.285+00:00" # 1621880944.285