smart-tests-cli 2.13.0__tar.gz → 2.14.0__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 (677) hide show
  1. smart_tests_cli-2.14.0/.claude/skills/merge-v1-to-main/SKILL.md +131 -0
  2. {smart_tests_cli-2.13.0/smart_tests_cli.egg-info → smart_tests_cli-2.14.0}/PKG-INFO +1 -1
  3. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/gate.py +33 -2
  4. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/subset.py +1 -1
  5. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/jar/exe_deploy.jar +0 -0
  6. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/maven.py +42 -0
  7. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0/smart_tests_cli.egg-info}/PKG-INFO +1 -1
  8. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/SOURCES.txt +4 -0
  9. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/scm_file_list.json +4 -0
  10. smart_tests_cli-2.14.0/smart_tests_cli.egg-info/scm_version.json +8 -0
  11. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +76 -14
  12. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +91 -0
  13. smart_tests_cli-2.14.0/tests/commands/test_gate.py +227 -0
  14. smart_tests_cli-2.14.0/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml +4 -0
  15. smart_tests_cli-2.14.0/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml +4 -0
  16. smart_tests_cli-2.14.0/tests/data/maven/subset_scan_dryrun_results_result.json +12 -0
  17. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_maven.py +30 -0
  18. smart_tests_cli-2.13.0/smart_tests_cli.egg-info/scm_version.json +0 -8
  19. smart_tests_cli-2.13.0/tests/commands/test_gate.py +0 -126
  20. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.bazelrc +0 -0
  21. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.bazelversion +0 -0
  22. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.dockerignore +0 -0
  23. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.editorconfig +0 -0
  24. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/release.yml +0 -0
  25. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/bazel-test.yml +0 -0
  26. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/e2e.yml +0 -0
  27. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/pre-commit.yml +0 -0
  28. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/publish.yml +0 -0
  29. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/test.yml +0 -0
  30. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.github/workflows/update_maven_install_json.yml +0 -0
  31. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.gitignore +0 -0
  32. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.pre-commit-config.yaml +0 -0
  33. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.python-version +0 -0
  34. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/.tagpr +0 -0
  35. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/CLAUDE.md +0 -0
  36. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/CONTRIBUTING.md +0 -0
  37. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/Dockerfile +0 -0
  38. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/LICENSE.txt +0 -0
  39. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/MODULE.bazel +0 -0
  40. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/MODULE.bazel.lock +0 -0
  41. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/README.md +0 -0
  42. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/WORKSPACE.bzlmod +0 -0
  43. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/build-java.sh +0 -0
  44. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/pyproject.toml +0 -0
  45. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/renovate.json +0 -0
  46. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/scripts/update_docs.sh +0 -0
  47. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/scripts/update_schema.sh +0 -0
  48. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/setup.cfg +0 -0
  49. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/setup.py +0 -0
  50. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/__init__.py +0 -0
  51. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/__main__.py +0 -0
  52. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/app.py +0 -0
  53. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/README.md +0 -0
  54. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/__init__.py +0 -0
  55. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/argument.py +0 -0
  56. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/command.py +0 -0
  57. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/converters/__init__.py +0 -0
  58. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/decorators.py +0 -0
  59. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/exceptions.py +0 -0
  60. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/option.py +0 -0
  61. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/parameter.py +0 -0
  62. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/args4p/typer/__init__.py +0 -0
  63. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/__init__.py +0 -0
  64. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/analyze/__init__.py +0 -0
  65. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/analyze/subset.py +0 -0
  66. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/compare/__init__.py +0 -0
  67. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/compare/subsets.py +0 -0
  68. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/detect_flakes.py +0 -0
  69. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/get/__init__.py +0 -0
  70. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/get/api_schema.py +0 -0
  71. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/get/docs.py +0 -0
  72. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/inspect/__init__.py +0 -0
  73. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/inspect/model.py +0 -0
  74. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/inspect/subset.py +0 -0
  75. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/__init__.py +0 -0
  76. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/attachment.py +0 -0
  77. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/build.py +0 -0
  78. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/case_event.py +0 -0
  79. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/commit.py +0 -0
  80. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/deployment.py +0 -0
  81. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/session.py +0 -0
  82. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/record/tests.py +0 -0
  83. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/stats/__init__.py +0 -0
  84. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/stats/test_sessions.py +0 -0
  85. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/test_path_writer.py +0 -0
  86. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/update/__init__.py +0 -0
  87. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/update/alias.py +0 -0
  88. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/verify.py +0 -0
  89. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/view/__init__.py +0 -0
  90. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/view/flaky_tests.py +0 -0
  91. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/view/longest_tests.py +0 -0
  92. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/view/never_failing_tests.py +0 -0
  93. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/commands/view/test_results.py +0 -0
  94. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/antora.yml +0 -0
  95. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/adb.adoc +0 -0
  96. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/ant.adoc +0 -0
  97. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/bazel.adoc +0 -0
  98. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/behave.adoc +0 -0
  99. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations/github-actions.adoc +0 -0
  100. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations.adoc +0 -0
  101. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/ctest.adoc +0 -0
  102. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/cucumber.adoc +0 -0
  103. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/cypress.adoc +0 -0
  104. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/dotnet-test.adoc +0 -0
  105. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/flutter.adoc +0 -0
  106. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/go-test.adoc +0 -0
  107. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/googletest.adoc +0 -0
  108. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/gradle.adoc +0 -0
  109. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/jest.adoc +0 -0
  110. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/karma.adoc +0 -0
  111. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/maven.adoc +0 -0
  112. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/minitest.adoc +0 -0
  113. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/playwright.adoc +0 -0
  114. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/prove.adoc +0 -0
  115. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/pytest.adoc +0 -0
  116. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/robot.adoc +0 -0
  117. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/rspec.adoc +0 -0
  118. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/c-plus-plus.adoc +0 -0
  119. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/dotnet.adoc +0 -0
  120. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/go.adoc +0 -0
  121. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/java.adoc +0 -0
  122. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/javascript.adoc +0 -0
  123. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/perl.adoc +0 -0
  124. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/python.adoc +0 -0
  125. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-languages/ruby.adoc +0 -0
  126. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/appium.adoc +0 -0
  127. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/cucumber.adoc +0 -0
  128. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/googletest.adoc +0 -0
  129. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/jest.adoc +0 -0
  130. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/junit.adoc +0 -0
  131. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/minitest.adoc +0 -0
  132. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nose.adoc +0 -0
  133. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nunit.adoc +0 -0
  134. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/prove.adoc +0 -0
  135. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/robot.adoc +0 -0
  136. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/rspec.adoc +0 -0
  137. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/selenium.adoc +0 -0
  138. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/testng.adoc +0 -0
  139. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/vitest.adoc +0 -0
  140. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/archive/xctest.adoc +0 -0
  141. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
  142. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
  143. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
  144. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/507088cf-209d-4856-be3e-60477c166d92.png +0 -0
  145. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
  146. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
  147. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
  148. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
  149. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
  150. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
  151. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
  152. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
  153. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/groups-2-record-after.png +0 -0
  154. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/auto-quarantine.png +0 -0
  155. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/failure-test.png +0 -0
  156. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/manual-quarantine.png +0 -0
  157. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/how-long-train-ml-model.png +0 -0
  158. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/icons/icon-vertical-three-dots-dark.png +0 -0
  159. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/illustion-run-whitelisted-tests-1.png +0 -0
  160. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-ignore-flakes-1.png +0 -0
  161. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-rotate-optimize-coverage.png +0 -0
  162. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-run-recently-failed-tests.png +0 -0
  163. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
  164. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/link-to-results-example.png +0 -0
  165. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/model-training-evaluation-confidence-curves.png +0 -0
  166. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/new-code-existing-tests.png +0 -0
  167. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
  168. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
  169. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
  170. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
  171. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/predictive-test-selection-observation-mode.png +0 -0
  172. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
  173. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/pts/pts-observe.png +0 -0
  174. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
  175. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
  176. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately-detailed.png +0 -0
  177. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately.png +0 -0
  178. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos.png +0 -0
  179. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-41-20.png +0 -0
  180. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-44-15.png +0 -0
  181. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-45-10.png +0 -0
  182. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-08-22-at-22-50-49.png +0 -0
  183. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-1-48-30-pm.png +0 -0
  184. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-2-14-11-pm.png +0 -0
  185. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-4-50-56-pm.png +0 -0
  186. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-06-32-pm.png +0 -0
  187. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-09-04-pm.png +0 -0
  188. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-21-37-pm.png +0 -0
  189. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/builds-dashboard.png +0 -0
  190. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/create-api-key.png +0 -0
  191. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/initial-settings.png +0 -0
  192. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/organization-profile-id.png +0 -0
  193. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/record-session.png +0 -0
  194. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/test-session-interface.png +0 -0
  195. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
  196. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
  197. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
  198. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/slack-desktop-with-app-messages.png +0 -0
  199. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-subset-formation-flow.png +0 -0
  200. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-builds-interface-v1png.png +0 -0
  201. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-cli-3.png +0 -0
  202. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-monthly-time-saved.png +0 -0
  203. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_api_key_setting_20210613.png +0 -0
  204. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_invite_url_20220613.png +0 -0
  205. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_settings_20220613.png +0 -0
  206. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
  207. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/subset/dynamic-parallel.png +0 -0
  208. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
  209. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
  210. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
  211. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
  212. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
  213. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
  214. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
  215. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-2.png +0 -0
  216. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-3.png +0 -0
  217. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-4.png +0 -0
  218. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
  219. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-details-with-content.png +0 -0
  220. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-report-example.png +0 -0
  221. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
  222. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
  223. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
  224. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
  225. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
  226. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
  227. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
  228. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
  229. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
  230. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
  231. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
  232. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
  233. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
  234. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/administration/pages/data-examples.adoc +0 -0
  235. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/administration/pages/data-privacy-and-protection.adoc +0 -0
  236. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/administration/pages/security-policies.adoc +0 -0
  237. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/administration/pages/troubleshooting.adoc +0 -0
  238. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
  239. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
  240. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
  241. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
  242. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
  243. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
  244. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
  245. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
  246. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
  247. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/high-failure-rate-tests-and-quarantine.adoc +0 -0
  248. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
  249. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/how-we-select-tests.adoc +0 -0
  250. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/use-cases-for-predictive-test-selection.adoc +0 -0
  251. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/viewing-time-savings.adoc +0 -0
  252. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
  253. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-notifications/github-app-for-test-sessions.adoc +0 -0
  254. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-notifications/test-notifications-via-slack.adoc +0 -0
  255. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
  256. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
  257. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
  258. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/features/pages/test-trends-and-insights.adoc +0 -0
  259. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/ai-assistance.adoc +0 -0
  260. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/cli-reference.adoc +0 -0
  261. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/cli-version.txt +0 -0
  262. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/faq.adoc +0 -0
  263. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/integrations/raw.adoc +0 -0
  264. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/integrations/use-the-generic-file-based-runner-integration.adoc +0 -0
  265. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/integrations.adoc +0 -0
  266. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/onboarding-guide/best-practices-checklist.adoc +0 -0
  267. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/onboarding-guide/optional-configurations.adoc +0 -0
  268. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/onboarding-guide.adoc +0 -0
  269. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/supported-languages.adoc +0 -0
  270. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/references/pages/supported-test-frameworks.adoc +0 -0
  271. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/choose-a-value-for-build-name.adoc +0 -0
  272. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/deal-with-shallow-clones.adoc +0 -0
  273. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-microservices.adoc +0 -0
  274. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-multistage-build.adoc +0 -0
  275. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-from-multiple-repositories.adoc +0 -0
  276. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds.adoc +0 -0
  277. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/run-under-restricted-networks.adoc +0 -0
  278. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-sessions/record-sessions.adoc +0 -0
  279. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/attach-log-files.adoc +0 -0
  280. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/convert-test-reports-to-junit-format.adoc +0 -0
  281. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/ensure-record-tests-always-runs.adoc +0 -0
  282. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/manage-complex-test-session-layouts.adoc +0 -0
  283. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/record-test-results.adoc +0 -0
  284. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/separate-out-test-suites.adoc +0 -0
  285. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/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
  286. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/send-data-to-smart-tests.adoc +0 -0
  287. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/getting-started.adoc +0 -0
  288. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/migration-to-github-oidc-auth.adoc +0 -0
  289. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/use-the-cli-with-docker-image.adoc +0 -0
  290. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/choose-a-subset-optimization-target.adoc +0 -0
  291. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/combine-with-rule-based-test-selection.adoc +0 -0
  292. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/observe-subset-behavior.adoc +0 -0
  293. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/replace-static-parallel-suites-dynamic-parallel-subset.adoc +0 -0
  294. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/request-and-run-a-subset-of-tests.adoc +0 -0
  295. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-subset-optimization-target.adoc +0 -0
  296. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-tests-extension-for-VS-code.adoc +0 -0
  297. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-predictive-test-selection.adoc +0 -0
  298. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-with-the-smart-tests-cli.adoc +0 -0
  299. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/use-groups-to-split-subsets.adoc +0 -0
  300. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/zero-input-subsetting.adoc +0 -0
  301. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/plugins/__init__.py +0 -0
  302. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/schema/openapi-schema.json +0 -0
  303. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/__init__.py +0 -0
  304. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/adb.py +0 -0
  305. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/ant.py +0 -0
  306. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/bazel.py +0 -0
  307. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/behave.py +0 -0
  308. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/codeceptjs.py +0 -0
  309. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/ctest.py +0 -0
  310. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/cts.py +0 -0
  311. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/cucumber.py +0 -0
  312. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/cypress.py +0 -0
  313. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/dotnet.py +0 -0
  314. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/file.py +0 -0
  315. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/flutter.py +0 -0
  316. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/go_test.py +0 -0
  317. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/googletest.py +0 -0
  318. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/gradle.py +0 -0
  319. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/jasmine.py +0 -0
  320. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/jest.py +0 -0
  321. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/karma.py +0 -0
  322. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/minitest.py +0 -0
  323. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/nunit.py +0 -0
  324. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/playwright.py +0 -0
  325. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/prove.py +0 -0
  326. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/pytest.py +0 -0
  327. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/raw.py +0 -0
  328. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/robot.py +0 -0
  329. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/rspec.py +0 -0
  330. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/smart_tests.py +0 -0
  331. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/vitest.py +0 -0
  332. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/test_runners/xctest.py +0 -0
  333. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/testpath.py +0 -0
  334. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/__init__.py +0 -0
  335. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/authentication.py +0 -0
  336. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/ci_provider.py +0 -0
  337. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/commands.py +0 -0
  338. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/commit_ingester.py +0 -0
  339. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/common_tz.py +0 -0
  340. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/edit_distance.py +0 -0
  341. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/env_keys.py +0 -0
  342. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/exceptions.py +0 -0
  343. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/fail_fast_mode.py +0 -0
  344. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/file_name_pattern.py +0 -0
  345. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/git_log_parser.py +0 -0
  346. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/glob.py +0 -0
  347. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/gzipgen.py +0 -0
  348. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/http_client.py +0 -0
  349. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/input_snapshot.py +0 -0
  350. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/java.py +0 -0
  351. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/link.py +0 -0
  352. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/logger.py +0 -0
  353. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/no_build.py +0 -0
  354. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/sax.py +0 -0
  355. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/session.py +0 -0
  356. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/smart_tests_client.py +0 -0
  357. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/subprocess.py +0 -0
  358. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/tracking.py +0 -0
  359. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/utils/typer_types.py +0 -0
  360. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests/version.py +0 -0
  361. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
  362. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/entry_points.txt +0 -0
  363. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/requires.txt +0 -0
  364. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/smart_tests_cli.egg-info/top_level.txt +0 -0
  365. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/BUILD +0 -0
  366. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  367. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
  368. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
  369. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
  370. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
  371. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
  372. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
  373. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  374. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
  375. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
  376. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
  377. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  378. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
  379. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
  380. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
  381. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
  382. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  383. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
  384. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
  385. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/Main.java +0 -0
  386. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  387. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
  388. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  389. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  390. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
  391. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
  392. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/maven_install.json +0 -0
  393. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
  394. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
  395. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
  396. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
  397. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
  398. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/GitFileTest.java +0 -0
  399. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
  400. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
  401. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
  402. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  403. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  404. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/test-runner/__main__.py +0 -0
  405. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/__init__.py +0 -0
  406. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/__init__.py +0 -0
  407. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/converters/__init__.py +0 -0
  408. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/converters/test_converters.py +0 -0
  409. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_badcode.py +0 -0
  410. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_badinput.py +0 -0
  411. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_command.py +0 -0
  412. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_decorators.py +0 -0
  413. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_help.py +0 -0
  414. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_parameter.py +0 -0
  415. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/args4p/test_typer.py +0 -0
  416. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/cli_test_case.py +0 -0
  417. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/__init__.py +0 -0
  418. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/compare/__init__.py +0 -0
  419. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/compare/test_subsets.py +0 -0
  420. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/inspect/test_model.py +0 -0
  421. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/inspect/test_subset.py +0 -0
  422. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/__init__.py +0 -0
  423. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_attachment.py +0 -0
  424. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_build.py +0 -0
  425. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_case_event.py +0 -0
  426. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_commit.py +0 -0
  427. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_deployment.py +0 -0
  428. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_session.py +0 -0
  429. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/record/test_tests.py +0 -0
  430. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_api_error.py +0 -0
  431. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_detect_flakes.py +0 -0
  432. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_subset.py +0 -0
  433. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_verify.py +0 -0
  434. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_view_flaky_tests.py +0 -0
  435. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_view_longest_tests.py +0 -0
  436. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_view_never_failing_tests.py +0 -0
  437. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/test_view_test_results.py +0 -0
  438. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/update/__init__.py +0 -0
  439. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/commands/update/test_alias.py +0 -0
  440. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/adb/subset_result.json +0 -0
  441. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
  442. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
  443. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  444. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/record_test_result.json +0 -0
  445. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
  446. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
  447. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/src/com/example/library/Cache.java +0 -0
  448. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
  449. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ant/subset_result.json +0 -0
  450. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  451. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +0 -0
  452. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
  453. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  454. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  455. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  456. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  457. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  458. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  459. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  460. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  461. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  462. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  463. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  464. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  465. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  466. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  467. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  468. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  469. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/build_event.json +0 -0
  470. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/build_event_rest.json +0 -0
  471. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/record_test_result.json +0 -0
  472. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
  473. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
  474. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/bazel/subset_result.json +0 -0
  475. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/behave/record_test_result.json +0 -0
  476. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/behave/reports/report.xml +0 -0
  477. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/behave/subset_result.json +0 -0
  478. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/broken_xml/broken.xml +0 -0
  479. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/broken_xml/normal.xml +0 -0
  480. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
  481. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/codeceptjs/record_test_result.json +0 -0
  482. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  483. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ctest/ctest_list.json +0 -0
  484. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ctest/record_test_result.json +0 -0
  485. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/ctest/subset_result.json +0 -0
  486. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cts/record_test_result.json +0 -0
  487. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cts/subset_result.json +0 -0
  488. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cts/test_result.xml +0 -0
  489. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
  490. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  491. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
  492. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  493. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/record_test_json_result.json +0 -0
  494. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/record_test_result.json +0 -0
  495. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  496. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  497. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  498. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/report/dummy.xml +0 -0
  499. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cucumber/report/result.json +0 -0
  500. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cypress/empty.json +0 -0
  501. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cypress/empty.xml +0 -0
  502. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cypress/record_test_result.json +0 -0
  503. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cypress/subset_result.json +0 -0
  504. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/cypress/test-result.xml +0 -0
  505. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/junit-result-with-metadata.xml +0 -0
  506. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/junit-result.xml +0 -0
  507. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/record_test_result-junit-with-metadata.json +0 -0
  508. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/record_test_result-junit.json +0 -0
  509. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/record_test_result.json +0 -0
  510. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/dotnet/test-result.xml +0 -0
  511. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/file/record_test_result.json +0 -0
  512. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/file/record_test_result_custom_attribute.json +0 -0
  513. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/file/result.xml +0 -0
  514. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/file/result_custom_attribute.xml +0 -0
  515. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/flutter/record_test_result.json +0 -0
  516. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/flutter/report.json +0 -0
  517. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/git_log_ingest/sample.out +0 -0
  518. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/go_test/record_test_result.json +0 -0
  519. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  520. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  521. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/go_test/subset_result.json +0 -0
  522. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/fail/output.xml +0 -0
  523. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/fail/record_test_result.json +0 -0
  524. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/output_a.xml +0 -0
  525. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/output_b.xml +0 -0
  526. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/record_test_result.json +0 -0
  527. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/googletest/subset_result.json +0 -0
  528. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
  529. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
  530. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
  531. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/gradle/recursion/expected.json +0 -0
  532. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  533. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jasmine/README.md +0 -0
  534. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
  535. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jasmine/jasmine-test-results.json +0 -0
  536. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jasmine/record_test_result.json +0 -0
  537. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jasmine/subset_payload.json +0 -0
  538. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jest/junit.xml +0 -0
  539. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jest/record_test_result.json +0 -0
  540. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/jest/subset_result.json +0 -0
  541. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/karma/README.md +0 -0
  542. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/karma/record_test_result.json +0 -0
  543. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/karma/sample-report.json +0 -0
  544. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/karma/subset_payload.json +0 -0
  545. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/karma/subset_result.json +0 -0
  546. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/createdFile_1.lst +0 -0
  547. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/createdFile_2.lst +0 -0
  548. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
  549. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
  550. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java +0 -0
  551. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/list.lst +0 -0
  552. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/record_test_result.json +0 -0
  553. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/reports/TEST-1.xml +0 -0
  554. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/reports/TEST-2.xml +0 -0
  555. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/reports/TEST-nested.xml +0 -0
  556. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/reports/dummy.xml +0 -0
  557. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
  558. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_by_confidence_result.json +0 -0
  559. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_from_file_result.json +0 -0
  560. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_result.json +0 -0
  561. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
  562. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
  563. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  564. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  565. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  566. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  567. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
  568. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/record_test_result.json +0 -0
  569. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  570. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  571. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/subset_result.json +0 -0
  572. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/minitest/test/example_test.rb +0 -0
  573. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/list.xml +0 -0
  574. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  575. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  576. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/output-linux.xml +0 -0
  577. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/output-windows.xml +0 -0
  578. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/record_test_result-linux.json +0 -0
  579. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/record_test_result-windows.json +0 -0
  580. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/src/.gitignore +0 -0
  581. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/src/Program.cs +0 -0
  582. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/src/README.md +0 -0
  583. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/src/Test.cs +0 -0
  584. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/src/calc.csproj +0 -0
  585. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/nunit/subset_result.json +0 -0
  586. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/packages/e2e/.gitkeep +0 -0
  587. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/playwright.config.ts +0 -0
  588. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/record_test_result.json +0 -0
  589. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
  590. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/record_test_result_with_json_base.json +0 -0
  591. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/record_test_result_with_prefix.json +0 -0
  592. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/report.json +0 -0
  593. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/report.xml +0 -0
  594. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/report_with_json_base.json +0 -0
  595. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/playwright/report_with_prefix.json +0 -0
  596. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/prove/record_test_result.json +0 -0
  597. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/prove/report.xml +0 -0
  598. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/pytest.ini +0 -0
  599. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/record_test_result.json +0 -0
  600. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/record_test_result_json.json +0 -0
  601. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/report.json +0 -0
  602. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/report.xml +0 -0
  603. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/subset_result.json +0 -0
  604. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/conftest.py +0 -0
  605. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/fooo/__init__.py +0 -0
  606. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  607. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  608. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
  609. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
  610. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
  611. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/dryrun.xml +0 -0
  612. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/output.xml +0 -0
  613. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/output_legacy.xml +0 -0
  614. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  615. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/record_test_legacy_result.json +0 -0
  616. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/record_test_result.json +0 -0
  617. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/single-output.xml +0 -0
  618. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/robot/subset_result.json +0 -0
  619. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/rspec/record_test_result.json +0 -0
  620. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/rspec/rspec.xml +0 -0
  621. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/vitest/record_test_result.json +0 -0
  622. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/vitest/report.xml +0 -0
  623. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/xctest/junit.xml +0 -0
  624. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/xctest/record_test_result.json +0 -0
  625. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/data/xctest/subset_result.json +0 -0
  626. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/helper.py +0 -0
  627. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/plugins/foo.py +0 -0
  628. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_cli_test_case.py +0 -0
  629. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_plugin.py +0 -0
  630. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/__init__.py +0 -0
  631. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_adb.py +0 -0
  632. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_ant.py +0 -0
  633. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_bazel.py +0 -0
  634. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_behave.py +0 -0
  635. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_codeceptjs.py +0 -0
  636. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_ctest.py +0 -0
  637. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_cts.py +0 -0
  638. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_cucumber.py +0 -0
  639. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_cypress.py +0 -0
  640. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_dotnet.py +0 -0
  641. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_file.py +0 -0
  642. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_go_test.py +0 -0
  643. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_googletest.py +0 -0
  644. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_gradle.py +0 -0
  645. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_jasmine.py +0 -0
  646. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_jest.py +0 -0
  647. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_karma.py +0 -0
  648. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_minitest.py +0 -0
  649. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_nunit.py +0 -0
  650. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_playwright.py +0 -0
  651. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_prove.py +0 -0
  652. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_pytest.py +0 -0
  653. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_raw.py +0 -0
  654. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_robot.py +0 -0
  655. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_rspec.py +0 -0
  656. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_vitest.py +0 -0
  657. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_runners/test_xctest.py +0 -0
  658. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_testpath.py +0 -0
  659. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/test_version.py +0 -0
  660. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/__init__.py +0 -0
  661. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_authentication.py +0 -0
  662. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_edit_distance.py +0 -0
  663. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_fail_fast_mode.py +0 -0
  664. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_file_name_pattern.py +0 -0
  665. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_git_log_parser.py +0 -0
  666. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_glob.py +0 -0
  667. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_gzipgen.py +0 -0
  668. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_http_client.py +0 -0
  669. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_link.py +0 -0
  670. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_logger.py +0 -0
  671. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_session.py +0 -0
  672. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_tracking.py +0 -0
  673. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_typer.py +0 -0
  674. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tests/utils/test_typer_types.py +0 -0
  675. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tools/README.md +0 -0
  676. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/tools/generate_reference.py +0 -0
  677. {smart_tests_cli-2.13.0 → smart_tests_cli-2.14.0}/uv.lock +0 -0
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: merge-v1-to-main
3
+ description: Merge v1 branch changes into main, resolving the conflicts that arise from the v1/main code structure difference
4
+ trigger: When the user says "merge v1 to main", "port v1 to main", "forward port", or similar
5
+ ---
6
+
7
+ ## Background
8
+
9
+ This repository maintains two branches in parallel:
10
+
11
+ - `v1` — the legacy CLI (`launchable/` Python package, `launchable/jar/exe_deploy.jar`)
12
+ - `main` — the rebranded CLI (`smart_tests/` Python package, `smart_tests/jar/exe_deploy.jar`)
13
+
14
+ Features are usually developed on `v1` first, then ported to `main` via `git merge v1`.
15
+
16
+ ## Procedure
17
+
18
+ ### 1. Create a feature branch from main
19
+
20
+ ```
21
+ git checkout -b feature/<ticket>-<description>-main origin/main
22
+ ```
23
+
24
+ ### 2. Find the merge base
25
+
26
+ ```
27
+ export MERGE_BASE=$(git merge-base origin/v1 origin/main)
28
+ ```
29
+
30
+ ### 3. Merge v1
31
+
32
+ ```
33
+ git merge origin/v1
34
+ ```
35
+
36
+ This will typically produce conflicts in several categories. Handle each as described below.
37
+
38
+ ---
39
+
40
+ ## Conflict Resolution Patterns
41
+
42
+ ### `deleted by us: launchable/commands/<file>.py`
43
+
44
+ v1 touched a file that was renamed/moved in main. Find where it lives in main:
45
+
46
+ ```
47
+ git log --oneline ${MERGE_BASE}..origin/main -- smart_tests/commands/<file>.py
48
+ ```
49
+
50
+ If those changes are already reflected in `smart_tests/`, just remove the leftover:
51
+
52
+ ```
53
+ git rm launchable/commands/<file>.py
54
+ ```
55
+
56
+ If the v1 changes are **not** yet in main, apply them as a patch:
57
+
58
+ ```
59
+ git diff $MERGE_BASE origin/v1 -- launchable/commands/<file>.py > PATCH
60
+ patch -l smart_tests/commands/<file>.py < PATCH
61
+ git rm launchable/commands/<file>.py
62
+ ```
63
+
64
+ ### `both modified: tests/commands/test_<cmd>.py`
65
+
66
+ v1 uses `LAUNCHABLE_TOKEN` / `launchable_token`; main uses `SMART_TESTS_TOKEN` / `smart_tests_token`.
67
+ Both sides often add the same tests under different token names.
68
+
69
+ Resolution: keep the `SMART_TESTS_TOKEN` versions (main side) and discard the `LAUNCHABLE_TOKEN` duplicates.
70
+
71
+ If v1 adds a genuinely new test not present in main, port it by renaming the token constant.
72
+
73
+ ### `both modified: smart_tests/jar/exe_deploy.jar`
74
+
75
+ Java source was modified on both sides. Resolve the Java source conflicts first (see below), then:
76
+
77
+ ```
78
+ bash build-java.sh
79
+ git add smart_tests/jar/exe_deploy.jar
80
+ ```
81
+
82
+ ### Java source conflicts (`src/main/java/...`)
83
+
84
+ v1 and main share the same Java source tree. Common differences:
85
+
86
+ | Area | v1 style | main style |
87
+ |---|---|---|
88
+ | `GitFile` construction | `objectReader` (single reader) | `readers::get` (ThreadLocal) |
89
+ | `collectFiles` signature | `(RevCommit start, TreeWalk treeWalk, TreeReceiver, Consumer<VirtualFile>)` | `(Collection<ObjectId> advertised, TreeReceiver, FlushableConsumer<VirtualFile>)` |
90
+ | Static imports | `ImmutableList.*`, `Arrays.*` | `ImmutableList.toImmutableList`, `Arrays.stream` (specific) |
91
+
92
+ Resolution strategy:
93
+ - Keep HEAD (main) structural code (method signatures, `reportAllFiles` block, `readers::get`)
94
+ - Apply the logic change from v1 (the new feature/fix)
95
+ - If v1 uses wildcard static imports, narrow them back to the specific identifiers main uses
96
+
97
+ ---
98
+
99
+ ## After Resolving All Conflicts
100
+
101
+ ```
102
+ bash build-java.sh # rebuild jar and run tests
103
+ git add <all resolved files>
104
+ git commit # complete the merge commit
105
+ git push -u origin <branch>
106
+ ```
107
+
108
+ Then create a PR targeting `main` following the `create-gh-pull-request` skill.
109
+
110
+ ---
111
+
112
+ ## Verifying Correct Resolution
113
+
114
+ After the merge commit, confirm:
115
+
116
+ 1. No conflict markers remain: `git diff HEAD | grep -E '^[<=>]{7}'` should be empty
117
+ 2. Tests pass: `build-java.sh` exits 0
118
+ 3. `smart_tests/jar/exe_deploy.jar` is staged (CI will fail otherwise)
119
+ 4. No `launchable/` paths leak into the commit unless they are legitimately v1-only files
120
+
121
+ ---
122
+
123
+ ## Big Reset
124
+
125
+ If you get hopelessly confused:
126
+
127
+ ```
128
+ git commit --all # save current state
129
+ git tag rescue-$(date +%s) # tag it for recovery
130
+ git reset --hard origin/main # start over from main
131
+ ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.13.0
3
+ Version: 2.14.0
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -1,4 +1,5 @@
1
1
  import json
2
+ import os
2
3
  import sys
3
4
  from http import HTTPStatus
4
5
  from typing import Annotated
@@ -12,6 +13,7 @@ from smart_tests.utils.tracking import TrackingClient
12
13
  from .. import args4p
13
14
  from ..app import Application
14
15
  from ..args4p import typer
16
+ from ..testpath import unparse_test_path
15
17
  from ..utils.commands import Command
16
18
  from ..utils.session import SessionId
17
19
  from ..utils.smart_tests_client import SmartTestsClient
@@ -21,8 +23,8 @@ from ..utils.smart_tests_client import SmartTestsClient
21
23
  def gate(app_instance: Application,
22
24
  session: Annotated[SessionId, SessionId.as_option()],
23
25
  is_json_format: Annotated[bool, typer.Option(
24
- "--json",
25
- help="display JSON format")] = False):
26
+ "--json",
27
+ help="display JSON format")] = False):
26
28
  tracking_client = TrackingClient(Command.GATE, app=app_instance)
27
29
  client = SmartTestsClient(tracking_client=tracking_client, app=app_instance)
28
30
  try:
@@ -50,6 +52,14 @@ def gate(app_instance: Application,
50
52
  client.print_exception_and_recover(e, "Warning: failed to fetch gate status")
51
53
 
52
54
 
55
+ def _escape_github_actions_command_value(value: str) -> str:
56
+ return value.replace('\r', '%0D').replace('\n', '%0A')
57
+
58
+
59
+ def _escape_github_actions_log_line(line: str) -> str:
60
+ return line.replace('::', '%3A%3A', 1) if line.startswith('::') else line
61
+
62
+
53
63
  def display_as_json(res: Response):
54
64
  res_json = res.json()
55
65
  click.echo(json.dumps(res_json, indent=2))
@@ -68,3 +78,24 @@ def display_as_table(res: Response):
68
78
  ]]
69
79
 
70
80
  click.echo(tabulate(rows, headers, tablefmt="github"))
81
+
82
+ failed_tests = res_json.get('actionableFailedTests', [])
83
+ is_github_actions = os.getenv('GITHUB_ACTIONS')
84
+ if failed_tests:
85
+ click.echo("\nActionable Failure Details:\n")
86
+ for i, test in enumerate(failed_tests, 1):
87
+ test_path = unparse_test_path(test.get("testPath", []))
88
+ stderr = (test.get("stderr") or "").strip()
89
+ if is_github_actions:
90
+ safe_test_path = _escape_github_actions_command_value(test_path)
91
+ click.echo("::group::{}. {}".format(i, safe_test_path))
92
+ if stderr:
93
+ for line in stderr.splitlines():
94
+ click.echo(_escape_github_actions_log_line(line))
95
+ click.echo("::endgroup::")
96
+ else:
97
+ click.echo("{}. {}".format(i, test_path))
98
+ if stderr:
99
+ for line in stderr.splitlines():
100
+ click.echo(" {}".format(line))
101
+ click.echo("")
@@ -881,7 +881,7 @@ class Subset(TestPathWriter):
881
881
 
882
882
  if self._requires_test_input():
883
883
  if self.input_given:
884
- print_error_and_die("ERROR: Given arguments did not match any tests. They appear to be incorrect/non-existent.", tracking_client, Tracking.ErrorEvent.USER_ERROR) # noqa E501
884
+ print_error_and_die("ERROR: Given arguments did not match any tests. They appear to be incorrect/non-existent.", self.tracking_client, Tracking.ErrorEvent.USER_ERROR) # noqa E501
885
885
  else:
886
886
  print_error_and_die(
887
887
  "ERROR: Expecting tests to be given, but none provided. See https://help.launchableinc.com/features/predictive-test-selection/requesting-and-running-a-subset-of-tests/ and provide ones, or use the `--get-tests-from-previous-sessions` option", # noqa E501
@@ -1,6 +1,7 @@
1
1
  import glob
2
2
  import os
3
3
  import re
4
+ import xml.etree.ElementTree as ET
4
5
  from typing import Annotated, Dict, List
5
6
 
6
7
  import click
@@ -50,6 +51,29 @@ def is_file(f: str) -> bool:
50
51
  return False
51
52
 
52
53
 
54
+ def parse_surefire_reports() -> List[Dict[str, str]]:
55
+ """Collect the test classes Surefire discovered from its TEST-*.xml reports.
56
+
57
+ Intended to be run against reports produced by a JUnit 5 dry run
58
+ (`mvn test -Djunit.platform.execution.dryRun.enabled=true`): Surefire applies
59
+ all of its own filtering (excludedGroups, includedGroups, excludes, profiles,
60
+ ...) before the dry run, so only the tests Maven would actually execute get a
61
+ report. Each report's root `name` attribute is the fully-qualified class name.
62
+ """
63
+ test_paths = []
64
+ report_pattern = os.path.join('**', 'target', 'surefire-reports', 'TEST-*.xml')
65
+ report_files = glob.glob(report_pattern, recursive=True)
66
+
67
+ for report_file in report_files:
68
+ try:
69
+ if classname := ET.parse(report_file).getroot().get('name'):
70
+ test_paths.append({"type": "class", "name": classname})
71
+ except ET.ParseError as e:
72
+ click.secho(f"Warning: Could not parse {report_file}: {e}", fg='yellow', err=True)
73
+
74
+ return test_paths
75
+
76
+
53
77
  @smart_tests.subset
54
78
  def subset(
55
79
  client: Subset,
@@ -68,6 +92,12 @@ def subset(
68
92
  help="Scan testCompile/default-testCompile/createdFiles.lst for *.lst files generated by `mvn compile` and "
69
93
  "use them as test inputs."
70
94
  )] = False,
95
+ is_scan_dryrun_results: Annotated[bool, typer.Option(
96
+ "--scan-dryrun-results",
97
+ help="Scan surefire reports generated by `mvn test -Djunit.platform.execution.dryRun.enabled=true`. "
98
+ "Only the tests Maven would actually run (after applying pom.xml excludedGroups/excludes/etc.) are "
99
+ "sent to the subset. Run the dry run before this command. JUnit 5 only."
100
+ )] = False,
71
101
  exclude_rules: Annotated[List[str], typer.Option(
72
102
  "--exclude",
73
103
  multiple=True,
@@ -108,6 +138,18 @@ def subset(
108
138
  if source_roots is None:
109
139
  source_roots = []
110
140
 
141
+ if is_scan_dryrun_results:
142
+ tests = parse_surefire_reports()
143
+ if not tests:
144
+ raise BadCmdLineException(
145
+ "No surefire reports found under **/target/surefire-reports/. "
146
+ "Run `mvn test -Djunit.platform.execution.dryRun.enabled=true` before this command.")
147
+ for test in tests:
148
+ client.test_paths.append([test])
149
+ client.same_bin_formatter = lambda s: [{"type": "class", "name": s}]
150
+ client.run()
151
+ return
152
+
111
153
  files_to_read = list(test_compile_created_file)
112
154
  if is_scan_test_compile_lst:
113
155
  if len(test_compile_created_file) > 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.13.0
3
+ Version: 2.14.0
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -19,6 +19,7 @@ pyproject.toml
19
19
  renovate.json
20
20
  setup.py
21
21
  uv.lock
22
+ .claude/skills/merge-v1-to-main/SKILL.md
22
23
  .github/release.yml
23
24
  .github/workflows/bazel-test.yml
24
25
  .github/workflows/e2e.yml
@@ -548,8 +549,11 @@ tests/data/maven/subset_by_absolute_time_result.json
548
549
  tests/data/maven/subset_by_confidence_result.json
549
550
  tests/data/maven/subset_from_file_result.json
550
551
  tests/data/maven/subset_result.json
552
+ tests/data/maven/subset_scan_dryrun_results_result.json
551
553
  tests/data/maven/subset_scan_test_compile_lst_result.json
552
554
  tests/data/maven/subset_with_exclude_rules_result.json
555
+ tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml
556
+ tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml
553
557
  tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java
554
558
  tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java
555
559
  tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java
@@ -2,6 +2,7 @@
2
2
  "files": [
3
3
  ".bazelrc",
4
4
  ".bazelversion",
5
+ ".claude/skills/merge-v1-to-main/SKILL.md",
5
6
  ".dockerignore",
6
7
  ".editorconfig",
7
8
  ".github/release.yml",
@@ -530,6 +531,8 @@
530
531
  "tests/data/karma/subset_result.json",
531
532
  "tests/data/maven/createdFile_1.lst",
532
533
  "tests/data/maven/createdFile_2.lst",
534
+ "tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml",
535
+ "tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml",
533
536
  "tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java",
534
537
  "tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java",
535
538
  "tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java",
@@ -543,6 +546,7 @@
543
546
  "tests/data/maven/subset_by_confidence_result.json",
544
547
  "tests/data/maven/subset_from_file_result.json",
545
548
  "tests/data/maven/subset_result.json",
549
+ "tests/data/maven/subset_scan_dryrun_results_result.json",
546
550
  "tests/data/maven/subset_scan_test_compile_lst_result.json",
547
551
  "tests/data/maven/subset_with_exclude_rules_result.json",
548
552
  "tests/data/minitest/TEST-Admin_UserTest.xml",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.14.0",
3
+ "distance": 0,
4
+ "node": "g70c81defa1673044af8b117712d28e00ab1aae91",
5
+ "dirty": false,
6
+ "branch": "main",
7
+ "node_date": "2026-09-07"
8
+ }
@@ -23,6 +23,7 @@ import org.eclipse.jgit.diff.DiffEntry;
23
23
  import org.eclipse.jgit.errors.ConfigInvalidException;
24
24
  import org.eclipse.jgit.errors.InvalidObjectIdException;
25
25
  import org.eclipse.jgit.errors.MissingObjectException;
26
+ import org.eclipse.jgit.lib.AnyObjectId;
26
27
  import org.eclipse.jgit.lib.ConfigConstants;
27
28
  import org.eclipse.jgit.lib.FileMode;
28
29
  import org.eclipse.jgit.lib.ObjectId;
@@ -49,6 +50,7 @@ import java.io.InputStreamReader;
49
50
  import java.io.OutputStream;
50
51
  import java.io.UncheckedIOException;
51
52
  import java.net.URL;
53
+ import java.nio.charset.StandardCharsets;
52
54
  import java.time.Duration;
53
55
  import java.util.ArrayList;
54
56
  import java.util.Collection;
@@ -68,6 +70,7 @@ import java.util.zip.GZIPOutputStream;
68
70
 
69
71
  import static com.google.common.collect.ImmutableList.toImmutableList;
70
72
  import static java.util.Arrays.stream;
73
+ import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
71
74
 
72
75
  /**
73
76
  * Compares what commits the local repository and the remote repository have, then send delta over.
@@ -528,26 +531,44 @@ public class CommitGraphCollector {
528
531
  OUTER:
529
532
  while (treeWalk.next()) {
530
533
  ObjectId head = treeWalk.getObjectId(0);
531
- for (int i = 1; i < c; i++) {
532
- if (head.equals(treeWalk.getObjectId(i))) {
533
- // file at the head is identical to one of the uninteresting commits,
534
- // meaning we have already seen this file/directory on the server.
535
- // if it is a dir, there's no need to visit this whole subtree, so skip over
536
- continue OUTER;
537
- }
538
- }
539
534
 
540
535
  if (treeWalk.isSubtree()) {
536
+ for (int i = 1; i < c; i++) {
537
+ if (head.equals(treeWalk.getObjectId(i))) {
538
+ continue OUTER;
539
+ }
540
+ }
541
541
  treeWalk.enterSubtree();
542
+ continue;
543
+ }
544
+
545
+ String filePath = treeWalk.getPathString();
546
+ FileMode mode = treeWalk.getFileMode(0);
547
+ ObjectId blobId;
548
+
549
+ if (mode == FileMode.SYMLINK) {
550
+ blobId = resolveSymlinkTarget(start.getTree(), filePath, head);
551
+ if (blobId == null) {
552
+ continue;
553
+ }
554
+ } else if ((mode.getBits() & FileMode.TYPE_MASK) == FileMode.TYPE_FILE) {
555
+ blobId = head;
542
556
  } else {
543
- if ((treeWalk.getFileMode(0).getBits() & FileMode.TYPE_MASK) == FileMode.TYPE_FILE) {
544
- GitFile f = new GitFile(name, treeWalk.getPathString(), head, readers::get);
545
- // to avoid excessive data transfer, skip files that are too big
546
- if (f.size() < 1024 * 1024 && f.isText() && !f.path.equals(HEADER_FILE)) {
547
- treeReceiver.accept(f);
548
- }
557
+ continue;
558
+ }
559
+
560
+ // Dedup check uses the actual content blob ID so that symlink target changes are
561
+ // detected even when the symlink path string (and thus its own blob) is unchanged.
562
+ for (int i = 1; i < c; i++) {
563
+ if (blobId.equals(treeWalk.getObjectId(i))) {
564
+ continue OUTER;
549
565
  }
550
566
  }
567
+
568
+ GitFile f = new GitFile(name, filePath, blobId, readers::get);
569
+ if (f.size() < 1024 * 1024 && f.isText() && !f.path.equals(HEADER_FILE)) {
570
+ treeReceiver.accept(f);
571
+ }
551
572
  }
552
573
 
553
574
  // Now let the server select the files it actually wants to see
@@ -562,6 +583,47 @@ public class CommitGraphCollector {
562
583
  }
563
584
  }
564
585
 
586
+ private ObjectId resolveSymlinkTarget(AnyObjectId treeId, String symlinkPath, ObjectId symlinkBlobId) {
587
+ try {
588
+ byte[] raw = objectReader.open(symlinkBlobId, OBJ_BLOB).getCachedBytes(10_000);
589
+ String targetRelative = new String(raw, StandardCharsets.UTF_8).trim();
590
+
591
+ java.nio.file.Path symlinkDir = java.nio.file.Paths.get(symlinkPath).getParent();
592
+ java.nio.file.Path resolved;
593
+ if (symlinkDir != null) {
594
+ resolved = symlinkDir.resolve(targetRelative).normalize();
595
+ } else {
596
+ resolved = java.nio.file.Paths.get(targetRelative).normalize();
597
+ }
598
+
599
+ if (resolved.isAbsolute() || resolved.startsWith("..")) {
600
+ logger.debug("Skipping symlink {} -> {} (points outside repository)", symlinkPath, targetRelative);
601
+ return null;
602
+ }
603
+
604
+ String resolvedPath = resolved.toString().replace(java.io.File.separatorChar, '/');
605
+
606
+ try (TreeWalk tw = TreeWalk.forPath(git, resolvedPath, treeId)) {
607
+ if (tw == null) {
608
+ logger.debug("Skipping symlink {} -> {} (target not found in tree)", symlinkPath, resolvedPath);
609
+ return null;
610
+ }
611
+
612
+ FileMode targetMode = tw.getFileMode(0);
613
+ if ((targetMode.getBits() & FileMode.TYPE_MASK) == FileMode.TYPE_FILE) {
614
+ return tw.getObjectId(0);
615
+ }
616
+
617
+ logger.debug("Skipping symlink {} -> {} (target is not a regular file, mode={})",
618
+ symlinkPath, resolvedPath, targetMode);
619
+ return null;
620
+ }
621
+ } catch (IOException e) {
622
+ logger.warn("Failed to resolve symlink {}: {}", symlinkPath, e.getMessage());
623
+ return null;
624
+ }
625
+ }
626
+
565
627
  /**
566
628
  * Creates a per repository "header" file as a {@link VirtualFile}.
567
629
  * Currently, this is just the list of files in the repository.
@@ -29,6 +29,7 @@ import java.io.InputStream;
29
29
  import java.nio.charset.StandardCharsets;
30
30
  import java.nio.file.Files;
31
31
  import java.util.ArrayList;
32
+ import java.util.Collections;
32
33
  import java.util.List;
33
34
 
34
35
  import static com.google.common.truth.Truth.assertThat;
@@ -226,6 +227,96 @@ public class CommitGraphCollectorTest {
226
227
  }
227
228
  }
228
229
 
230
+ @Test
231
+ public void symlinkResolvedAsRegularFile() throws Exception {
232
+ try (Git repo = Git.init().setDirectory(ws).call()) {
233
+ Files.writeString(ws.toPath().resolve("real.txt"), "hello");
234
+ repo.add().addFilepattern("real.txt").call();
235
+ commit(repo).setMessage("add real file").call();
236
+
237
+ Files.createSymbolicLink(ws.toPath().resolve("link.txt"), java.nio.file.Path.of("real.txt"));
238
+ repo.add().addFilepattern("link.txt").call();
239
+ commit(repo).setMessage("add symlink").call();
240
+
241
+ assertThat(collectFilePaths(repo)).containsAtLeast("real.txt", "link.txt");
242
+ }
243
+ }
244
+
245
+ @Test
246
+ public void symlinkAcrossDirectories() throws Exception {
247
+ try (Git repo = Git.init().setDirectory(ws).call()) {
248
+ Files.createDirectory(ws.toPath().resolve("sub"));
249
+
250
+ // subdir -> parent: sub/link.txt -> ../root.txt
251
+ Files.writeString(ws.toPath().resolve("root.txt"), "root content");
252
+ Files.createSymbolicLink(ws.toPath().resolve("sub").resolve("link.txt"), java.nio.file.Path.of("../root.txt"));
253
+ repo.add().addFilepattern("root.txt").addFilepattern("sub/link.txt").call();
254
+
255
+ // parent -> subdir: link2.txt -> sub/deep.txt
256
+ Files.writeString(ws.toPath().resolve("sub").resolve("deep.txt"), "deep content");
257
+ Files.createSymbolicLink(ws.toPath().resolve("link2.txt"), java.nio.file.Path.of("sub/deep.txt"));
258
+ repo.add().addFilepattern("sub/deep.txt").addFilepattern("link2.txt").call();
259
+
260
+ commit(repo).setMessage("add cross-directory symlinks").call();
261
+
262
+ assertThat(collectFilePaths(repo)).containsAtLeast("root.txt", "sub/link.txt", "sub/deep.txt", "link2.txt");
263
+ }
264
+ }
265
+
266
+ @Test
267
+ public void brokenSymlinkSkipped() throws Exception {
268
+ try (Git repo = Git.init().setDirectory(ws).call()) {
269
+ Files.writeString(ws.toPath().resolve("target.txt"), "content");
270
+ Files.createSymbolicLink(ws.toPath().resolve("broken.txt"), java.nio.file.Path.of("target.txt"));
271
+ repo.add().addFilepattern("target.txt").addFilepattern("broken.txt").call();
272
+ commit(repo).setMessage("add files").call();
273
+
274
+ repo.rm().addFilepattern("target.txt").call();
275
+ commit(repo).setMessage("remove target").call();
276
+
277
+ assertThat(collectFilePaths(repo)).doesNotContain("broken.txt");
278
+ }
279
+ }
280
+
281
+ @Test
282
+ public void symlinkOutsideRepoSkipped() throws Exception {
283
+ try (Git repo = Git.init().setDirectory(ws).call()) {
284
+ Files.createSymbolicLink(ws.toPath().resolve("escape.txt"), java.nio.file.Path.of("../outside.txt"));
285
+ repo.add().addFilepattern("escape.txt").call();
286
+ commit(repo).setMessage("add symlink to outside").call();
287
+
288
+ assertThat(collectFilePaths(repo)).doesNotContain("escape.txt");
289
+ }
290
+ }
291
+
292
+ @Test
293
+ public void regularFilesUnaffectedBySymlinkChange() throws Exception {
294
+ try (Git repo = Git.init().setDirectory(ws).call()) {
295
+ Files.writeString(ws.toPath().resolve("a.txt"), "aaa");
296
+ Files.writeString(ws.toPath().resolve("b.txt"), "bbb");
297
+ repo.add().addFilepattern("a.txt").addFilepattern("b.txt").call();
298
+ commit(repo).setMessage("add regular files").call();
299
+
300
+ assertThat(collectFilePaths(repo)).containsExactly("a.txt", "b.txt");
301
+ }
302
+ }
303
+
304
+ private List<String> collectFilePaths(Git repo) throws IOException {
305
+ List<VirtualFile> files = new ArrayList<>();
306
+ CommitGraphCollector cgc = new CommitGraphCollector("test", repo.getRepository());
307
+ cgc.new ByRepository(repo.getRepository(), "main")
308
+ .collectFiles(Collections.emptyList(), new PassThroughTreeReceiverImpl(),
309
+ FlushableConsumer.of(files::add));
310
+
311
+ List<String> paths = new ArrayList<>();
312
+ for (VirtualFile f : files) {
313
+ if (!f.path().equals(CommitGraphCollector.HEADER_FILE)) {
314
+ paths.add(f.path());
315
+ }
316
+ }
317
+ return paths;
318
+ }
319
+
229
320
  private CommitCommand commit(Git r) {
230
321
  return r.commit().setAll(true).setSign(false);
231
322
  }