smart-tests-cli 2.0.0rc2__tar.gz → 2.1.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 (420) hide show
  1. smart_tests_cli-2.1.0/.bazelversion +1 -0
  2. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.editorconfig +1 -1
  3. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/e2e.yml +13 -14
  4. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/publish.yml +24 -24
  5. smart_tests_cli-2.1.0/.github/workflows/test.yml +95 -0
  6. smart_tests_cli-2.1.0/Dockerfile +27 -0
  7. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/PKG-INFO +9 -9
  8. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/README.md +3 -3
  9. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/WORKSPACE +4 -1
  10. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/pyproject.toml +8 -10
  11. smart_tests_cli-2.1.0/smart_tests/__main__.py +60 -0
  12. smart_tests_cli-2.1.0/smart_tests/app.py +67 -0
  13. smart_tests_cli-2.1.0/smart_tests/args4p/README.md +102 -0
  14. smart_tests_cli-2.1.0/smart_tests/args4p/__init__.py +13 -0
  15. smart_tests_cli-2.1.0/smart_tests/args4p/argument.py +45 -0
  16. smart_tests_cli-2.1.0/smart_tests/args4p/command.py +682 -0
  17. smart_tests_cli-2.1.0/smart_tests/args4p/converters/__init__.py +75 -0
  18. smart_tests_cli-2.1.0/smart_tests/args4p/decorators.py +98 -0
  19. smart_tests_cli-2.1.0/smart_tests/args4p/exceptions.py +12 -0
  20. smart_tests_cli-2.1.0/smart_tests/args4p/option.py +85 -0
  21. smart_tests_cli-2.1.0/smart_tests/args4p/parameter.py +84 -0
  22. smart_tests_cli-2.1.0/smart_tests/args4p/typer/__init__.py +42 -0
  23. smart_tests_cli-2.1.0/smart_tests/commands/compare/__init__.py +11 -0
  24. smart_tests_cli-2.1.0/smart_tests/commands/compare/subsets.py +58 -0
  25. smart_tests_cli-2.1.0/smart_tests/commands/detect_flakes.py +100 -0
  26. smart_tests_cli-2.1.0/smart_tests/commands/inspect/__init__.py +13 -0
  27. smart_tests_cli-2.1.0/smart_tests/commands/inspect/model.py +52 -0
  28. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/inspect/subset.py +43 -46
  29. smart_tests_cli-2.1.0/smart_tests/commands/record/__init__.py +19 -0
  30. smart_tests_cli-2.1.0/smart_tests/commands/record/attachment.py +40 -0
  31. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/build.py +63 -49
  32. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/case_event.py +8 -7
  33. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/commit.py +37 -27
  34. smart_tests_cli-2.1.0/smart_tests/commands/record/session.py +124 -0
  35. smart_tests_cli-2.1.0/smart_tests/commands/record/tests.py +494 -0
  36. smart_tests_cli-2.1.0/smart_tests/commands/stats/__init__.py +11 -0
  37. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/stats/test_sessions.py +11 -10
  38. smart_tests_cli-2.1.0/smart_tests/commands/subset.py +570 -0
  39. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/test_path_writer.py +13 -28
  40. smart_tests_cli-2.1.0/smart_tests/commands/verify.py +153 -0
  41. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/jar/exe_deploy.jar +0 -0
  42. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/adb.py +2 -1
  43. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/ant.py +6 -3
  44. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/bazel.py +50 -14
  45. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/behave.py +8 -5
  46. smart_tests_cli-2.1.0/smart_tests/test_runners/codeceptjs.py +33 -0
  47. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/ctest.py +11 -6
  48. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cts.py +9 -5
  49. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cucumber.py +10 -7
  50. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cypress.py +8 -5
  51. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/dotnet.py +12 -8
  52. smart_tests_cli-2.1.0/smart_tests/test_runners/file.py +20 -0
  53. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/flutter.py +23 -21
  54. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/go_test.py +9 -4
  55. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/googletest.py +2 -1
  56. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/gradle.py +15 -8
  57. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/jest.py +8 -4
  58. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/maven.py +16 -9
  59. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/minitest.py +5 -2
  60. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/nunit.py +9 -5
  61. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/playwright.py +14 -8
  62. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/prove.py +9 -4
  63. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/pytest.py +78 -30
  64. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/raw.py +24 -10
  65. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/robot.py +10 -4
  66. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/rspec.py +1 -0
  67. smart_tests_cli-2.1.0/smart_tests/test_runners/smart_tests.py +235 -0
  68. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/vitest.py +12 -5
  69. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/xctest.py +14 -7
  70. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/authentication.py +8 -6
  71. smart_tests_cli-2.1.0/smart_tests/utils/commands.py +14 -0
  72. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/commit_ingester.py +2 -2
  73. smart_tests_cli-2.1.0/smart_tests/utils/edit_distance.py +11 -0
  74. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/exceptions.py +12 -0
  75. smart_tests_cli-2.1.0/smart_tests/utils/fail_fast_mode.py +100 -0
  76. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/http_client.py +3 -35
  77. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/java.py +5 -2
  78. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/link.py +82 -1
  79. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/logger.py +1 -1
  80. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/sax.py +2 -2
  81. smart_tests_cli-2.1.0/smart_tests/utils/session.py +92 -0
  82. smart_tests_cli-2.0.0rc2/smart_tests/utils/launchable_client.py → smart_tests_cli-2.1.0/smart_tests/utils/smart_tests_client.py +42 -13
  83. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/tracking.py +4 -11
  84. smart_tests_cli-2.1.0/smart_tests/utils/typer_types.py +241 -0
  85. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/version.py +1 -1
  86. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/PKG-INFO +9 -9
  87. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/SOURCES.txt +57 -7
  88. smart_tests_cli-2.1.0/smart_tests_cli.egg-info/requires.txt +7 -0
  89. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +2 -1
  90. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +59 -0
  91. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +37 -0
  92. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +271 -119
  93. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +20 -9
  94. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +36 -0
  95. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +14 -0
  96. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/GitFile.java +81 -0
  97. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +7 -0
  98. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +1 -4
  99. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/ProgressReportingConsumer.java +74 -0
  100. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +18 -0
  101. smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +26 -0
  102. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/maven_install.json +112 -5
  103. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +3 -1
  104. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +6 -2
  105. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +55 -35
  106. smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +97 -0
  107. smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +20 -0
  108. smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/ProgressReportingConsumerTest.java +45 -0
  109. smart_tests_cli-2.1.0/tests/args4p/converters/test_converters.py +204 -0
  110. smart_tests_cli-2.1.0/tests/args4p/test_badcode.py +269 -0
  111. smart_tests_cli-2.1.0/tests/args4p/test_badinput.py +280 -0
  112. smart_tests_cli-2.1.0/tests/args4p/test_command.py +334 -0
  113. smart_tests_cli-2.1.0/tests/args4p/test_decorators.py +295 -0
  114. smart_tests_cli-2.1.0/tests/args4p/test_help.py +66 -0
  115. smart_tests_cli-2.1.0/tests/args4p/test_parameter.py +22 -0
  116. smart_tests_cli-2.1.0/tests/args4p/test_typer.py +26 -0
  117. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/cli_test_case.py +27 -14
  118. smart_tests_cli-2.1.0/tests/commands/compare/test_subsets.py +155 -0
  119. smart_tests_cli-2.1.0/tests/commands/inspect/test_model.py +41 -0
  120. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_attachment.py +1 -13
  121. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_build.py +201 -8
  122. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_commit.py +1 -1
  123. smart_tests_cli-2.1.0/tests/commands/record/test_session.py +208 -0
  124. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_tests.py +26 -55
  125. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_api_error.py +51 -94
  126. smart_tests_cli-2.1.0/tests/commands/test_detect_flakes.py +101 -0
  127. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_subset.py +72 -183
  128. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_verify.py +9 -1
  129. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/adb/subset_result.json +1 -0
  130. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/subset_result.json +1 -0
  131. smart_tests_cli-2.1.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +1 -0
  132. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +4 -2
  133. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_result.json +3 -3
  134. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_with_build_event_json_result.json +3 -3
  135. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +3 -3
  136. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/subset_result.json +1 -0
  137. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/subset_result.json +1 -0
  138. smart_tests_cli-2.1.0/tests/data/codeceptjs/codeceptjs-result.xml +18 -0
  139. smart_tests_cli-2.1.0/tests/data/codeceptjs/record_test_result.json +53 -0
  140. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/subset_result.json +1 -0
  141. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/subset_result.json +1 -0
  142. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/subset_result.json +1 -0
  143. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/subset_result.json +1 -0
  144. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/subset_result.json +1 -0
  145. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/subset_result.json +1 -0
  146. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_by_absolute_time_result.json +1 -0
  147. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_by_confidence_result.json +1 -0
  148. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_from_file_result.json +1 -0
  149. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_result.json +1 -0
  150. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_scan_test_compile_lst_result.json +1 -0
  151. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/subset_result.json +1 -0
  152. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/subset_result.json +1 -0
  153. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/subset_result.json +1 -0
  154. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/subset_result.json +1 -0
  155. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/plugins/foo.py +5 -3
  156. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_plugin.py +3 -4
  157. smart_tests_cli-2.1.0/tests/test_runners/__init__.py +0 -0
  158. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_adb.py +1 -15
  159. smart_tests_cli-2.1.0/tests/test_runners/test_ant.py +24 -0
  160. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_bazel.py +6 -68
  161. smart_tests_cli-2.1.0/tests/test_runners/test_behave.py +30 -0
  162. smart_tests_cli-2.1.0/tests/test_runners/test_codeceptjs.py +218 -0
  163. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_ctest.py +4 -37
  164. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_cts.py +3 -29
  165. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_cucumber.py +3 -29
  166. smart_tests_cli-2.1.0/tests/test_runners/test_cypress.py +45 -0
  167. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_dotnet.py +6 -44
  168. smart_tests_cli-2.1.0/tests/test_runners/test_go_test.py +40 -0
  169. smart_tests_cli-2.1.0/tests/test_runners/test_googletest.py +52 -0
  170. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_gradle.py +9 -73
  171. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_jest.py +6 -41
  172. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_maven.py +7 -78
  173. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_minitest.py +8 -64
  174. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_nunit.py +4 -50
  175. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_playwright.py +4 -39
  176. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_prove.py +1 -13
  177. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_pytest.py +66 -40
  178. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_raw.py +7 -51
  179. smart_tests_cli-2.1.0/tests/test_runners/test_robot.py +31 -0
  180. smart_tests_cli-2.1.0/tests/test_runners/test_rspec.py +17 -0
  181. smart_tests_cli-2.1.0/tests/test_runners/test_vitest.py +15 -0
  182. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_xctest.py +2 -13
  183. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_testpath.py +0 -4
  184. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_version.py +3 -3
  185. smart_tests_cli-2.1.0/tests/utils/__init__.py +0 -0
  186. smart_tests_cli-2.1.0/tests/utils/test_edit_distance.py +15 -0
  187. smart_tests_cli-2.1.0/tests/utils/test_fail_fast_mode.py +40 -0
  188. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_gzipgen.py +0 -1
  189. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_http_client.py +4 -19
  190. smart_tests_cli-2.1.0/tests/utils/test_link.py +98 -0
  191. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_logger.py +2 -2
  192. smart_tests_cli-2.1.0/tests/utils/test_session.py +48 -0
  193. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_typer.py +2 -2
  194. smart_tests_cli-2.1.0/tests/utils/test_typer_types.py +251 -0
  195. smart_tests_cli-2.1.0/tools/README.md +70 -0
  196. smart_tests_cli-2.1.0/tools/generate_reference.py +80 -0
  197. smart_tests_cli-2.1.0/uv.lock +568 -0
  198. smart_tests_cli-2.0.0rc2/.bazelversion +0 -1
  199. smart_tests_cli-2.0.0rc2/.github/workflows/test.yml +0 -95
  200. smart_tests_cli-2.0.0rc2/Dockerfile +0 -26
  201. smart_tests_cli-2.0.0rc2/smart_tests/__main__.py +0 -171
  202. smart_tests_cli-2.0.0rc2/smart_tests/app.py +0 -11
  203. smart_tests_cli-2.0.0rc2/smart_tests/commands/helper.py +0 -79
  204. smart_tests_cli-2.0.0rc2/smart_tests/commands/inspect/__init__.py +0 -7
  205. smart_tests_cli-2.0.0rc2/smart_tests/commands/record/__init__.py +0 -12
  206. smart_tests_cli-2.0.0rc2/smart_tests/commands/record/attachment.py +0 -43
  207. smart_tests_cli-2.0.0rc2/smart_tests/commands/record/session.py +0 -226
  208. smart_tests_cli-2.0.0rc2/smart_tests/commands/record/tests.py +0 -622
  209. smart_tests_cli-2.0.0rc2/smart_tests/commands/stats/__init__.py +0 -7
  210. smart_tests_cli-2.0.0rc2/smart_tests/commands/subset.py +0 -588
  211. smart_tests_cli-2.0.0rc2/smart_tests/commands/verify.py +0 -152
  212. smart_tests_cli-2.0.0rc2/smart_tests/test_runners/file.py +0 -57
  213. smart_tests_cli-2.0.0rc2/smart_tests/test_runners/smart_tests.py +0 -154
  214. smart_tests_cli-2.0.0rc2/smart_tests/utils/dynamic_commands.py +0 -296
  215. smart_tests_cli-2.0.0rc2/smart_tests/utils/test_runner_registry.py +0 -117
  216. smart_tests_cli-2.0.0rc2/smart_tests/utils/typer_types.py +0 -219
  217. smart_tests_cli-2.0.0rc2/smart_tests_cli.egg-info/requires.txt +0 -7
  218. smart_tests_cli-2.0.0rc2/tests/commands/record/test_session.py +0 -271
  219. smart_tests_cli-2.0.0rc2/tests/commands/test_helper.py +0 -63
  220. smart_tests_cli-2.0.0rc2/tests/test_runners/test_ant.py +0 -47
  221. smart_tests_cli-2.0.0rc2/tests/test_runners/test_behave.py +0 -56
  222. smart_tests_cli-2.0.0rc2/tests/test_runners/test_cypress.py +0 -81
  223. smart_tests_cli-2.0.0rc2/tests/test_runners/test_go_test.py +0 -76
  224. smart_tests_cli-2.0.0rc2/tests/test_runners/test_googletest.py +0 -100
  225. smart_tests_cli-2.0.0rc2/tests/test_runners/test_robot.py +0 -67
  226. smart_tests_cli-2.0.0rc2/tests/test_runners/test_rspec.py +0 -29
  227. smart_tests_cli-2.0.0rc2/tests/test_runners/test_vitest.py +0 -28
  228. smart_tests_cli-2.0.0rc2/tests/utils/test_link.py +0 -46
  229. smart_tests_cli-2.0.0rc2/uv.lock +0 -573
  230. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.bazelrc +0 -0
  231. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/release.yml +0 -0
  232. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/bazel-test.yml +0 -0
  233. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/update_maven_install_json.yml +0 -0
  234. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.gitignore +0 -0
  235. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.pre-commit-config.yaml +0 -0
  236. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.python-version +0 -0
  237. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.tagpr +0 -0
  238. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/CONTRIBUTING.md +0 -0
  239. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/LICENSE.txt +0 -0
  240. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/build-java.sh +0 -0
  241. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/renovate.json +0 -0
  242. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/setup.cfg +0 -0
  243. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/setup.py +0 -0
  244. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/__init__.py +0 -0
  245. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/__init__.py +0 -0
  246. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/plugins/__init__.py +0 -0
  247. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/__init__.py +0 -0
  248. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/testpath.py +0 -0
  249. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/__init__.py +0 -0
  250. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/ci_provider.py +0 -0
  251. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/common_tz.py +0 -0
  252. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/env_keys.py +0 -0
  253. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/file_name_pattern.py +0 -0
  254. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/git_log_parser.py +0 -0
  255. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/glob.py +0 -0
  256. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/gzipgen.py +0 -0
  257. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/no_build.py +0 -0
  258. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/subprocess.py +0 -0
  259. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
  260. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/entry_points.txt +0 -0
  261. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/top_level.txt +0 -0
  262. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/BUILD +0 -0
  263. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  264. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  265. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  266. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
  267. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  268. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  269. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  270. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  271. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +0 -0
  272. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  273. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  274. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/test-runner/__main__.py +0 -0
  275. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/__init__.py +0 -0
  276. {smart_tests_cli-2.0.0rc2/tests/commands → smart_tests_cli-2.1.0/tests/args4p}/__init__.py +0 -0
  277. {smart_tests_cli-2.0.0rc2/tests/commands/inspect → smart_tests_cli-2.1.0/tests/args4p/converters}/__init__.py +0 -0
  278. {smart_tests_cli-2.0.0rc2/tests/commands/record → smart_tests_cli-2.1.0/tests/commands}/__init__.py +0 -0
  279. {smart_tests_cli-2.0.0rc2/tests/data/pytest/tests/fooo → smart_tests_cli-2.1.0/tests/commands/compare}/__init__.py +0 -0
  280. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/inspect/test_subset.py +0 -0
  281. {smart_tests_cli-2.0.0rc2/tests/test_runners → smart_tests_cli-2.1.0/tests/commands/record}/__init__.py +0 -0
  282. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_case_event.py +0 -0
  283. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
  284. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
  285. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  286. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/record_test_result.json +0 -0
  287. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
  288. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
  289. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/library/Cache.java +0 -0
  290. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
  291. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  292. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  293. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  294. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  295. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  296. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  297. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  298. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  299. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  300. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  301. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  302. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  303. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  304. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  305. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  306. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  307. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  308. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/build_event.json +0 -0
  309. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/build_event_rest.json +0 -0
  310. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/record_test_result.json +0 -0
  311. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/reports/report.xml +0 -0
  312. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/broken_xml/broken.xml +0 -0
  313. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/broken_xml/normal.xml +0 -0
  314. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  315. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/ctest_list.json +0 -0
  316. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/record_test_result.json +0 -0
  317. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/record_test_result.json +0 -0
  318. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/test_result.xml +0 -0
  319. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
  320. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  321. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
  322. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  323. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/record_test_json_result.json +0 -0
  324. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/record_test_result.json +0 -0
  325. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  326. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  327. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  328. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/dummy.xml +0 -0
  329. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/result.json +0 -0
  330. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/empty.json +0 -0
  331. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/empty.xml +0 -0
  332. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/record_test_result.json +0 -0
  333. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/test-result.xml +0 -0
  334. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/dotnet/record_test_result.json +0 -0
  335. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/dotnet/test-result.xml +0 -0
  336. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/flutter/record_test_result.json +0 -0
  337. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/flutter/report.json +0 -0
  338. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/git_log_ingest/sample.out +0 -0
  339. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/record_test_result.json +0 -0
  340. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  341. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  342. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/fail/output.xml +0 -0
  343. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/fail/record_test_result.json +0 -0
  344. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/output_a.xml +0 -0
  345. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/output_b.xml +0 -0
  346. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/record_test_result.json +0 -0
  347. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
  348. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
  349. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
  350. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/recursion/expected.json +0 -0
  351. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  352. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/junit.xml +0 -0
  353. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/record_test_result.json +0 -0
  354. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/createdFile_1.lst +0 -0
  355. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/createdFile_2.lst +0 -0
  356. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
  357. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
  358. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/list.lst +0 -0
  359. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/record_test_result.json +0 -0
  360. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-1.xml +0 -0
  361. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-2.xml +0 -0
  362. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-nested.xml +0 -0
  363. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/dummy.xml +0 -0
  364. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  365. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  366. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  367. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  368. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
  369. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result.json +0 -0
  370. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  371. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  372. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/subset_result.json +0 -0
  373. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/test/example_test.rb +0 -0
  374. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/list.xml +0 -0
  375. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  376. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  377. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/output-linux.xml +0 -0
  378. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/output-windows.xml +0 -0
  379. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/record_test_result-linux.json +0 -0
  380. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/record_test_result-windows.json +0 -0
  381. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/.gitignore +0 -0
  382. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/Program.cs +0 -0
  383. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/README.md +0 -0
  384. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/Test.cs +0 -0
  385. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/calc.csproj +0 -0
  386. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/record_test_result.json +0 -0
  387. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
  388. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/report.json +0 -0
  389. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/report.xml +0 -0
  390. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/prove/record_test_result.json +0 -0
  391. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/prove/report.xml +0 -0
  392. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/pytest.ini +0 -0
  393. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/record_test_result.json +0 -0
  394. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/record_test_result_json.json +0 -0
  395. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/report.json +0 -0
  396. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/report.xml +0 -0
  397. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/conftest.py +0 -0
  398. {smart_tests_cli-2.0.0rc2/tests/utils → smart_tests_cli-2.1.0/tests/data/pytest/tests/fooo}/__init__.py +0 -0
  399. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  400. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  401. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
  402. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
  403. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
  404. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/dryrun.xml +0 -0
  405. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/output.xml +0 -0
  406. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  407. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/record_test_result.json +0 -0
  408. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/single-output.xml +0 -0
  409. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/rspec/record_test_result.json +0 -0
  410. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/rspec/rspec.xml +0 -0
  411. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/vitest/record_test_result.json +0 -0
  412. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/vitest/report.xml +0 -0
  413. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/junit.xml +0 -0
  414. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/record_test_result.json +0 -0
  415. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/helper.py +0 -0
  416. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_cli_test_case.py +0 -0
  417. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_authentication.py +0 -0
  418. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_file_name_pattern.py +0 -0
  419. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_git_log_parser.py +0 -0
  420. {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_glob.py +0 -0
@@ -0,0 +1 @@
1
+ 7.6.1
@@ -8,4 +8,4 @@ charset=utf-8
8
8
  indent_style=space
9
9
 
10
10
  [*.java]
11
- indent_size = 4
11
+ indent_size = 2
@@ -5,7 +5,6 @@ on:
5
5
  branches: [main, smart-tests] # smart-tests branch temporarily added for Smart Tests CLI development
6
6
  workflow_dispatch:
7
7
 
8
-
9
8
  env:
10
9
  SMART_TESTS_DEBUG: 1
11
10
  SMART_TESTS_REPORT_ERROR: 1
@@ -26,7 +25,7 @@ jobs:
26
25
  uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
27
26
  with:
28
27
  java-version: 8
29
- distribution: 'temurin'
28
+ distribution: "temurin"
30
29
  - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5
31
30
  with:
32
31
  go-version: 1.24
@@ -46,17 +45,17 @@ jobs:
46
45
  env:
47
46
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
48
47
  - name: "bazel: Record build"
49
- run: 'smart-tests record build --build "$GITHUB_RUN_ID" --branch "$GITHUB_REF_NAME" --source main=../.. --source cli=../../..'
48
+ run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=../.. --source cli=../../..'
50
49
  env:
51
50
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
52
51
  working-directory: examples/bazel/java
53
52
  - name: "bazel: Record session"
54
- run: 'smart-tests record session --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-bazel" --test-suite "bazel"'
53
+ run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "bazel" > bazel-test-session.txt'
55
54
  env:
56
55
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
57
56
  working-directory: examples/bazel/java
58
57
  - name: "bazel: Subset"
59
- run: bazelisk query 'tests(//...)' | smart-tests subset bazel --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-bazel" --target 30% > subset.txt
58
+ run: bazelisk query 'tests(//...)' | smart-tests subset bazel --session $(cat bazel-test-session.txt) --target 30% > subset.txt
60
59
  env:
61
60
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
62
61
  working-directory: examples/bazel/java
@@ -64,7 +63,7 @@ jobs:
64
63
  run: bazelisk test $(cat subset.txt)
65
64
  working-directory: examples/bazel/java
66
65
  - name: "bazel: Record test results"
67
- run: smart-tests record test bazel --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-bazel" .
66
+ run: smart-tests record tests bazel --session $(cat bazel-test-session.txt) .
68
67
  if: always()
69
68
  env:
70
69
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
@@ -79,17 +78,17 @@ jobs:
79
78
  env:
80
79
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
81
80
  - name: "go: Record build"
82
- run: 'smart-tests record build --build "$GITHUB_RUN_ID" --branch "$GITHUB_REF_NAME" --source main=.. --source cli=../..'
81
+ run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
83
82
  env:
84
83
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
85
84
  working-directory: examples/go
86
85
  - name: "go: Record session"
87
- run: 'smart-tests record session --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-go" --test-suite "go-test"'
86
+ run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "go-test" > go-test-session.txt'
88
87
  env:
89
88
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
90
89
  working-directory: examples/go
91
90
  - name: "go: Subset"
92
- run: go test -list="Test|Example" ./... | smart-tests subset go-test --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-go" --confidence 80% > smart-tests-subset.txt
91
+ run: go test -list="Test|Example" ./... | smart-tests subset go-test --session $(cat go-test-session.txt) --confidence 80% > smart-tests-subset.txt
93
92
  env:
94
93
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
95
94
  working-directory: examples/go
@@ -97,7 +96,7 @@ jobs:
97
96
  run: go test -run $(cat smart-tests-subset.txt) ./... -v 2>&1 | go-junit-report -set-exit-code > report.xml
98
97
  working-directory: examples/go
99
98
  - name: "go: Record test results"
100
- run: smart-tests record test go-test --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-go" report.xml
99
+ run: smart-tests record tests go-test --session $(cat go-test-session.txt) report.xml
101
100
  if: always()
102
101
  env:
103
102
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
@@ -108,17 +107,17 @@ jobs:
108
107
  env:
109
108
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
110
109
  - name: "gradle: Record build"
111
- run: 'smart-tests record build --build "$GITHUB_RUN_ID" --branch "$GITHUB_REF_NAME" --source main=.. --source cli=../..'
110
+ run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
112
111
  env:
113
112
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
114
113
  working-directory: examples/gradle
115
114
  - name: "gradle: Record session"
116
- run: 'smart-tests record session --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-gradle" --test-suite "gradle"'
115
+ run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "gradle" > gradle-test-session.txt'
117
116
  env:
118
117
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
119
118
  working-directory: examples/gradle
120
119
  - name: "gradle: Subset"
121
- run: smart-tests subset gradle --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-gradle" --target 80% src/test/java > smart-tests-subset.txt
120
+ run: smart-tests subset gradle --session $(cat gradle-test-session.txt) --target 80% src/test/java > smart-tests-subset.txt
122
121
  env:
123
122
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
124
123
  working-directory: examples/gradle
@@ -126,7 +125,7 @@ jobs:
126
125
  run: ./gradlew test $(cat smart-tests-subset.txt)
127
126
  working-directory: examples/gradle
128
127
  - name: "gradle: Record test results"
129
- run: smart-tests record test gradle --build "$GITHUB_RUN_ID" --session "$GITHUB_RUN_NUMBER-gradle" build/test-results/test
128
+ run: smart-tests record tests gradle --session $(cat gradle-test-session.txt) build/test-results/test
130
129
  if: always()
131
130
  env:
132
131
  SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
@@ -7,10 +7,10 @@ on:
7
7
  workflow_dispatch:
8
8
  push:
9
9
  branches:
10
- - main
10
+ - main
11
11
 
12
12
  env:
13
- IMAGE_NAME: cloudbees/smart-tests
13
+ IMAGE_NAME: cloudbees/smart-tests-cli
14
14
 
15
15
  jobs:
16
16
  tagpr:
@@ -22,11 +22,11 @@ jobs:
22
22
  outputs:
23
23
  tag: ${{ steps.run-tagpr.outputs.tag }}
24
24
  steps:
25
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26
- - id: run-tagpr
27
- uses: Songmu/tagpr@e89d37247ca73d3e5620bf074a53fbd5b39e66b0 # v1.5.1
28
- env:
29
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26
+ - id: run-tagpr
27
+ uses: Songmu/tagpr@7191605433b03e11b313dbbc0efb80185170de4b # v1.9.0
28
+ env:
29
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
30
 
31
31
  pypi:
32
32
  needs: tagpr
@@ -35,22 +35,22 @@ jobs:
35
35
  runs-on: ubuntu-22.04
36
36
 
37
37
  steps:
38
- - uses: actions/checkout@v4
39
- with:
40
- fetch-depth: 0
41
- - name: Install uv
42
- uses: astral-sh/setup-uv@v3
43
-
44
- - name: Build package
45
- run: uv build
46
- - name: Publish to PyPI
47
- run: uv publish --token ${{ secrets.SMART_TESTS_PYPI_API_TOKEN }}
48
- - name: Actions for Discord
49
- uses: Ilshidur/action-discord@0.3.2
50
- env:
51
- DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
52
- with:
53
- args: 'Smart Tests CLI ${{ needs.tagpr.outputs.tag }} is released! https://github.com/launchableinc/cli/releases/tag/${{ needs.tagpr.outputs.tag }}'
38
+ - uses: actions/checkout@v4
39
+ with:
40
+ fetch-depth: 0
41
+ - name: Install uv
42
+ uses: astral-sh/setup-uv@v3
43
+
44
+ - name: Build package
45
+ run: uv build
46
+ - name: Publish to PyPI
47
+ run: uv publish --token ${{ secrets.SMART_TESTS_PYPI_API_TOKEN }}
48
+ - name: Actions for Discord
49
+ uses: Ilshidur/action-discord@0.3.2
50
+ env:
51
+ DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
52
+ with:
53
+ args: "Smart Tests CLI ${{ needs.tagpr.outputs.tag }} is released! https://github.com/launchableinc/cli/releases/tag/${{ needs.tagpr.outputs.tag }}"
54
54
 
55
55
  docker:
56
56
  name: Push Docker image to Docker Hub
@@ -88,7 +88,7 @@ jobs:
88
88
  tags: ${{ env.IMAGE_NAME }}:${{ needs.tagpr.outputs.tag }}
89
89
 
90
90
  - name: Generate artifact attestation
91
- uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
91
+ uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
92
92
  with:
93
93
  subject-name: index.docker.io/${{ env.IMAGE_NAME }}
94
94
  subject-digest: ${{ steps.push.outputs.digest }}
@@ -0,0 +1,95 @@
1
+ # Test workflow for the Smart Tests CLI
2
+ # Runs tests, linting, type checking, and build verification
3
+
4
+ name: Test
5
+
6
+ on:
7
+ workflow_dispatch:
8
+ push:
9
+ branches: [main, smart-tests]
10
+ paths-ignore:
11
+ - "WORKSPACE"
12
+ - "src/**"
13
+ pull_request:
14
+ paths-ignore:
15
+ - "WORKSPACE"
16
+ - "src/**"
17
+ schedule:
18
+ # This job runs at 00:00 JST every day.
19
+ - cron: "0 9 * * *"
20
+
21
+ env:
22
+ SMART_TESTS_ORGANIZATION: "launchableinc"
23
+ SMART_TESTS_WORKSPACE: "cli"
24
+ GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }}
25
+ GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
26
+
27
+ permissions:
28
+ id-token: write
29
+ contents: read
30
+
31
+ jobs:
32
+ build:
33
+ runs-on: ${{ matrix.os }}
34
+ strategy:
35
+ matrix:
36
+ os: [ubuntu-22.04, windows-latest]
37
+
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+ with:
41
+ fetch-depth: 0
42
+
43
+ - name: Install uv
44
+ uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
45
+ with:
46
+ enable-cache: true
47
+ cache-dependency-glob: "uv.lock"
48
+
49
+ - name: Set up JDK 1.8
50
+ uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
51
+ with:
52
+ java-version: 8
53
+ distribution: "temurin"
54
+
55
+ - name: Install dependencies
56
+ run: uv sync --dev
57
+
58
+ - name: Test package build
59
+ run: uv build
60
+
61
+ - name: Type check
62
+ run: uv run poe type
63
+
64
+ - name: Lint with flake8
65
+ run: uv run poe lint
66
+ - name: Pull request validation
67
+ run: |
68
+ # Install Smart Tests CLI from this repo's code as a global tool
69
+ uv tool install .
70
+
71
+ set -x
72
+
73
+ smart-tests verify
74
+
75
+ # Tell Smart Tests about the build you are producing and testing
76
+ smart-tests record build --build ${GITHUB_RUN_ID}
77
+
78
+ smart-tests record session --build ${GITHUB_RUN_ID} --test-suite 'python-unittest' --flavor os=${{ matrix.os }} --flavor python=$(cat .python-version) > session.txt
79
+
80
+ # Find 25% of the relevant tests to run for this change
81
+ find tests -name test_*.py | grep -v tests/data | smart-tests subset file --session $(cat session.txt) --target 25% --rest smart-tests-remainder.txt > subset.txt
82
+
83
+ function record() {
84
+ # Record test results
85
+ SMART_TESTS_SLACK_NOTIFICATION=true smart-tests record tests file --session $(cat session.txt) test-results/*.xml
86
+ }
87
+
88
+ trap record EXIT
89
+
90
+ # Test subset of tests
91
+ uv run poe test-xml $(tr '\r\n' '\n' < subset.txt)
92
+
93
+ # Test rest of tests
94
+ uv run poe test-xml $(tr '\r\n' '\n' < smart-tests-remainder.txt)
95
+ shell: bash
@@ -0,0 +1,27 @@
1
+ FROM python:3.13-slim
2
+
3
+ RUN apt-get update && \
4
+ apt-get install -y --no-install-recommends \
5
+ git \
6
+ openjdk-21-jre-headless \
7
+ curl && \
8
+ rm -rf /var/lib/apt/lists/*
9
+
10
+ # Install uv
11
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
12
+
13
+ WORKDIR /src
14
+ COPY . .
15
+
16
+ # Install dependencies and build the package using uv
17
+ # This works with normal Git repositories (non-worktree)
18
+ RUN uv sync --frozen --no-dev
19
+
20
+ RUN apt-get update && \
21
+ apt-get install -y --no-install-recommends openjdk-21-jre-headless git && \
22
+ rm -rf /var/lib/apt/lists/*
23
+
24
+ RUN useradd -m smart-tests && chown -R smart-tests:smart-tests /src
25
+ USER smart-tests
26
+
27
+ ENTRYPOINT ["smart-tests"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-tests-cli
3
- Version: 2.0.0rc2
3
+ Version: 2.1.0
4
4
  Summary: Smart Tests CLI
5
5
  Author-email: CloudBees <support@cloudbees.com>
6
6
  License: Apache Software License v2
@@ -12,19 +12,19 @@ Classifier: Operating System :: OS Independent
12
12
  Requires-Python: >=3.13
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE.txt
15
- Requires-Dist: typer>=0.9.0
16
- Requires-Dist: requests>=2.25
17
- Requires-Dist: urllib3>=1.26
15
+ Requires-Dist: requests>=2.32.5
16
+ Requires-Dist: urllib3>=2.5
18
17
  Requires-Dist: junitparser>=4.0.0
19
18
  Requires-Dist: more-itertools>=7.1.0
20
- Requires-Dist: python-dateutil
21
- Requires-Dist: tabulate
19
+ Requires-Dist: python-dateutil>=2.9
20
+ Requires-Dist: tabulate>=0.9
21
+ Requires-Dist: click<8.2,>=8.1
22
22
  Dynamic: license-file
23
23
 
24
24
  # Usage
25
25
 
26
- See https://www.launchableinc.com/docs/resources/cli-reference/ and
27
- https://www.launchableinc.com/docs/getting-started/.
26
+ See https://help.launchableinc.com/resources/cli-reference/ and
27
+ https://help.launchableinc.com/sending-data-to-launchable/using-the-launchable-cli/getting-started/.
28
28
 
29
29
  # Development
30
30
 
@@ -105,7 +105,7 @@ uv run poe install
105
105
  # Add runtime dependency
106
106
  uv add some-package
107
107
 
108
- # Add development dependency
108
+ # Add development dependency
109
109
  uv add --dev some-dev-package
110
110
  ```
111
111
 
@@ -1,7 +1,7 @@
1
1
  # Usage
2
2
 
3
- See https://www.launchableinc.com/docs/resources/cli-reference/ and
4
- https://www.launchableinc.com/docs/getting-started/.
3
+ See https://help.launchableinc.com/resources/cli-reference/ and
4
+ https://help.launchableinc.com/sending-data-to-launchable/using-the-launchable-cli/getting-started/.
5
5
 
6
6
  # Development
7
7
 
@@ -82,7 +82,7 @@ uv run poe install
82
82
  # Add runtime dependency
83
83
  uv add some-package
84
84
 
85
- # Add development dependency
85
+ # Add development dependency
86
86
  uv add --dev some-dev-package
87
87
  ```
88
88
 
@@ -9,9 +9,11 @@ http_archive(
9
9
  )
10
10
 
11
11
  load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
12
+
12
13
  rules_jvm_external_deps()
13
14
 
14
15
  load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
16
+
15
17
  rules_jvm_external_setup()
16
18
 
17
19
  load("@rules_jvm_external//:defs.bzl", "maven_install")
@@ -25,6 +27,7 @@ maven_install(
25
27
  "com.fasterxml.jackson.core:jackson-core:2.18.2",
26
28
  "com.fasterxml.jackson.core:jackson-databind:2.18.2",
27
29
  "com.google.guava:guava:33.3.1-jre",
30
+ "org.apache.commons:commons-compress:1.27.1",
28
31
  "org.apache.httpcomponents:httpclient:4.5.14",
29
32
  # This is the last release that produce Java 8 class files.
30
33
  "org.eclipse.jgit:org.eclipse.jgit:5.13.3.202401111512-r",
@@ -45,10 +48,10 @@ maven_install(
45
48
  version = "1.4.4",
46
49
  ),
47
50
  ],
51
+ fetch_sources = True,
48
52
  maven_install_json = "//src:maven_install.json",
49
53
  repositories = ["https://repo1.maven.org/maven2"],
50
54
  version_conflict_policy = "pinned",
51
- fetch_sources = True,
52
55
  )
53
56
 
54
57
  load("@maven//:defs.bzl", "pinned_maven_install")
@@ -1,11 +1,9 @@
1
1
  [project]
2
2
  name = "smart-tests-cli"
3
- authors = [
4
- {name = "CloudBees", email = "support@cloudbees.com"}
5
- ]
3
+ authors = [{ name = "CloudBees", email = "support@cloudbees.com" }]
6
4
  description = "Smart Tests CLI"
7
5
  readme = "README.md"
8
- license = {text = "Apache Software License v2"}
6
+ license = { text = "Apache Software License v2" }
9
7
  requires-python = ">=3.13"
10
8
  classifiers = [
11
9
  "Programming Language :: Python :: 3",
@@ -13,13 +11,13 @@ classifiers = [
13
11
  "Operating System :: OS Independent",
14
12
  ]
15
13
  dependencies = [
16
- "typer>=0.9.0",
17
- "requests>=2.25",
18
- "urllib3>=1.26",
14
+ "requests>=2.32.5",
15
+ "urllib3>=2.5",
19
16
  "junitparser>=4.0.0",
20
17
  "more-itertools>=7.1.0",
21
- "python-dateutil",
22
- "tabulate",
18
+ "python-dateutil>=2.9",
19
+ "tabulate>=0.9",
20
+ "click>=8.1,<8.2",
23
21
  ]
24
22
  dynamic = ["version"]
25
23
 
@@ -37,7 +35,7 @@ dev-dependencies = [
37
35
  "mypy",
38
36
  "pre-commit",
39
37
  "responses",
40
- "types-pkg_resources",
38
+ "types-setuptools",
41
39
  "types-python-dateutil",
42
40
  "types-requests",
43
41
  "types-tabulate",
@@ -0,0 +1,60 @@
1
+ import importlib
2
+ import importlib.util
3
+ import sys
4
+ from glob import glob
5
+ from os.path import basename, dirname, join
6
+
7
+ from smart_tests.app import Application
8
+ from smart_tests.args4p.command import Group
9
+ from smart_tests.commands.compare import compare
10
+ from smart_tests.commands.detect_flakes import detect_flakes
11
+ from smart_tests.commands.inspect import inspect
12
+ from smart_tests.commands.record import record
13
+ from smart_tests.commands.stats import stats
14
+ from smart_tests.commands.subset import subset
15
+ from smart_tests.commands.verify import verify
16
+
17
+ cli = Group(name="cli", callback=Application)
18
+ cli.add_command(record)
19
+ cli.add_command(subset)
20
+ # TODO: main.add_command(split_subset)
21
+ cli.add_command(verify)
22
+ cli.add_command(inspect)
23
+ cli.add_command(stats)
24
+ cli.add_command(compare)
25
+ cli.add_command(detect_flakes)
26
+
27
+
28
+ def _load_test_runners():
29
+ # load all test runners
30
+ for f in glob(join(dirname(__file__), 'test_runners', "*.py")):
31
+ f = basename(f)[:-3]
32
+ if f == '__init__':
33
+ continue
34
+ importlib.import_module(f'smart_tests.test_runners.{f}')
35
+
36
+ # load all plugins. Here we do a bit of command line parsing ourselves,
37
+ # because the command line could look something like `smart-tests record tests myprofile --plugins ...
38
+ plugin_dir = None
39
+ if "--plugins" in sys.argv:
40
+ idx = sys.argv.index("--plugins")
41
+ if idx + 1 < len(sys.argv):
42
+ plugin_dir = sys.argv[idx + 1]
43
+
44
+ if plugin_dir:
45
+ for f in glob(join(plugin_dir, '*.py')):
46
+ spec = importlib.util.spec_from_file_location(
47
+ f"smart_tests.plugins.{basename(f)[:-3]}", f)
48
+ plugin = importlib.util.module_from_spec(spec)
49
+ spec.loader.exec_module(plugin)
50
+
51
+
52
+ _load_test_runners()
53
+
54
+
55
+ def main():
56
+ cli.main()
57
+
58
+
59
+ if __name__ == '__main__':
60
+ main()
@@ -0,0 +1,67 @@
1
+ # Object representing the most global state possible, which represents a single invocation of CLI
2
+ # Currently it's used to keep global configurations.
3
+ #
4
+ # From command implementations, this is available via dependency injection
5
+
6
+ import logging
7
+ import os
8
+ from typing import Annotated
9
+
10
+ import click
11
+
12
+ import smart_tests.args4p.typer as typer
13
+ from smart_tests.utils import logger
14
+ from smart_tests.utils.env_keys import SKIP_CERT_VERIFICATION
15
+ from smart_tests.version import __version__
16
+
17
+
18
+ class Application:
19
+ # Group commands that take the CLI profile as a sub-command shall set this parameter
20
+ test_runner: str | None = None
21
+
22
+ # this maps to the main entry point of the CLI command
23
+ def __init__(
24
+ self,
25
+ log_level: Annotated[str, typer.Option(
26
+ help="Set logger's log level (CRITICAL, ERROR, WARNING, AUDIT, INFO, DEBUG)."
27
+ )] = logger.LOG_LEVEL_DEFAULT_STR,
28
+ plugin_dir: Annotated[str | None, typer.Option(
29
+ "--plugins",
30
+ help="Directory to load plugins from"
31
+ )] = None,
32
+ dry_run: Annotated[bool, typer.Option(
33
+ help="Dry-run mode. No data is sent to the server. However, sometimes "
34
+ "GET requests without payload data or side effects could be sent."
35
+ "note: Since the dry run log is output together with the AUDIT log, "
36
+ "even if the log-level is set to warning or higher, the log level will "
37
+ "be forced to be set to AUDIT."
38
+ )] = False,
39
+ skip_cert_verification: Annotated[bool, typer.Option(
40
+ help="Skip the SSL certificate check. This lets you bypass system setup issues "
41
+ "like CERTIFICATE_VERIFY_FAILED, at the expense of vulnerability against "
42
+ "a possible man-in-the-middle attack. Use it as an escape hatch, but with caution."
43
+ )] = False,
44
+ version: Annotated[bool, typer.Option(
45
+ "--version", help="Show version and exit"
46
+ )] = False,
47
+ ):
48
+ if version:
49
+ click.echo(f"smart-tests-cli {__version__}")
50
+ raise typer.Exit(0)
51
+
52
+ level = logger.get_log_level(log_level)
53
+ # In the case of dry-run, it is forced to set the level below the AUDIT.
54
+ # This is because the dry-run log will be output along with the audit log.
55
+ if dry_run and level > logger.LOG_LEVEL_AUDIT:
56
+ level = logger.LOG_LEVEL_AUDIT
57
+ logging.basicConfig(level=level)
58
+
59
+ # plugin_dir is processed earlier. If we do it here, it's too late
60
+
61
+ # Dry run mode. This command is used by customers to inspect data we'd send to our server,
62
+ # but without actually doing so.
63
+ self.dry_run = dry_run
64
+
65
+ if not skip_cert_verification:
66
+ skip_cert_verification = (os.environ.get(SKIP_CERT_VERIFICATION) is not None)
67
+ self.skip_cert_verification = skip_cert_verification