launchable 1.96.0__tar.gz → 1.97.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 (328) hide show
  1. {launchable-1.96.0 → launchable-1.97.0}/.github/workflows/e2e.yml +3 -0
  2. {launchable-1.96.0 → launchable-1.97.0}/PKG-INFO +2 -2
  3. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/helper.py +7 -0
  4. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/tests.py +19 -1
  5. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/subset.py +51 -2
  6. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/tracking.py +1 -0
  7. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/PKG-INFO +2 -2
  8. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/test_api_error.py +1 -1
  9. {launchable-1.96.0 → launchable-1.97.0}/.bazelrc +0 -0
  10. {launchable-1.96.0 → launchable-1.97.0}/.bazelversion +0 -0
  11. {launchable-1.96.0 → launchable-1.97.0}/.editorconfig +0 -0
  12. {launchable-1.96.0 → launchable-1.97.0}/.github/release.yml +0 -0
  13. {launchable-1.96.0 → launchable-1.97.0}/.github/workflows/bazel-test.yml +0 -0
  14. {launchable-1.96.0 → launchable-1.97.0}/.github/workflows/python-package.yml +0 -0
  15. {launchable-1.96.0 → launchable-1.97.0}/.github/workflows/python-publish.yml +0 -0
  16. {launchable-1.96.0 → launchable-1.97.0}/.github/workflows/update_maven_install_json.yml +0 -0
  17. {launchable-1.96.0 → launchable-1.97.0}/.gitignore +0 -0
  18. {launchable-1.96.0 → launchable-1.97.0}/.pre-commit-config.yaml +0 -0
  19. {launchable-1.96.0 → launchable-1.97.0}/.python-version +0 -0
  20. {launchable-1.96.0 → launchable-1.97.0}/.tagpr +0 -0
  21. {launchable-1.96.0 → launchable-1.97.0}/CONTRIBUTING.md +0 -0
  22. {launchable-1.96.0 → launchable-1.97.0}/Dockerfile +0 -0
  23. {launchable-1.96.0 → launchable-1.97.0}/LICENSE.txt +0 -0
  24. {launchable-1.96.0 → launchable-1.97.0}/Pipfile +0 -0
  25. {launchable-1.96.0 → launchable-1.97.0}/README.md +0 -0
  26. {launchable-1.96.0 → launchable-1.97.0}/WORKSPACE +0 -0
  27. {launchable-1.96.0 → launchable-1.97.0}/launchable/__init__.py +0 -0
  28. {launchable-1.96.0 → launchable-1.97.0}/launchable/__main__.py +0 -0
  29. {launchable-1.96.0 → launchable-1.97.0}/launchable/app.py +0 -0
  30. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/__init__.py +0 -0
  31. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/inspect/__init__.py +0 -0
  32. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/inspect/subset.py +0 -0
  33. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/inspect/tests.py +0 -0
  34. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/__init__.py +0 -0
  35. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/attachment.py +0 -0
  36. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/build.py +0 -0
  37. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/case_event.py +0 -0
  38. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/commit.py +0 -0
  39. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/record/session.py +0 -0
  40. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/split_subset.py +0 -0
  41. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/stats/__init__.py +0 -0
  42. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/stats/test_sessions.py +0 -0
  43. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/test_path_writer.py +0 -0
  44. {launchable-1.96.0 → launchable-1.97.0}/launchable/commands/verify.py +0 -0
  45. {launchable-1.96.0 → launchable-1.97.0}/launchable/jar/exe_deploy.jar +0 -0
  46. {launchable-1.96.0 → launchable-1.97.0}/launchable/plugins/__init__.py +0 -0
  47. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/__init__.py +0 -0
  48. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/adb.py +0 -0
  49. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/ant.py +0 -0
  50. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/bazel.py +0 -0
  51. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/behave.py +0 -0
  52. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/ctest.py +0 -0
  53. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/cts.py +0 -0
  54. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/cucumber.py +0 -0
  55. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/cypress.py +0 -0
  56. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/dotnet.py +0 -0
  57. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/file.py +0 -0
  58. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/flutter.py +0 -0
  59. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/go_test.py +0 -0
  60. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/googletest.py +0 -0
  61. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/gradle.py +0 -0
  62. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/jest.py +0 -0
  63. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/launchable.py +0 -0
  64. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/maven.py +0 -0
  65. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/minitest.py +0 -0
  66. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/nunit.py +0 -0
  67. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/playwright.py +0 -0
  68. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/prove.py +0 -0
  69. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/pytest.py +0 -0
  70. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/raw.py +0 -0
  71. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/robot.py +0 -0
  72. {launchable-1.96.0 → launchable-1.97.0}/launchable/test_runners/rspec.py +0 -0
  73. {launchable-1.96.0 → launchable-1.97.0}/launchable/testpath.py +0 -0
  74. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/__init__.py +0 -0
  75. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/authentication.py +0 -0
  76. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/ci_provider.py +0 -0
  77. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/click.py +0 -0
  78. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/commit_ingester.py +0 -0
  79. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/env_keys.py +0 -0
  80. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/exceptions.py +0 -0
  81. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/file_name_pattern.py +0 -0
  82. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/git_log_parser.py +0 -0
  83. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/glob.py +0 -0
  84. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/gzipgen.py +0 -0
  85. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/http_client.py +0 -0
  86. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/java.py +0 -0
  87. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/launchable_client.py +0 -0
  88. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/link.py +0 -0
  89. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/logger.py +0 -0
  90. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/no_build.py +0 -0
  91. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/sax.py +0 -0
  92. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/session.py +0 -0
  93. {launchable-1.96.0 → launchable-1.97.0}/launchable/utils/subprocess.py +0 -0
  94. {launchable-1.96.0 → launchable-1.97.0}/launchable/version.py +0 -0
  95. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/SOURCES.txt +0 -0
  96. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/dependency_links.txt +0 -0
  97. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/entry_points.txt +0 -0
  98. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/requires.txt +0 -0
  99. {launchable-1.96.0 → launchable-1.97.0}/launchable.egg-info/top_level.txt +0 -0
  100. {launchable-1.96.0 → launchable-1.97.0}/pyproject.toml +0 -0
  101. {launchable-1.96.0 → launchable-1.97.0}/renovate.json +0 -0
  102. {launchable-1.96.0 → launchable-1.97.0}/setup.cfg +0 -0
  103. {launchable-1.96.0 → launchable-1.97.0}/setup.py +0 -0
  104. {launchable-1.96.0 → launchable-1.97.0}/src/BUILD +0 -0
  105. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  106. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
  107. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
  108. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +0 -0
  109. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  110. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  111. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
  112. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  113. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
  114. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  115. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  116. {launchable-1.96.0 → launchable-1.97.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  117. {launchable-1.96.0 → launchable-1.97.0}/src/maven_install.json +0 -0
  118. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
  119. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
  120. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
  121. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +0 -0
  122. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  123. {launchable-1.96.0 → launchable-1.97.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  124. {launchable-1.96.0 → launchable-1.97.0}/test-runner/__main__.py +0 -0
  125. {launchable-1.96.0 → launchable-1.97.0}/tests/__init__.py +0 -0
  126. {launchable-1.96.0 → launchable-1.97.0}/tests/cli_test_case.py +0 -0
  127. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/__init__.py +0 -0
  128. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/inspect/__init__.py +0 -0
  129. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/inspect/test_subset.py +0 -0
  130. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/inspect/test_tests.py +0 -0
  131. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/__init__.py +0 -0
  132. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/test_attachment.py +0 -0
  133. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/test_build.py +0 -0
  134. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/test_commit.py +0 -0
  135. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/test_session.py +0 -0
  136. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/record/test_tests.py +0 -0
  137. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/test_helper.py +0 -0
  138. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/test_split_subset.py +0 -0
  139. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/test_subset.py +0 -0
  140. {launchable-1.96.0 → launchable-1.97.0}/tests/commands/test_verify.py +0 -0
  141. {launchable-1.96.0 → launchable-1.97.0}/tests/data/adb/subset_result.json +0 -0
  142. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/junitreport/TEST-com.launchable.HelloWorldTest.xml +0 -0
  143. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/junitreport/TEST-com.launchable.library.CacheTest.xml +0 -0
  144. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  145. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/record_test_result.json +0 -0
  146. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/src/com/launchable/HelloWorld.java +0 -0
  147. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/src/com/launchable/HelloWorldTest.java +0 -0
  148. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/src/com/launchable/library/Cache.java +0 -0
  149. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/src/com/launchable/library/CacheTest.java +0 -0
  150. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ant/subset_result.json +0 -0
  151. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  152. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
  153. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  154. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  155. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  156. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  157. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  158. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  159. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  160. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  161. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  162. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  163. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  164. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  165. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  166. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  167. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  168. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  169. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/build_event.json +0 -0
  170. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/build_event_rest.json +0 -0
  171. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/record_test_result.json +0 -0
  172. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
  173. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
  174. {launchable-1.96.0 → launchable-1.97.0}/tests/data/bazel/subset_result.json +0 -0
  175. {launchable-1.96.0 → launchable-1.97.0}/tests/data/behave/record_test_result.json +0 -0
  176. {launchable-1.96.0 → launchable-1.97.0}/tests/data/behave/reports/report.xml +0 -0
  177. {launchable-1.96.0 → launchable-1.97.0}/tests/data/behave/subset_result.json +0 -0
  178. {launchable-1.96.0 → launchable-1.97.0}/tests/data/broken_xml/broken.xml +0 -0
  179. {launchable-1.96.0 → launchable-1.97.0}/tests/data/broken_xml/normal.xml +0 -0
  180. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  181. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ctest/ctest_list.json +0 -0
  182. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ctest/record_test_result.json +0 -0
  183. {launchable-1.96.0 → launchable-1.97.0}/tests/data/ctest/subset_result.json +0 -0
  184. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cts/record_test_result.json +0 -0
  185. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cts/subset_result.json +0 -0
  186. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cts/test_result.xml +0 -0
  187. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
  188. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  189. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
  190. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  191. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/record_test_json_result.json +0 -0
  192. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/record_test_result.json +0 -0
  193. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  194. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  195. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  196. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/report/dummy.xml +0 -0
  197. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cucumber/report/result.json +0 -0
  198. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cypress/empty.json +0 -0
  199. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cypress/empty.xml +0 -0
  200. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cypress/record_test_result.json +0 -0
  201. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cypress/subset_result.json +0 -0
  202. {launchable-1.96.0 → launchable-1.97.0}/tests/data/cypress/test-result.xml +0 -0
  203. {launchable-1.96.0 → launchable-1.97.0}/tests/data/dotnet/record_test_result.json +0 -0
  204. {launchable-1.96.0 → launchable-1.97.0}/tests/data/dotnet/test-result.xml +0 -0
  205. {launchable-1.96.0 → launchable-1.97.0}/tests/data/flutter/record_test_result.json +0 -0
  206. {launchable-1.96.0 → launchable-1.97.0}/tests/data/flutter/report.json +0 -0
  207. {launchable-1.96.0 → launchable-1.97.0}/tests/data/git_log_ingest/sample.out +0 -0
  208. {launchable-1.96.0 → launchable-1.97.0}/tests/data/go_test/record_test_result.json +0 -0
  209. {launchable-1.96.0 → launchable-1.97.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  210. {launchable-1.96.0 → launchable-1.97.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  211. {launchable-1.96.0 → launchable-1.97.0}/tests/data/go_test/subset_result.json +0 -0
  212. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/fail/output.xml +0 -0
  213. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/fail/record_test_result.json +0 -0
  214. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/output_a.xml +0 -0
  215. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/output_b.xml +0 -0
  216. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/record_test_result.json +0 -0
  217. {launchable-1.96.0 → launchable-1.97.0}/tests/data/googletest/subset_result.json +0 -0
  218. {launchable-1.96.0 → launchable-1.97.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/App2Test.java +0 -0
  219. {launchable-1.96.0 → launchable-1.97.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/AppTest.java +0 -0
  220. {launchable-1.96.0 → launchable-1.97.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/sub/App3Test.java +0 -0
  221. {launchable-1.96.0 → launchable-1.97.0}/tests/data/gradle/recursion/expected.json +0 -0
  222. {launchable-1.96.0 → launchable-1.97.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  223. {launchable-1.96.0 → launchable-1.97.0}/tests/data/jest/junit.xml +0 -0
  224. {launchable-1.96.0 → launchable-1.97.0}/tests/data/jest/record_test_result.json +0 -0
  225. {launchable-1.96.0 → launchable-1.97.0}/tests/data/jest/subset_result.json +0 -0
  226. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/createdFile_1.lst +0 -0
  227. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/createdFile_2.lst +0 -0
  228. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/App2Test.java +0 -0
  229. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/AppTest.java +0 -0
  230. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/list.lst +0 -0
  231. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/record_test_result.json +0 -0
  232. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/reports/TEST-1.xml +0 -0
  233. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/reports/TEST-2.xml +0 -0
  234. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/reports/dummy.xml +0 -0
  235. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
  236. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/subset_by_confidence_result.json +0 -0
  237. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/subset_from_file_result.json +0 -0
  238. {launchable-1.96.0 → launchable-1.97.0}/tests/data/maven/subset_result.json +0 -0
  239. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  240. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  241. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  242. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  243. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
  244. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/record_test_result.json +0 -0
  245. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  246. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  247. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/subset_result.json +0 -0
  248. {launchable-1.96.0 → launchable-1.97.0}/tests/data/minitest/test/example_test.rb +0 -0
  249. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/list.xml +0 -0
  250. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  251. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  252. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/output-linux.xml +0 -0
  253. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/output-windows.xml +0 -0
  254. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/record_test_result-linux.json +0 -0
  255. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/record_test_result-windows.json +0 -0
  256. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/src/.gitignore +0 -0
  257. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/src/Program.cs +0 -0
  258. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/src/README.md +0 -0
  259. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/src/Test.cs +0 -0
  260. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/src/calc.csproj +0 -0
  261. {launchable-1.96.0 → launchable-1.97.0}/tests/data/nunit/subset_result.json +0 -0
  262. {launchable-1.96.0 → launchable-1.97.0}/tests/data/playwright/record_test_result.json +0 -0
  263. {launchable-1.96.0 → launchable-1.97.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
  264. {launchable-1.96.0 → launchable-1.97.0}/tests/data/playwright/report.json +0 -0
  265. {launchable-1.96.0 → launchable-1.97.0}/tests/data/playwright/report.xml +0 -0
  266. {launchable-1.96.0 → launchable-1.97.0}/tests/data/prove/record_test_result.json +0 -0
  267. {launchable-1.96.0 → launchable-1.97.0}/tests/data/prove/report.xml +0 -0
  268. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/pytest.ini +0 -0
  269. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/record_test_result.json +0 -0
  270. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/record_test_result_json.json +0 -0
  271. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/report.json +0 -0
  272. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/report.xml +0 -0
  273. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/subset_result.json +0 -0
  274. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/conftest.py +0 -0
  275. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/fooo/__init__.py +0 -0
  276. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  277. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  278. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
  279. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
  280. {launchable-1.96.0 → launchable-1.97.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
  281. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/dryrun.xml +0 -0
  282. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/output.xml +0 -0
  283. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  284. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/record_test_result.json +0 -0
  285. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/single-output.xml +0 -0
  286. {launchable-1.96.0 → launchable-1.97.0}/tests/data/robot/subset_result.json +0 -0
  287. {launchable-1.96.0 → launchable-1.97.0}/tests/data/rspec/record_test_result.json +0 -0
  288. {launchable-1.96.0 → launchable-1.97.0}/tests/data/rspec/rspec.xml +0 -0
  289. {launchable-1.96.0 → launchable-1.97.0}/tests/helper.py +0 -0
  290. {launchable-1.96.0 → launchable-1.97.0}/tests/plugins/foo.py +0 -0
  291. {launchable-1.96.0 → launchable-1.97.0}/tests/test_cli_test_case.py +0 -0
  292. {launchable-1.96.0 → launchable-1.97.0}/tests/test_plugin.py +0 -0
  293. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/__init__.py +0 -0
  294. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_adb.py +0 -0
  295. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_ant.py +0 -0
  296. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_bazel.py +0 -0
  297. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_behave.py +0 -0
  298. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_ctest.py +0 -0
  299. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_cts.py +0 -0
  300. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_cucumber.py +0 -0
  301. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_cypress.py +0 -0
  302. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_dotnet.py +0 -0
  303. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_go_test.py +0 -0
  304. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_googletest.py +0 -0
  305. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_gradle.py +0 -0
  306. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_jest.py +0 -0
  307. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_maven.py +0 -0
  308. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_minitest.py +0 -0
  309. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_nunit.py +0 -0
  310. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_playwright.py +0 -0
  311. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_prove.py +0 -0
  312. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_pytest.py +0 -0
  313. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_raw.py +0 -0
  314. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_robot.py +0 -0
  315. {launchable-1.96.0 → launchable-1.97.0}/tests/test_runners/test_rspec.py +0 -0
  316. {launchable-1.96.0 → launchable-1.97.0}/tests/test_session.py +0 -0
  317. {launchable-1.96.0 → launchable-1.97.0}/tests/test_testpath.py +0 -0
  318. {launchable-1.96.0 → launchable-1.97.0}/tests/test_version.py +0 -0
  319. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/__init__.py +0 -0
  320. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_authentication.py +0 -0
  321. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_click.py +0 -0
  322. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_file_name_pattern.py +0 -0
  323. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_git_log_parser.py +0 -0
  324. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_glob.py +0 -0
  325. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_gzipgen.py +0 -0
  326. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_http_client.py +0 -0
  327. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_link.py +0 -0
  328. {launchable-1.96.0 → launchable-1.97.0}/tests/utils/test_logger.py +0 -0
@@ -9,6 +9,9 @@ on:
9
9
  env:
10
10
  LAUNCHABLE_DEBUG: 1
11
11
  LAUNCHABLE_REPORT_ERROR: 1
12
+ # The WORKSPACE file is disabled by default in Bazel 8.
13
+ # As a workaround, we configure the old version.
14
+ USE_BAZEL_VERSION: "7.x"
12
15
 
13
16
 
14
17
  jobs:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: launchable
3
- Version: 1.96.0
3
+ Version: 1.97.0
4
4
  Summary: Launchable CLI
5
5
  Home-page: https://launchableinc.com/
6
6
  Author: Launchable, Inc.
@@ -1,3 +1,4 @@
1
+ from time import time
1
2
  from typing import Optional, Sequence, Tuple
2
3
 
3
4
  import click
@@ -137,6 +138,12 @@ def find_or_create_session(
137
138
  return read_session(saved_build_name)
138
139
 
139
140
 
141
+ def time_ns():
142
+ # time.time_ns() method is new in Python version 3.7
143
+ # As a workaround, we convert time.time() to nanoseconds.
144
+ return int(time() * 1e9)
145
+
146
+
140
147
  def _check_observation_mode_status(session: str, is_observation: bool,
141
148
  tracking_client: TrackingClient, app: Optional[Application] = None):
142
149
  if not is_observation:
@@ -22,7 +22,7 @@ from ...utils.launchable_client import LaunchableClient
22
22
  from ...utils.logger import Logger
23
23
  from ...utils.no_build import NO_BUILD_BUILD_NAME, NO_BUILD_TEST_SESSION_ID
24
24
  from ...utils.session import parse_session, read_build
25
- from ..helper import find_or_create_session
25
+ from ..helper import find_or_create_session, time_ns
26
26
  from .case_event import CaseEvent, CaseEventType
27
27
 
28
28
  GROUP_NAME_RULE = re.compile("^[a-zA-Z0-9][a-zA-Z0-9_-]*$")
@@ -535,7 +535,16 @@ def tests(
535
535
  return test_count, success_count, fail_count, duration / 60 # sec to min
536
536
 
537
537
  try:
538
+ start = time_ns()
538
539
  tc = testcases(self.reports)
540
+ end = time_ns()
541
+ tracking_client.send_event(
542
+ event_name=Tracking.Event.PERFORMANCE,
543
+ metadata={
544
+ "elapsedTime": end - start,
545
+ "measurementTarget": "testcases method(parsing report file)"
546
+ }
547
+ )
539
548
 
540
549
  if report_paths:
541
550
  # diagnostics mode to just report test paths
@@ -543,6 +552,7 @@ def tests(
543
552
  print(unparse_test_path(t['testPath']))
544
553
  return
545
554
 
555
+ start = time_ns()
546
556
  exceptions = []
547
557
  for chunk in ichunked(tc, post_chunk):
548
558
  p, es = payload(
@@ -555,6 +565,14 @@ def tests(
555
565
 
556
566
  send(p)
557
567
  exceptions.extend(es)
568
+ end = time_ns()
569
+ tracking_client.send_event(
570
+ event_name=Tracking.Event.PERFORMANCE,
571
+ metadata={
572
+ "elapsedTime": end - start,
573
+ "measurementTarget": "events API"
574
+ }
575
+ )
558
576
 
559
577
  if len(exceptions) > 0:
560
578
  raise Exception(exceptions)
@@ -3,6 +3,7 @@ import json
3
3
  import os
4
4
  import pathlib
5
5
  import sys
6
+ from multiprocessing import Process
6
7
  from os.path import join
7
8
  from typing import Any, Callable, Dict, List, Optional, Sequence, TextIO, Tuple, Union
8
9
 
@@ -131,10 +132,17 @@ from .test_path_writer import TestPathWriter
131
132
  help="outputs the exclude test list. Switch the subset and rest.",
132
133
  is_flag=True,
133
134
  )
135
+ @click.option(
136
+ "--non-blocking",
137
+ "is_non_blocking",
138
+ help="Do not wait for subset requests in observation mode.",
139
+ is_flag=True,
140
+ hidden=True,
141
+ )
134
142
  @click.option(
135
143
  "--ignore-flaky-tests-above",
136
144
  "ignore_flaky_tests_above",
137
- help='Ignore flaky tests above the value set by this option.You can confirm flaky scores in WebApp',
145
+ help='Ignore flaky tests above the value set by this option. You can confirm flaky scores in WebApp',
138
146
  type=click.FloatRange(min=0, max=1.0),
139
147
  )
140
148
  @click.option(
@@ -198,6 +206,7 @@ def subset(
198
206
  is_observation: bool,
199
207
  is_get_tests_from_previous_sessions: bool,
200
208
  is_output_exclusion_rules: bool,
209
+ is_non_blocking: bool,
201
210
  ignore_flaky_tests_above: Optional[float],
202
211
  links: Sequence[Tuple[str, str]] = (),
203
212
  is_no_build: bool = False,
@@ -291,6 +300,34 @@ def subset(
291
300
  else:
292
301
  click.echo(ignorable_error(e), err=True)
293
302
 
303
+ if is_non_blocking:
304
+ if (not is_observation) and session_id:
305
+ try:
306
+ client = LaunchableClient(
307
+ app=app,
308
+ tracking_client=tracking_client)
309
+ res = client.request("get", session_id)
310
+ is_observation_in_recorded_session = res.json().get("isObservation", False)
311
+ if not is_observation_in_recorded_session:
312
+ msg = "You have to specify --observation option to use non-blocking mode"
313
+ click.echo(
314
+ click.style(
315
+ msg,
316
+ fg="red"),
317
+ err=True,
318
+ )
319
+ tracking_client.send_error_event(
320
+ event_name=Tracking.ErrorEvent.INTERNAL_CLI_ERROR,
321
+ stack_trace=msg,
322
+ )
323
+ sys.exit(1)
324
+ except Exception as e:
325
+ tracking_client.send_error_event(
326
+ event_name=Tracking.ErrorEvent.INTERNAL_CLI_ERROR,
327
+ stack_trace=str(e),
328
+ )
329
+ click.echo(ignorable_error(e), err=True)
330
+
294
331
  file_path_normalizer = FilePathNormalizer(base_path, no_base_path_inference=no_base_path_inference)
295
332
 
296
333
  # TODO: placed here to minimize invasion in this PR to reduce the likelihood of
@@ -493,7 +530,15 @@ def subset(
493
530
  timeout = (5, 300)
494
531
  payload = self.get_payload(session_id, target, duration, test_runner)
495
532
 
496
- res = client.request("post", "subset", timeout=timeout, payload=payload, compress=True)
533
+ if is_non_blocking:
534
+ # Create a new process for requesting a subset.
535
+ process = Process(target=subset_request, args=(client, timeout, payload))
536
+ process.start()
537
+ click.echo("The subset was requested in non-blocking mode.", err=True)
538
+ self.output_handler(self.test_paths, [])
539
+ return
540
+
541
+ res = subset_request(client=client, timeout=timeout, payload=payload)
497
542
 
498
543
  # The status code 422 is returned when validation error of the test mapping file occurs.
499
544
  if res.status_code == 422:
@@ -600,3 +645,7 @@ def subset(
600
645
  err=True)
601
646
 
602
647
  context.obj = Optimize(app=context.obj)
648
+
649
+
650
+ def subset_request(client: LaunchableClient, timeout: Tuple[int, int], payload: Dict[str, Any]):
651
+ return client.request("post", "subset", timeout=timeout, payload=payload, compress=True)
@@ -13,6 +13,7 @@ class Tracking:
13
13
  # General events
14
14
  class Event(Enum):
15
15
  SHALLOW_CLONE = 'SHALLOW_CLONE' # this event is an example
16
+ PERFORMANCE = 'PERFORMANCE'
16
17
 
17
18
  # Error events
18
19
  class ErrorEvent(Enum):
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: launchable
3
- Version: 1.96.0
3
+ Version: 1.97.0
4
4
  Summary: Launchable CLI
5
5
  Home-page: https://launchableinc.com/
6
6
  Author: Launchable, Inc.
@@ -451,7 +451,7 @@ class APIErrorTest(CliTestCase):
451
451
  result = self.cli("record", "tests", "--session", self.session, "minitest", str(self.test_files_dir) + "/")
452
452
  self.assert_success(result)
453
453
  # Since Timeout error is caught inside of LaunchableClient, the tracking event is sent twice.
454
- self.assert_tracking_count(tracking=tracking, count=8)
454
+ self.assert_tracking_count(tracking=tracking, count=9)
455
455
 
456
456
  def assert_tracking_count(self, tracking, count: int):
457
457
  # Prior to 3.6, `Response` object can't be obtained.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes