smart-tests-cli 2.14.0__tar.gz → 2.15.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/PKG-INFO +1 -1
  2. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/__init__.py +2 -0
  3. smart_tests_cli-2.15.1/smart_tests/commands/inspect/tests.py +176 -0
  4. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/verify.py +21 -12
  5. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/jar/exe_deploy.jar +0 -0
  6. smart_tests_cli-2.15.1/smart_tests/utils/authentication.py +155 -0
  7. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/env_keys.py +10 -0
  8. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/java.py +18 -1
  9. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/PKG-INFO +1 -1
  10. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/SOURCES.txt +4 -0
  11. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/scm_file_list.json +4 -0
  12. smart_tests_cli-2.15.1/smart_tests_cli.egg-info/scm_version.json +8 -0
  13. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +43 -2
  14. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/Main.java +21 -2
  15. smart_tests_cli-2.15.1/tests/commands/inspect/test_tests.py +156 -0
  16. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_verify.py +39 -1
  17. smart_tests_cli-2.15.1/tests/data/maven/record_test_nested_displayname_result.json +27 -0
  18. smart_tests_cli-2.15.1/tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml +4 -0
  19. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_maven.py +44 -35
  20. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_authentication.py +82 -0
  21. smart_tests_cli-2.14.0/smart_tests/utils/authentication.py +0 -99
  22. smart_tests_cli-2.14.0/smart_tests_cli.egg-info/scm_version.json +0 -8
  23. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.bazelrc +0 -0
  24. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.bazelversion +0 -0
  25. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.claude/skills/merge-v1-to-main/SKILL.md +0 -0
  26. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.dockerignore +0 -0
  27. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.editorconfig +0 -0
  28. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/release.yml +0 -0
  29. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/bazel-test.yml +0 -0
  30. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/e2e.yml +0 -0
  31. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/pre-commit.yml +0 -0
  32. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/publish.yml +0 -0
  33. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/test.yml +0 -0
  34. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.github/workflows/update_maven_install_json.yml +0 -0
  35. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.gitignore +0 -0
  36. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.pre-commit-config.yaml +0 -0
  37. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.python-version +0 -0
  38. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/.tagpr +0 -0
  39. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/CLAUDE.md +0 -0
  40. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/CONTRIBUTING.md +0 -0
  41. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/Dockerfile +0 -0
  42. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/LICENSE.txt +0 -0
  43. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/MODULE.bazel +0 -0
  44. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/MODULE.bazel.lock +0 -0
  45. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/README.md +0 -0
  46. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/WORKSPACE.bzlmod +0 -0
  47. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/build-java.sh +0 -0
  48. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/pyproject.toml +0 -0
  49. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/renovate.json +0 -0
  50. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/scripts/update_docs.sh +0 -0
  51. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/scripts/update_schema.sh +0 -0
  52. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/setup.cfg +0 -0
  53. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/setup.py +0 -0
  54. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/__init__.py +0 -0
  55. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/__main__.py +0 -0
  56. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/app.py +0 -0
  57. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/README.md +0 -0
  58. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/__init__.py +0 -0
  59. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/argument.py +0 -0
  60. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/command.py +0 -0
  61. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/converters/__init__.py +0 -0
  62. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/decorators.py +0 -0
  63. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/exceptions.py +0 -0
  64. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/option.py +0 -0
  65. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/parameter.py +0 -0
  66. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/typer/__init__.py +0 -0
  67. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/__init__.py +0 -0
  68. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/analyze/__init__.py +0 -0
  69. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/analyze/subset.py +0 -0
  70. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/compare/__init__.py +0 -0
  71. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/compare/subsets.py +0 -0
  72. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/detect_flakes.py +0 -0
  73. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/gate.py +0 -0
  74. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/__init__.py +0 -0
  75. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/api_schema.py +0 -0
  76. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/docs.py +0 -0
  77. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/model.py +0 -0
  78. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/subset.py +0 -0
  79. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/__init__.py +0 -0
  80. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/attachment.py +0 -0
  81. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/build.py +0 -0
  82. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/case_event.py +0 -0
  83. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/commit.py +0 -0
  84. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/deployment.py +0 -0
  85. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/session.py +0 -0
  86. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/tests.py +0 -0
  87. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/stats/__init__.py +0 -0
  88. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/stats/test_sessions.py +0 -0
  89. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/subset.py +0 -0
  90. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/test_path_writer.py +0 -0
  91. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/update/__init__.py +0 -0
  92. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/update/alias.py +0 -0
  93. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/__init__.py +0 -0
  94. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/flaky_tests.py +0 -0
  95. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/longest_tests.py +0 -0
  96. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/never_failing_tests.py +0 -0
  97. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/test_results.py +0 -0
  98. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/antora.yml +0 -0
  99. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/adb.adoc +0 -0
  100. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ant.adoc +0 -0
  101. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/bazel.adoc +0 -0
  102. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/behave.adoc +0 -0
  103. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations/github-actions.adoc +0 -0
  104. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations.adoc +0 -0
  105. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ctest.adoc +0 -0
  106. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/cucumber.adoc +0 -0
  107. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/cypress.adoc +0 -0
  108. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/dotnet-test.adoc +0 -0
  109. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/flutter.adoc +0 -0
  110. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/go-test.adoc +0 -0
  111. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/googletest.adoc +0 -0
  112. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/gradle.adoc +0 -0
  113. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/jest.adoc +0 -0
  114. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/karma.adoc +0 -0
  115. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/maven.adoc +0 -0
  116. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/minitest.adoc +0 -0
  117. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/playwright.adoc +0 -0
  118. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/prove.adoc +0 -0
  119. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/pytest.adoc +0 -0
  120. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/robot.adoc +0 -0
  121. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/rspec.adoc +0 -0
  122. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/c-plus-plus.adoc +0 -0
  123. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/dotnet.adoc +0 -0
  124. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/go.adoc +0 -0
  125. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/java.adoc +0 -0
  126. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/javascript.adoc +0 -0
  127. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/perl.adoc +0 -0
  128. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/python.adoc +0 -0
  129. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/ruby.adoc +0 -0
  130. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/appium.adoc +0 -0
  131. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/cucumber.adoc +0 -0
  132. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/googletest.adoc +0 -0
  133. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/jest.adoc +0 -0
  134. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/junit.adoc +0 -0
  135. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/minitest.adoc +0 -0
  136. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nose.adoc +0 -0
  137. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nunit.adoc +0 -0
  138. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/prove.adoc +0 -0
  139. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/robot.adoc +0 -0
  140. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/rspec.adoc +0 -0
  141. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/selenium.adoc +0 -0
  142. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/testng.adoc +0 -0
  143. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/vitest.adoc +0 -0
  144. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/xctest.adoc +0 -0
  145. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
  146. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
  147. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
  148. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/507088cf-209d-4856-be3e-60477c166d92.png +0 -0
  149. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
  150. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
  151. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
  152. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
  153. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
  154. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
  155. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
  156. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
  157. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/groups-2-record-after.png +0 -0
  158. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/auto-quarantine.png +0 -0
  159. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/failure-test.png +0 -0
  160. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/manual-quarantine.png +0 -0
  161. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/how-long-train-ml-model.png +0 -0
  162. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/icons/icon-vertical-three-dots-dark.png +0 -0
  163. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/illustion-run-whitelisted-tests-1.png +0 -0
  164. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/illustration-ignore-flakes-1.png +0 -0
  165. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/illustration-rotate-optimize-coverage.png +0 -0
  166. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/illustration-run-recently-failed-tests.png +0 -0
  167. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
  168. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/link-to-results-example.png +0 -0
  169. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/model-training-evaluation-confidence-curves.png +0 -0
  170. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/new-code-existing-tests.png +0 -0
  171. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
  172. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
  173. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
  174. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
  175. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/predictive-test-selection-observation-mode.png +0 -0
  176. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
  177. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/pts/pts-observe.png +0 -0
  178. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
  179. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
  180. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately-detailed.png +0 -0
  181. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately.png +0 -0
  182. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos.png +0 -0
  183. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-41-20.png +0 -0
  184. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-44-15.png +0 -0
  185. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-45-10.png +0 -0
  186. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-08-22-at-22-50-49.png +0 -0
  187. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-1-48-30-pm.png +0 -0
  188. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-2-14-11-pm.png +0 -0
  189. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-4-50-56-pm.png +0 -0
  190. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-06-32-pm.png +0 -0
  191. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-09-04-pm.png +0 -0
  192. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-21-37-pm.png +0 -0
  193. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/builds-dashboard.png +0 -0
  194. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/create-api-key.png +0 -0
  195. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/initial-settings.png +0 -0
  196. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/organization-profile-id.png +0 -0
  197. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/record-session.png +0 -0
  198. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/sending-data/test-session-interface.png +0 -0
  199. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
  200. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
  201. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
  202. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/slack-desktop-with-app-messages.png +0 -0
  203. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-subset-formation-flow.png +0 -0
  204. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-builds-interface-v1png.png +0 -0
  205. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-cli-3.png +0 -0
  206. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-monthly-time-saved.png +0 -0
  207. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_api_key_setting_20210613.png +0 -0
  208. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_invite_url_20220613.png +0 -0
  209. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_settings_20220613.png +0 -0
  210. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
  211. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset/dynamic-parallel.png +0 -0
  212. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
  213. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
  214. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
  215. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
  216. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
  217. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
  218. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
  219. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-2.png +0 -0
  220. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-3.png +0 -0
  221. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-4.png +0 -0
  222. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
  223. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-details-with-content.png +0 -0
  224. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-report-example.png +0 -0
  225. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
  226. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
  227. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
  228. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
  229. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
  230. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
  231. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
  232. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
  233. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
  234. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
  235. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
  236. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
  237. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
  238. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/data-examples.adoc +0 -0
  239. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/data-privacy-and-protection.adoc +0 -0
  240. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/security-policies.adoc +0 -0
  241. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/troubleshooting.adoc +0 -0
  242. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
  243. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
  244. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
  245. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
  246. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
  247. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
  248. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
  249. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
  250. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
  251. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/high-failure-rate-tests-and-quarantine.adoc +0 -0
  252. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
  253. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/predictive-test-selection/how-we-select-tests.adoc +0 -0
  254. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/predictive-test-selection/use-cases-for-predictive-test-selection.adoc +0 -0
  255. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/predictive-test-selection/viewing-time-savings.adoc +0 -0
  256. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
  257. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-notifications/github-app-for-test-sessions.adoc +0 -0
  258. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-notifications/test-notifications-via-slack.adoc +0 -0
  259. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
  260. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
  261. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
  262. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-trends-and-insights.adoc +0 -0
  263. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/ai-assistance.adoc +0 -0
  264. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/cli-reference.adoc +0 -0
  265. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/cli-version.txt +0 -0
  266. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/faq.adoc +0 -0
  267. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/integrations/raw.adoc +0 -0
  268. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/integrations/use-the-generic-file-based-runner-integration.adoc +0 -0
  269. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/integrations.adoc +0 -0
  270. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/onboarding-guide/best-practices-checklist.adoc +0 -0
  271. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/onboarding-guide/optional-configurations.adoc +0 -0
  272. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/onboarding-guide.adoc +0 -0
  273. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/supported-languages.adoc +0 -0
  274. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/supported-test-frameworks.adoc +0 -0
  275. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/choose-a-value-for-build-name.adoc +0 -0
  276. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/deal-with-shallow-clones.adoc +0 -0
  277. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-microservices.adoc +0 -0
  278. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-multistage-build.adoc +0 -0
  279. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-from-multiple-repositories.adoc +0 -0
  280. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds.adoc +0 -0
  281. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/run-under-restricted-networks.adoc +0 -0
  282. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-sessions/record-sessions.adoc +0 -0
  283. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/attach-log-files.adoc +0 -0
  284. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/convert-test-reports-to-junit-format.adoc +0 -0
  285. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/ensure-record-tests-always-runs.adoc +0 -0
  286. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/manage-complex-test-session-layouts.adoc +0 -0
  287. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/record-test-results.adoc +0 -0
  288. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/separate-out-test-suites.adoc +0 -0
  289. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/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
  290. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/send-data-to-smart-tests.adoc +0 -0
  291. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/getting-started.adoc +0 -0
  292. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/migration-to-github-oidc-auth.adoc +0 -0
  293. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/use-the-cli-with-docker-image.adoc +0 -0
  294. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/choose-a-subset-optimization-target.adoc +0 -0
  295. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/combine-with-rule-based-test-selection.adoc +0 -0
  296. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/observe-subset-behavior.adoc +0 -0
  297. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/replace-static-parallel-suites-dynamic-parallel-subset.adoc +0 -0
  298. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/request-and-run-a-subset-of-tests.adoc +0 -0
  299. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-subset-optimization-target.adoc +0 -0
  300. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-tests-extension-for-VS-code.adoc +0 -0
  301. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-predictive-test-selection.adoc +0 -0
  302. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-with-the-smart-tests-cli.adoc +0 -0
  303. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/use-groups-to-split-subsets.adoc +0 -0
  304. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/zero-input-subsetting.adoc +0 -0
  305. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/plugins/__init__.py +0 -0
  306. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/schema/openapi-schema.json +0 -0
  307. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/__init__.py +0 -0
  308. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/adb.py +0 -0
  309. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/ant.py +0 -0
  310. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/bazel.py +0 -0
  311. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/behave.py +0 -0
  312. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/codeceptjs.py +0 -0
  313. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/ctest.py +0 -0
  314. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cts.py +0 -0
  315. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cucumber.py +0 -0
  316. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cypress.py +0 -0
  317. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/dotnet.py +0 -0
  318. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/file.py +0 -0
  319. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/flutter.py +0 -0
  320. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/go_test.py +0 -0
  321. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/googletest.py +0 -0
  322. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/gradle.py +0 -0
  323. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/jasmine.py +0 -0
  324. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/jest.py +0 -0
  325. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/karma.py +0 -0
  326. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/maven.py +0 -0
  327. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/minitest.py +0 -0
  328. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/nunit.py +0 -0
  329. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/playwright.py +0 -0
  330. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/prove.py +0 -0
  331. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/pytest.py +0 -0
  332. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/raw.py +0 -0
  333. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/robot.py +0 -0
  334. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/rspec.py +0 -0
  335. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/smart_tests.py +0 -0
  336. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/vitest.py +0 -0
  337. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/xctest.py +0 -0
  338. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/testpath.py +0 -0
  339. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/__init__.py +0 -0
  340. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/ci_provider.py +0 -0
  341. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/commands.py +0 -0
  342. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/commit_ingester.py +0 -0
  343. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/common_tz.py +0 -0
  344. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/edit_distance.py +0 -0
  345. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/exceptions.py +0 -0
  346. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/fail_fast_mode.py +0 -0
  347. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/file_name_pattern.py +0 -0
  348. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/git_log_parser.py +0 -0
  349. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/glob.py +0 -0
  350. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/gzipgen.py +0 -0
  351. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/http_client.py +0 -0
  352. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/input_snapshot.py +0 -0
  353. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/link.py +0 -0
  354. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/logger.py +0 -0
  355. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/no_build.py +0 -0
  356. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/sax.py +0 -0
  357. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/session.py +0 -0
  358. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/smart_tests_client.py +0 -0
  359. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/subprocess.py +0 -0
  360. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/tracking.py +0 -0
  361. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/utils/typer_types.py +0 -0
  362. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests/version.py +0 -0
  363. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
  364. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/entry_points.txt +0 -0
  365. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/requires.txt +0 -0
  366. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/top_level.txt +0 -0
  367. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/BUILD +0 -0
  368. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  369. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
  370. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
  371. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
  372. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
  373. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
  374. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
  375. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
  376. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  377. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
  378. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
  379. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
  380. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  381. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
  382. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
  383. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
  384. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  385. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
  386. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
  387. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  388. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
  389. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  390. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  391. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
  392. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
  393. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/maven_install.json +0 -0
  394. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
  395. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
  396. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
  397. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
  398. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
  399. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
  400. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/GitFileTest.java +0 -0
  401. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
  402. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
  403. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
  404. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  405. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  406. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/test-runner/__main__.py +0 -0
  407. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/__init__.py +0 -0
  408. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/__init__.py +0 -0
  409. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/converters/__init__.py +0 -0
  410. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/converters/test_converters.py +0 -0
  411. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_badcode.py +0 -0
  412. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_badinput.py +0 -0
  413. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_command.py +0 -0
  414. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_decorators.py +0 -0
  415. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_help.py +0 -0
  416. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_parameter.py +0 -0
  417. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/args4p/test_typer.py +0 -0
  418. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/cli_test_case.py +0 -0
  419. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/__init__.py +0 -0
  420. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/compare/__init__.py +0 -0
  421. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/compare/test_subsets.py +0 -0
  422. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/inspect/test_model.py +0 -0
  423. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/inspect/test_subset.py +0 -0
  424. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/__init__.py +0 -0
  425. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_attachment.py +0 -0
  426. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_build.py +0 -0
  427. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_case_event.py +0 -0
  428. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_commit.py +0 -0
  429. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_deployment.py +0 -0
  430. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_session.py +0 -0
  431. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_tests.py +0 -0
  432. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_api_error.py +0 -0
  433. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_detect_flakes.py +0 -0
  434. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_gate.py +0 -0
  435. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_subset.py +0 -0
  436. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_flaky_tests.py +0 -0
  437. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_longest_tests.py +0 -0
  438. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_never_failing_tests.py +0 -0
  439. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_test_results.py +0 -0
  440. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/update/__init__.py +0 -0
  441. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/commands/update/test_alias.py +0 -0
  442. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/adb/subset_result.json +0 -0
  443. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
  444. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
  445. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  446. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/record_test_result.json +0 -0
  447. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
  448. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
  449. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/library/Cache.java +0 -0
  450. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
  451. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ant/subset_result.json +0 -0
  452. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  453. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +0 -0
  454. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
  455. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  456. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  457. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  458. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  459. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  460. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  461. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  462. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  463. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  464. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  465. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  466. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  467. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  468. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  469. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  470. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  471. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/build_event.json +0 -0
  472. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/build_event_rest.json +0 -0
  473. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/record_test_result.json +0 -0
  474. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
  475. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
  476. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/bazel/subset_result.json +0 -0
  477. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/behave/record_test_result.json +0 -0
  478. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/behave/reports/report.xml +0 -0
  479. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/behave/subset_result.json +0 -0
  480. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/broken_xml/broken.xml +0 -0
  481. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/broken_xml/normal.xml +0 -0
  482. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
  483. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/codeceptjs/record_test_result.json +0 -0
  484. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  485. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ctest/ctest_list.json +0 -0
  486. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ctest/record_test_result.json +0 -0
  487. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/ctest/subset_result.json +0 -0
  488. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cts/record_test_result.json +0 -0
  489. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cts/subset_result.json +0 -0
  490. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cts/test_result.xml +0 -0
  491. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo/bar.feature +0 -0
  492. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  493. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo-bar.feature +0 -0
  494. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  495. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/record_test_json_result.json +0 -0
  496. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/record_test_result.json +0 -0
  497. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  498. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  499. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  500. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/dummy.xml +0 -0
  501. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/result.json +0 -0
  502. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cypress/empty.json +0 -0
  503. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cypress/empty.xml +0 -0
  504. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cypress/record_test_result.json +0 -0
  505. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cypress/subset_result.json +0 -0
  506. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/cypress/test-result.xml +0 -0
  507. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/junit-result-with-metadata.xml +0 -0
  508. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/junit-result.xml +0 -0
  509. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result-junit-with-metadata.json +0 -0
  510. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result-junit.json +0 -0
  511. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result.json +0 -0
  512. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/test-result.xml +0 -0
  513. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/file/record_test_result.json +0 -0
  514. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/file/record_test_result_custom_attribute.json +0 -0
  515. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/file/result.xml +0 -0
  516. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/file/result_custom_attribute.xml +0 -0
  517. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/flutter/record_test_result.json +0 -0
  518. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/flutter/report.json +0 -0
  519. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/git_log_ingest/sample.out +0 -0
  520. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/go_test/record_test_result.json +0 -0
  521. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  522. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  523. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/go_test/subset_result.json +0 -0
  524. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/fail/output.xml +0 -0
  525. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/fail/record_test_result.json +0 -0
  526. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/output_a.xml +0 -0
  527. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/output_b.xml +0 -0
  528. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/record_test_result.json +0 -0
  529. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/googletest/subset_result.json +0 -0
  530. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
  531. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
  532. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
  533. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/gradle/recursion/expected.json +0 -0
  534. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  535. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/README.md +0 -0
  536. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
  537. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/jasmine-test-results.json +0 -0
  538. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/record_test_result.json +0 -0
  539. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/subset_payload.json +0 -0
  540. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jest/junit.xml +0 -0
  541. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jest/record_test_result.json +0 -0
  542. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/jest/subset_result.json +0 -0
  543. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/karma/README.md +0 -0
  544. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/karma/record_test_result.json +0 -0
  545. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/karma/sample-report.json +0 -0
  546. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/karma/subset_payload.json +0 -0
  547. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/karma/subset_result.json +0 -0
  548. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/createdFile_1.lst +0 -0
  549. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/createdFile_2.lst +0 -0
  550. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml +0 -0
  551. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml +0 -0
  552. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
  553. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
  554. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java +0 -0
  555. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/list.lst +0 -0
  556. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/record_test_result.json +0 -0
  557. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-1.xml +0 -0
  558. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-2.xml +0 -0
  559. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-nested.xml +0 -0
  560. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/dummy.xml +0 -0
  561. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
  562. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_by_confidence_result.json +0 -0
  563. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_from_file_result.json +0 -0
  564. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_result.json +0 -0
  565. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_scan_dryrun_results_result.json +0 -0
  566. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
  567. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
  568. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  569. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  570. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  571. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  572. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserTest.xml +0 -0
  573. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result.json +0 -0
  574. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  575. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  576. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/subset_result.json +0 -0
  577. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/minitest/test/example_test.rb +0 -0
  578. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/list.xml +0 -0
  579. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  580. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  581. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/output-linux.xml +0 -0
  582. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/output-windows.xml +0 -0
  583. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/record_test_result-linux.json +0 -0
  584. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/record_test_result-windows.json +0 -0
  585. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/.gitignore +0 -0
  586. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/Program.cs +0 -0
  587. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/README.md +0 -0
  588. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/Test.cs +0 -0
  589. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/calc.csproj +0 -0
  590. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/nunit/subset_result.json +0 -0
  591. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/packages/e2e/.gitkeep +0 -0
  592. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/playwright.config.ts +0 -0
  593. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result.json +0 -0
  594. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_json.json +0 -0
  595. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_json_base.json +0 -0
  596. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_prefix.json +0 -0
  597. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report.json +0 -0
  598. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report.xml +0 -0
  599. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report_with_json_base.json +0 -0
  600. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report_with_prefix.json +0 -0
  601. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/prove/record_test_result.json +0 -0
  602. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/prove/report.xml +0 -0
  603. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/pytest.ini +0 -0
  604. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/record_test_result.json +0 -0
  605. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/record_test_result_json.json +0 -0
  606. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/report.json +0 -0
  607. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/report.xml +0 -0
  608. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/subset_result.json +0 -0
  609. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/conftest.py +0 -0
  610. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/__init__.py +0 -0
  611. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  612. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  613. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/funcs3_test.py +0 -0
  614. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/test_funcs1.py +0 -0
  615. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/test_funcs2.py +0 -0
  616. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/dryrun.xml +0 -0
  617. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/output.xml +0 -0
  618. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/output_legacy.xml +0 -0
  619. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  620. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_legacy_result.json +0 -0
  621. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_result.json +0 -0
  622. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/single-output.xml +0 -0
  623. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/robot/subset_result.json +0 -0
  624. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/rspec/record_test_result.json +0 -0
  625. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/rspec/rspec.xml +0 -0
  626. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/vitest/record_test_result.json +0 -0
  627. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/vitest/report.xml +0 -0
  628. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/xctest/junit.xml +0 -0
  629. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/xctest/record_test_result.json +0 -0
  630. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/data/xctest/subset_result.json +0 -0
  631. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/helper.py +0 -0
  632. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/plugins/foo.py +0 -0
  633. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_cli_test_case.py +0 -0
  634. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_plugin.py +0 -0
  635. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/__init__.py +0 -0
  636. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_adb.py +0 -0
  637. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_ant.py +0 -0
  638. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_bazel.py +0 -0
  639. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_behave.py +0 -0
  640. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_codeceptjs.py +0 -0
  641. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_ctest.py +0 -0
  642. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cts.py +0 -0
  643. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cucumber.py +0 -0
  644. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cypress.py +0 -0
  645. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_dotnet.py +0 -0
  646. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_file.py +0 -0
  647. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_go_test.py +0 -0
  648. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_googletest.py +0 -0
  649. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_gradle.py +0 -0
  650. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_jasmine.py +0 -0
  651. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_jest.py +0 -0
  652. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_karma.py +0 -0
  653. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_minitest.py +0 -0
  654. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_nunit.py +0 -0
  655. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_playwright.py +0 -0
  656. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_prove.py +0 -0
  657. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_pytest.py +0 -0
  658. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_raw.py +0 -0
  659. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_robot.py +0 -0
  660. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_rspec.py +0 -0
  661. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_vitest.py +0 -0
  662. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_xctest.py +0 -0
  663. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_testpath.py +0 -0
  664. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/test_version.py +0 -0
  665. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/__init__.py +0 -0
  666. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_edit_distance.py +0 -0
  667. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_fail_fast_mode.py +0 -0
  668. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_file_name_pattern.py +0 -0
  669. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_git_log_parser.py +0 -0
  670. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_glob.py +0 -0
  671. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_gzipgen.py +0 -0
  672. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_http_client.py +0 -0
  673. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_link.py +0 -0
  674. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_logger.py +0 -0
  675. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_session.py +0 -0
  676. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_tracking.py +0 -0
  677. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_typer.py +0 -0
  678. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tests/utils/test_typer_types.py +0 -0
  679. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tools/README.md +0 -0
  680. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/tools/generate_reference.py +0 -0
  681. {smart_tests_cli-2.14.0 → smart_tests_cli-2.15.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.14.0
3
+ Version: 2.15.1
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -2,6 +2,7 @@ from ... import args4p
2
2
  from ...app import Application
3
3
  from .model import model
4
4
  from .subset import subset
5
+ from .tests import tests
5
6
 
6
7
 
7
8
  @args4p.group(help="Inspect test and subset data")
@@ -11,3 +12,4 @@ def inspect(app: Application):
11
12
 
12
13
  inspect.add_command(model)
13
14
  inspect.add_command(subset)
15
+ inspect.add_command(tests)
@@ -0,0 +1,176 @@
1
+ import json
2
+ import sys
3
+ from abc import ABCMeta, abstractmethod
4
+ from http import HTTPStatus
5
+ from typing import Annotated, List
6
+
7
+ import click
8
+ from tabulate import tabulate
9
+
10
+ import smart_tests.args4p.typer as typer
11
+
12
+ from ... import args4p
13
+ from ...app import Application
14
+ from ...utils.authentication import ensure_org_workspace
15
+ from ...utils.smart_tests_client import SmartTestsClient
16
+
17
+
18
+ class TestResult(object):
19
+ def __init__(self, result: dict):
20
+ self._status = result.get("status", "")
21
+ self._duration_sec = result.get("duration", 0.0)
22
+ self._created_at = result.get("createdAt", None)
23
+ self._test_path = "#".join([path["type"] + "=" + path["name"]
24
+ for path in result["testPath"] if path.keys() >= {"type", "name"}])
25
+
26
+
27
+ class TestResults(object):
28
+ def __init__(self, test_session_id: int, results: List[TestResult]):
29
+ self._test_session_id = test_session_id
30
+ self._results = results
31
+
32
+ def add(self, result: TestResult):
33
+ self._results.append(result)
34
+
35
+ def list(self) -> List[TestResult]:
36
+ return self._results
37
+
38
+ def total_duration_sec(self) -> float:
39
+ return sum([result._duration_sec for result in self._results])
40
+
41
+ def total_duration_min(self) -> float:
42
+ return (sum([result._duration_sec for result in self._results]) / 60)
43
+
44
+ def total_count(self) -> int:
45
+ return len(self._results)
46
+
47
+ def filter_by_status(self, status: str) -> 'TestResults':
48
+ return TestResults(self._test_session_id, [result for result in self._results if result._status == status])
49
+
50
+
51
+ class TestResultAbstractDisplay(metaclass=ABCMeta):
52
+ def __init__(self, results: TestResults):
53
+ self._results = results
54
+
55
+ @abstractmethod
56
+ def display(self):
57
+ raise NotImplementedError("display method is not implemented")
58
+
59
+
60
+ class TestResultJSONDisplay(TestResultAbstractDisplay):
61
+ def __init__(self, results: TestResults):
62
+ super().__init__(results)
63
+
64
+ def display(self):
65
+ result_json = {}
66
+ result_json["summary"] = {
67
+ "total": {
68
+ "report_count": self._results.total_count(),
69
+ "duration_min": round(self._results.total_duration_min(), 2),
70
+ },
71
+ "success": {
72
+ "report_count": self._results.filter_by_status("SUCCESS").total_count(),
73
+ "duration_min": round(self._results.filter_by_status("SUCCESS").total_duration_min(), 2)
74
+ },
75
+ "failure": {
76
+ "report_count": self._results.filter_by_status("FAILURE").total_count(),
77
+ "duration_min": round(self._results.filter_by_status("FAILURE").total_duration_min(), 2)
78
+ },
79
+ "skip": {
80
+ "report_count": self._results.filter_by_status("SKIP").total_count(),
81
+ "duration_min": round(self._results.filter_by_status("SKIP").total_duration_min(), 2)
82
+ }
83
+ }
84
+ result_json["results"] = []
85
+ for result in self._results.list():
86
+ result_json["results"].append({
87
+ "test_path": result._test_path,
88
+ "duration_sec": result._duration_sec,
89
+ "status": result._status,
90
+ "created_at": result._created_at
91
+ })
92
+
93
+ org, workspace = ensure_org_workspace()
94
+ result_json["test_session_app_url"] = (
95
+ f"https://app.launchableinc.com/organizations/{org}/workspaces/{workspace}"
96
+ f"/test-sessions/{self._results._test_session_id}")
97
+
98
+ click.echo(json.dumps(result_json, indent=2))
99
+
100
+
101
+ class TestResultTableDisplay(TestResultAbstractDisplay):
102
+ def __init__(self, results: TestResults):
103
+ super().__init__(results)
104
+
105
+ def display(self):
106
+ header = ["Test Path",
107
+ "Duration (sec)", "Status", "Uploaded At"]
108
+ rows = []
109
+ for result in self._results.list():
110
+ rows.append(
111
+ [
112
+ result._test_path,
113
+ result._duration_sec,
114
+ result._status,
115
+ result._created_at,
116
+ ]
117
+ )
118
+ click.echo(tabulate(rows, header, tablefmt="github", floatfmt=".2f"))
119
+
120
+ summary_header = ["Summary", "Report Count", "Total Duration (min)"]
121
+ summary_rows = [
122
+ ["Total", self._results.total_count(),
123
+ self._results.total_duration_min()],
124
+ ["Success", self._results.filter_by_status("SUCCESS").total_count(),
125
+ self._results.filter_by_status("SUCCESS").total_duration_min()],
126
+ ["Failure", self._results.filter_by_status("FAILURE").total_count(),
127
+ self._results.filter_by_status("FAILURE").total_duration_min()],
128
+ ["Skip", self._results.filter_by_status("SKIPPED").total_count(),
129
+ self._results.filter_by_status("SKIPPED").total_duration_min()]]
130
+
131
+ click.echo(tabulate(summary_rows, summary_header, tablefmt="grid", floatfmt=["", ".0f", ".2f"]))
132
+
133
+
134
+ @args4p.command(help="Inspect test session results")
135
+ def tests(
136
+ app: Application,
137
+ test_session_id: Annotated[int, typer.Option(
138
+ '--test-session-id',
139
+ help="Test session ID",
140
+ required=True,
141
+ )],
142
+ is_json_format: Annotated[bool, typer.Option(
143
+ '--json',
144
+ help="Display JSON format"
145
+ )] = False):
146
+ client = SmartTestsClient(app=app)
147
+
148
+ try:
149
+ res = client.request(
150
+ "get", f"/test_sessions/{test_session_id}/events")
151
+
152
+ if res.status_code == HTTPStatus.NOT_FOUND:
153
+ click.echo(click.style(
154
+ f"Test session {test_session_id} not found. Check test session ID and try again.", 'yellow'),
155
+ err=True,
156
+ )
157
+ sys.exit(1)
158
+
159
+ res.raise_for_status()
160
+ results = res.json()
161
+ except Exception as e:
162
+ client.print_exception_and_recover(e, "Warning: failed to inspect tests")
163
+ return
164
+
165
+ test_results = TestResults(test_session_id=test_session_id, results=[])
166
+ for result in results:
167
+ if result.keys() >= {"testPath"}:
168
+ test_results.add(TestResult(result))
169
+
170
+ displayer: TestResultAbstractDisplay
171
+ if is_json_format:
172
+ displayer = TestResultJSONDisplay(test_results)
173
+ else:
174
+ displayer = TestResultTableDisplay(test_results)
175
+
176
+ displayer.display()
@@ -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)
@@ -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.14.0
3
+ Version: 2.15.1
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -60,6 +60,7 @@ smart_tests/commands/get/docs.py
60
60
  smart_tests/commands/inspect/__init__.py
61
61
  smart_tests/commands/inspect/model.py
62
62
  smart_tests/commands/inspect/subset.py
63
+ smart_tests/commands/inspect/tests.py
63
64
  smart_tests/commands/record/__init__.py
64
65
  smart_tests/commands/record/attachment.py
65
66
  smart_tests/commands/record/build.py
@@ -425,6 +426,7 @@ tests/commands/compare/__init__.py
425
426
  tests/commands/compare/test_subsets.py
426
427
  tests/commands/inspect/test_model.py
427
428
  tests/commands/inspect/test_subset.py
429
+ tests/commands/inspect/test_tests.py
428
430
  tests/commands/record/__init__.py
429
431
  tests/commands/record/test_attachment.py
430
432
  tests/commands/record/test_build.py
@@ -544,6 +546,7 @@ tests/data/karma/subset_result.json
544
546
  tests/data/maven/createdFile_1.lst
545
547
  tests/data/maven/createdFile_2.lst
546
548
  tests/data/maven/list.lst
549
+ tests/data/maven/record_test_nested_displayname_result.json
547
550
  tests/data/maven/record_test_result.json
548
551
  tests/data/maven/subset_by_absolute_time_result.json
549
552
  tests/data/maven/subset_by_confidence_result.json
@@ -561,6 +564,7 @@ tests/data/maven/reports/TEST-1.xml
561
564
  tests/data/maven/reports/TEST-2.xml
562
565
  tests/data/maven/reports/TEST-nested.xml
563
566
  tests/data/maven/reports/dummy.xml
567
+ tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml
564
568
  tests/data/minitest/TEST-Admin_UserTest.xml
565
569
  tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml
566
570
  tests/data/minitest/TEST-UserControllerTest.xml
@@ -56,6 +56,7 @@
56
56
  "smart_tests/commands/inspect/__init__.py",
57
57
  "smart_tests/commands/inspect/model.py",
58
58
  "smart_tests/commands/inspect/subset.py",
59
+ "smart_tests/commands/inspect/tests.py",
59
60
  "smart_tests/commands/record/__init__.py",
60
61
  "smart_tests/commands/record/attachment.py",
61
62
  "smart_tests/commands/record/build.py",
@@ -404,6 +405,7 @@
404
405
  "tests/commands/compare/test_subsets.py",
405
406
  "tests/commands/inspect/test_model.py",
406
407
  "tests/commands/inspect/test_subset.py",
408
+ "tests/commands/inspect/test_tests.py",
407
409
  "tests/commands/record/__init__.py",
408
410
  "tests/commands/record/test_attachment.py",
409
411
  "tests/commands/record/test_build.py",
@@ -537,7 +539,9 @@
537
539
  "tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java",
538
540
  "tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java",
539
541
  "tests/data/maven/list.lst",
542
+ "tests/data/maven/record_test_nested_displayname_result.json",
540
543
  "tests/data/maven/record_test_result.json",
544
+ "tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml",
541
545
  "tests/data/maven/reports/TEST-1.xml",
542
546
  "tests/data/maven/reports/TEST-2.xml",
543
547
  "tests/data/maven/reports/TEST-nested.xml",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.15.1",
3
+ "distance": 0,
4
+ "node": "ga228846b9d3b9fa01d2612f6094402c40af16362",
5
+ "dirty": false,
6
+ "branch": "main",
7
+ "node_date": "2026-09-29"
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
  }