launchable 1.87.2__tar.gz → 1.89.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 (327) hide show
  1. {launchable-1.87.2 → launchable-1.89.0}/PKG-INFO +1 -1
  2. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/helper.py +2 -1
  3. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/build.py +13 -6
  4. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/session.py +10 -0
  5. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/minitest.py +3 -4
  6. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/nunit.py +1 -3
  7. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/PKG-INFO +1 -1
  8. {launchable-1.87.2 → launchable-1.89.0}/tests/cli_test_case.py +30 -0
  9. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/test_build.py +19 -9
  10. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/test_session.py +46 -15
  11. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/record_test_result.json +28 -28
  12. launchable-1.89.0/tests/test_cli_test_case.py +243 -0
  13. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_minitest.py +0 -21
  14. launchable-1.87.2/tests/test_cli_test_case.py +0 -43
  15. {launchable-1.87.2 → launchable-1.89.0}/.bazelrc +0 -0
  16. {launchable-1.87.2 → launchable-1.89.0}/.bazelversion +0 -0
  17. {launchable-1.87.2 → launchable-1.89.0}/.editorconfig +0 -0
  18. {launchable-1.87.2 → launchable-1.89.0}/.github/release.yml +0 -0
  19. {launchable-1.87.2 → launchable-1.89.0}/.github/workflows/bazel-test.yml +0 -0
  20. {launchable-1.87.2 → launchable-1.89.0}/.github/workflows/e2e.yml +0 -0
  21. {launchable-1.87.2 → launchable-1.89.0}/.github/workflows/python-package.yml +0 -0
  22. {launchable-1.87.2 → launchable-1.89.0}/.github/workflows/python-publish.yml +0 -0
  23. {launchable-1.87.2 → launchable-1.89.0}/.github/workflows/update_maven_install_json.yml +0 -0
  24. {launchable-1.87.2 → launchable-1.89.0}/.gitignore +0 -0
  25. {launchable-1.87.2 → launchable-1.89.0}/.pre-commit-config.yaml +0 -0
  26. {launchable-1.87.2 → launchable-1.89.0}/.python-version +0 -0
  27. {launchable-1.87.2 → launchable-1.89.0}/.tagpr +0 -0
  28. {launchable-1.87.2 → launchable-1.89.0}/CONTRIBUTING.md +0 -0
  29. {launchable-1.87.2 → launchable-1.89.0}/Dockerfile +0 -0
  30. {launchable-1.87.2 → launchable-1.89.0}/LICENSE.txt +0 -0
  31. {launchable-1.87.2 → launchable-1.89.0}/Pipfile +0 -0
  32. {launchable-1.87.2 → launchable-1.89.0}/README.md +0 -0
  33. {launchable-1.87.2 → launchable-1.89.0}/WORKSPACE +0 -0
  34. {launchable-1.87.2 → launchable-1.89.0}/launchable/__init__.py +0 -0
  35. {launchable-1.87.2 → launchable-1.89.0}/launchable/__main__.py +0 -0
  36. {launchable-1.87.2 → launchable-1.89.0}/launchable/app.py +0 -0
  37. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/__init__.py +0 -0
  38. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/inspect/__init__.py +0 -0
  39. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/inspect/subset.py +0 -0
  40. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/inspect/tests.py +0 -0
  41. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/__init__.py +0 -0
  42. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/attachment.py +0 -0
  43. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/case_event.py +0 -0
  44. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/commit.py +0 -0
  45. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/record/tests.py +0 -0
  46. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/split_subset.py +0 -0
  47. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/stats/__init__.py +0 -0
  48. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/stats/test_sessions.py +0 -0
  49. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/subset.py +0 -0
  50. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/test_path_writer.py +0 -0
  51. {launchable-1.87.2 → launchable-1.89.0}/launchable/commands/verify.py +0 -0
  52. {launchable-1.87.2 → launchable-1.89.0}/launchable/jar/exe_deploy.jar +0 -0
  53. {launchable-1.87.2 → launchable-1.89.0}/launchable/plugins/__init__.py +0 -0
  54. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/__init__.py +0 -0
  55. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/adb.py +0 -0
  56. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/ant.py +0 -0
  57. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/bazel.py +0 -0
  58. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/behave.py +0 -0
  59. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/ctest.py +0 -0
  60. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/cts.py +0 -0
  61. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/cucumber.py +0 -0
  62. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/cypress.py +0 -0
  63. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/dotnet.py +0 -0
  64. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/file.py +0 -0
  65. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/go_test.py +0 -0
  66. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/googletest.py +0 -0
  67. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/gradle.py +0 -0
  68. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/jest.py +0 -0
  69. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/launchable.py +0 -0
  70. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/maven.py +0 -0
  71. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/playwright.py +0 -0
  72. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/prove.py +0 -0
  73. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/pytest.py +0 -0
  74. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/raw.py +0 -0
  75. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/robot.py +0 -0
  76. {launchable-1.87.2 → launchable-1.89.0}/launchable/test_runners/rspec.py +0 -0
  77. {launchable-1.87.2 → launchable-1.89.0}/launchable/testpath.py +0 -0
  78. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/__init__.py +0 -0
  79. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/authentication.py +0 -0
  80. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/ci_provider.py +0 -0
  81. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/click.py +0 -0
  82. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/commit_ingester.py +0 -0
  83. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/env_keys.py +0 -0
  84. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/exceptions.py +0 -0
  85. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/file_name_pattern.py +0 -0
  86. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/git_log_parser.py +0 -0
  87. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/glob.py +0 -0
  88. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/gzipgen.py +0 -0
  89. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/http_client.py +0 -0
  90. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/java.py +0 -0
  91. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/key_value_type.py +0 -0
  92. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/launchable_client.py +0 -0
  93. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/link.py +0 -0
  94. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/logger.py +0 -0
  95. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/no_build.py +0 -0
  96. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/sax.py +0 -0
  97. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/session.py +0 -0
  98. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/subprocess.py +0 -0
  99. {launchable-1.87.2 → launchable-1.89.0}/launchable/utils/tracking.py +0 -0
  100. {launchable-1.87.2 → launchable-1.89.0}/launchable/version.py +0 -0
  101. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/SOURCES.txt +0 -0
  102. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/dependency_links.txt +0 -0
  103. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/entry_points.txt +0 -0
  104. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/requires.txt +0 -0
  105. {launchable-1.87.2 → launchable-1.89.0}/launchable.egg-info/top_level.txt +0 -0
  106. {launchable-1.87.2 → launchable-1.89.0}/pyproject.toml +0 -0
  107. {launchable-1.87.2 → launchable-1.89.0}/renovate.json +0 -0
  108. {launchable-1.87.2 → launchable-1.89.0}/setup.cfg +0 -0
  109. {launchable-1.87.2 → launchable-1.89.0}/setup.py +0 -0
  110. {launchable-1.87.2 → launchable-1.89.0}/src/BUILD +0 -0
  111. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
  112. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
  113. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
  114. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +0 -0
  115. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
  116. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
  117. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
  118. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
  119. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
  120. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
  121. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
  122. {launchable-1.87.2 → launchable-1.89.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
  123. {launchable-1.87.2 → launchable-1.89.0}/src/maven_install.json +0 -0
  124. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
  125. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
  126. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
  127. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +0 -0
  128. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
  129. {launchable-1.87.2 → launchable-1.89.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
  130. {launchable-1.87.2 → launchable-1.89.0}/test-runner/__main__.py +0 -0
  131. {launchable-1.87.2 → launchable-1.89.0}/tests/__init__.py +0 -0
  132. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/__init__.py +0 -0
  133. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/inspect/__init__.py +0 -0
  134. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/inspect/test_subset.py +0 -0
  135. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/inspect/test_tests.py +0 -0
  136. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/__init__.py +0 -0
  137. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/test_attachment.py +0 -0
  138. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/test_commit.py +0 -0
  139. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/record/test_tests.py +0 -0
  140. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/test_api_error.py +0 -0
  141. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/test_helper.py +0 -0
  142. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/test_split_subset.py +0 -0
  143. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/test_subset.py +0 -0
  144. {launchable-1.87.2 → launchable-1.89.0}/tests/commands/test_verify.py +0 -0
  145. {launchable-1.87.2 → launchable-1.89.0}/tests/data/adb/subset_result.json +0 -0
  146. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/junitreport/TEST-com.launchable.HelloWorldTest.xml +0 -0
  147. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/junitreport/TEST-com.launchable.library.CacheTest.xml +0 -0
  148. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
  149. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/record_test_result.json +0 -0
  150. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/src/com/launchable/HelloWorld.java +0 -0
  151. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/src/com/launchable/HelloWorldTest.java +0 -0
  152. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/src/com/launchable/library/Cache.java +0 -0
  153. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/src/com/launchable/library/CacheTest.java +0 -0
  154. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ant/subset_result.json +0 -0
  155. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
  156. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
  157. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
  158. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
  159. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
  160. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
  161. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
  162. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
  163. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
  164. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
  165. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
  166. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
  167. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
  168. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
  169. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
  170. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
  171. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
  172. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
  173. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/build_event.json +0 -0
  174. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/build_event_rest.json +0 -0
  175. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/record_test_result.json +0 -0
  176. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
  177. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
  178. {launchable-1.87.2 → launchable-1.89.0}/tests/data/bazel/subset_result.json +0 -0
  179. {launchable-1.87.2 → launchable-1.89.0}/tests/data/behave/record_test_result.json +0 -0
  180. {launchable-1.87.2 → launchable-1.89.0}/tests/data/behave/reports/report.xml +0 -0
  181. {launchable-1.87.2 → launchable-1.89.0}/tests/data/behave/subset_result.json +0 -0
  182. {launchable-1.87.2 → launchable-1.89.0}/tests/data/broken_xml/broken.xml +0 -0
  183. {launchable-1.87.2 → launchable-1.89.0}/tests/data/broken_xml/normal.xml +0 -0
  184. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
  185. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ctest/ctest_list.json +0 -0
  186. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ctest/record_test_result.json +0 -0
  187. {launchable-1.87.2 → launchable-1.89.0}/tests/data/ctest/subset_result.json +0 -0
  188. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cts/record_test_result.json +0 -0
  189. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cts/subset_result.json +0 -0
  190. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cts/test_result.xml +0 -0
  191. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
  192. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
  193. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
  194. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
  195. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/record_test_json_result.json +3 -3
  196. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/record_test_result.json +0 -0
  197. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
  198. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
  199. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
  200. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/report/dummy.xml +0 -0
  201. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cucumber/report/result.json +0 -0
  202. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cypress/empty.json +0 -0
  203. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cypress/empty.xml +0 -0
  204. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cypress/record_test_result.json +0 -0
  205. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cypress/subset_result.json +0 -0
  206. {launchable-1.87.2 → launchable-1.89.0}/tests/data/cypress/test-result.xml +0 -0
  207. {launchable-1.87.2 → launchable-1.89.0}/tests/data/dotnet/record_test_result.json +0 -0
  208. {launchable-1.87.2 → launchable-1.89.0}/tests/data/dotnet/test-result.xml +0 -0
  209. {launchable-1.87.2 → launchable-1.89.0}/tests/data/git_log_ingest/sample.out +0 -0
  210. {launchable-1.87.2 → launchable-1.89.0}/tests/data/go_test/record_test_result.json +0 -0
  211. {launchable-1.87.2 → launchable-1.89.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
  212. {launchable-1.87.2 → launchable-1.89.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
  213. {launchable-1.87.2 → launchable-1.89.0}/tests/data/go_test/subset_result.json +0 -0
  214. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/fail/output.xml +0 -0
  215. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/fail/record_test_result.json +0 -0
  216. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/output_a.xml +0 -0
  217. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/output_b.xml +0 -0
  218. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/record_test_result.json +0 -0
  219. {launchable-1.87.2 → launchable-1.89.0}/tests/data/googletest/subset_result.json +0 -0
  220. {launchable-1.87.2 → launchable-1.89.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/App2Test.java +0 -0
  221. {launchable-1.87.2 → launchable-1.89.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/AppTest.java +0 -0
  222. {launchable-1.87.2 → launchable-1.89.0}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/sub/App3Test.java +0 -0
  223. {launchable-1.87.2 → launchable-1.89.0}/tests/data/gradle/recursion/expected.json +0 -0
  224. {launchable-1.87.2 → launchable-1.89.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
  225. {launchable-1.87.2 → launchable-1.89.0}/tests/data/jest/junit.xml +0 -0
  226. {launchable-1.87.2 → launchable-1.89.0}/tests/data/jest/record_test_result.json +0 -0
  227. {launchable-1.87.2 → launchable-1.89.0}/tests/data/jest/subset_result.json +0 -0
  228. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/createdFile_1.lst +0 -0
  229. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/createdFile_2.lst +0 -0
  230. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/App2Test.java +0 -0
  231. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/AppTest.java +0 -0
  232. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/list.lst +0 -0
  233. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/record_test_result.json +0 -0
  234. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/reports/TEST-1.xml +0 -0
  235. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/reports/TEST-2.xml +0 -0
  236. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/reports/dummy.xml +0 -0
  237. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
  238. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/subset_by_confidence_result.json +0 -0
  239. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/subset_from_file_result.json +0 -0
  240. {launchable-1.87.2 → launchable-1.89.0}/tests/data/maven/subset_result.json +0 -0
  241. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
  242. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
  243. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
  244. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
  245. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
  246. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
  247. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
  248. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/subset_result.json +0 -0
  249. {launchable-1.87.2 → launchable-1.89.0}/tests/data/minitest/test/example_test.rb +0 -0
  250. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/list.xml +0 -0
  251. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
  252. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
  253. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/output-linux.xml +0 -0
  254. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/output-windows.xml +0 -0
  255. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/record_test_result-linux.json +0 -0
  256. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/record_test_result-windows.json +0 -0
  257. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/src/.gitignore +0 -0
  258. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/src/Program.cs +0 -0
  259. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/src/README.md +0 -0
  260. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/src/Test.cs +0 -0
  261. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/src/calc.csproj +0 -0
  262. {launchable-1.87.2 → launchable-1.89.0}/tests/data/nunit/subset_result.json +0 -0
  263. {launchable-1.87.2 → launchable-1.89.0}/tests/data/playwright/record_test_result.json +0 -0
  264. {launchable-1.87.2 → launchable-1.89.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
  265. {launchable-1.87.2 → launchable-1.89.0}/tests/data/playwright/report.json +0 -0
  266. {launchable-1.87.2 → launchable-1.89.0}/tests/data/playwright/report.xml +0 -0
  267. {launchable-1.87.2 → launchable-1.89.0}/tests/data/prove/record_test_result.json +0 -0
  268. {launchable-1.87.2 → launchable-1.89.0}/tests/data/prove/report.xml +0 -0
  269. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/record_test_result.json +0 -0
  270. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/record_test_result_json.json +0 -0
  271. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/report.json +0 -0
  272. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/report.xml +0 -0
  273. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/subset_result.json +0 -0
  274. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/conftest.py +0 -0
  275. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/fooo/__init__.py +0 -0
  276. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
  277. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
  278. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
  279. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
  280. {launchable-1.87.2 → launchable-1.89.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
  281. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/dryrun.xml +0 -0
  282. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/output.xml +0 -0
  283. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
  284. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/record_test_result.json +0 -0
  285. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/single-output.xml +0 -0
  286. {launchable-1.87.2 → launchable-1.89.0}/tests/data/robot/subset_result.json +0 -0
  287. {launchable-1.87.2 → launchable-1.89.0}/tests/data/rspec/record_test_result.json +0 -0
  288. {launchable-1.87.2 → launchable-1.89.0}/tests/data/rspec/rspec.xml +0 -0
  289. {launchable-1.87.2 → launchable-1.89.0}/tests/helper.py +0 -0
  290. {launchable-1.87.2 → launchable-1.89.0}/tests/plugins/foo.py +0 -0
  291. {launchable-1.87.2 → launchable-1.89.0}/tests/test_plugin.py +0 -0
  292. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/__init__.py +0 -0
  293. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_adb.py +0 -0
  294. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_ant.py +0 -0
  295. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_bazel.py +0 -0
  296. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_behave.py +0 -0
  297. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_ctest.py +0 -0
  298. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_cts.py +0 -0
  299. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_cucumber.py +0 -0
  300. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_cypress.py +0 -0
  301. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_dotnet.py +0 -0
  302. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_go_test.py +0 -0
  303. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_googletest.py +0 -0
  304. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_gradle.py +0 -0
  305. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_jest.py +0 -0
  306. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_maven.py +0 -0
  307. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_nunit.py +0 -0
  308. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_playwright.py +0 -0
  309. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_prove.py +0 -0
  310. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_pytest.py +0 -0
  311. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_raw.py +0 -0
  312. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_robot.py +0 -0
  313. {launchable-1.87.2 → launchable-1.89.0}/tests/test_runners/test_rspec.py +0 -0
  314. {launchable-1.87.2 → launchable-1.89.0}/tests/test_session.py +0 -0
  315. {launchable-1.87.2 → launchable-1.89.0}/tests/test_testpath.py +0 -0
  316. {launchable-1.87.2 → launchable-1.89.0}/tests/test_version.py +0 -0
  317. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/__init__.py +0 -0
  318. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_authentication.py +0 -0
  319. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_click.py +0 -0
  320. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_file_name_pattern.py +0 -0
  321. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_git_log_parser.py +0 -0
  322. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_glob.py +0 -0
  323. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_gzipgen.py +0 -0
  324. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_http_client.py +0 -0
  325. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_key_value_type.py +0 -0
  326. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_link.py +0 -0
  327. {launchable-1.87.2 → launchable-1.89.0}/tests/utils/test_logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: launchable
3
- Version: 1.87.2
3
+ Version: 1.89.0
4
4
  Summary: Launchable CLI
5
5
  Home-page: https://launchableinc.com/
6
6
  Author: Launchable, Inc.
@@ -7,7 +7,7 @@ from launchable.utils.tracking import TrackingClient
7
7
 
8
8
  from ..app import Application
9
9
  from ..utils.launchable_client import LaunchableClient
10
- from ..utils.session import read_build, read_session
10
+ from ..utils.session import parse_session, read_build, read_session
11
11
 
12
12
 
13
13
  def require_session(
@@ -20,6 +20,7 @@ def require_session(
20
20
  See https://github.com/launchableinc/cli/pull/342
21
21
  """
22
22
  if session:
23
+ parse_session(session) # make sure session is in the right format
23
24
  return session
24
25
 
25
26
  session = read_session(require_build())
@@ -114,12 +114,17 @@ def build(ctx: click.core.Context, build_name: str, source: List[str], max_days:
114
114
  branch: str
115
115
  # SHA1 commit hash that's currently checked out
116
116
  commit_hash: str
117
+ # identifier that represents how this workspace info was captured. Temporarily introduced for IB-395
118
+ # currently using 'source' and 'commit' to represent whether a local workspace was present (source) or
119
+ # if it was just given as a commit hash (commit)
120
+ mode: str
117
121
 
118
- def __init__(self, name, dir=None, branch=None, commit_hash=None):
122
+ def __init__(self, name, dir=None, branch=None, commit_hash=None, mode=None):
119
123
  self.name = name
120
124
  self.dir = dir
121
125
  self.branch = branch
122
126
  self.commit_hash = commit_hash
127
+ self.mode = mode
123
128
 
124
129
  def calc_branch_name(self):
125
130
  '''
@@ -184,9 +189,9 @@ def build(ctx: click.core.Context, build_name: str, source: List[str], max_days:
184
189
  for s in source:
185
190
  if pattern.match(s):
186
191
  kv = s.split('=')
187
- ws.append(Workspace(name=kv[0], dir=kv[1]))
192
+ ws.append(Workspace(name=kv[0], dir=kv[1], mode='source'))
188
193
  else:
189
- ws.append(Workspace(name=s, dir=s))
194
+ ws.append(Workspace(name=s, dir=s, mode='source'))
190
195
  # TODO: if repo_dir is absolute path, warn the user that that's probably
191
196
  # not what they want to do
192
197
  return ws
@@ -226,7 +231,8 @@ def build(ctx: click.core.Context, build_name: str, source: List[str], max_days:
226
231
  r.append(Workspace(
227
232
  name=w.name + "/" + name,
228
233
  dir=w.dir + "/" + name,
229
- commit_hash=commit_hash))
234
+ commit_hash=commit_hash,
235
+ mode='source'))
230
236
  return r
231
237
 
232
238
  # figure out the commit hash and branch of those workspaces
@@ -268,7 +274,7 @@ def build(ctx: click.core.Context, build_name: str, source: List[str], max_days:
268
274
  err=True)
269
275
  sys.exit(1)
270
276
 
271
- ws[name] = Workspace(name=name, commit_hash=hash, branch=branch_name_map.get(name))
277
+ ws[name] = Workspace(name=name, commit_hash=hash, branch=branch_name_map.get(name), mode='commit')
272
278
 
273
279
  # make sure no invalid branch name options are given
274
280
  for k in branch_name_map:
@@ -304,7 +310,8 @@ def build(ctx: click.core.Context, build_name: str, source: List[str], max_days:
304
310
  "commitHashes": [{
305
311
  'repositoryName': w.name,
306
312
  'commitHash': w.commit_hash,
307
- 'branchName': w.branch or ""
313
+ 'branchName': w.branch or "",
314
+ 'mode': w.mode
308
315
  } for w in ws],
309
316
  "links": compute_links()
310
317
  }
@@ -90,6 +90,14 @@ def _validate_session_name(ctx, param, value):
90
90
  type=str,
91
91
  metavar='LINEAGE',
92
92
  )
93
+ @click.option(
94
+ '--test-suite',
95
+ 'test_suite',
96
+ help='Set test suite name. A test suite is a collection of test sessions. Setting a test suite allows you to manage data over test sessions and lineages.', # noqa: E501
97
+ required=False,
98
+ type=str,
99
+ metavar='TEST_SUITE',
100
+ )
93
101
  @click.pass_context
94
102
  def session(
95
103
  ctx: click.core.Context,
@@ -102,6 +110,7 @@ def session(
102
110
  is_no_build: bool = False,
103
111
  session_name: Optional[str] = None,
104
112
  lineage: Optional[str] = None,
113
+ test_suite: Optional[str] = None,
105
114
  ):
106
115
  """
107
116
  print_session is for backward compatibility.
@@ -158,6 +167,7 @@ def session(
158
167
  "isObservation": is_observation,
159
168
  "noBuild": is_no_build,
160
169
  "lineage": lineage,
170
+ "testSuite": test_suite,
161
171
  }
162
172
 
163
173
  _links = capture_link(os.environ)
@@ -1,9 +1,8 @@
1
- import glob
2
- import os
3
- from . import launchable
1
+ import click
4
2
  from junitparser import TestCase, TestSuite # type: ignore
3
+
5
4
  from ..testpath import TestPath
6
- import click
5
+ from . import launchable
7
6
 
8
7
  subset = launchable.CommonSubsetImpls(__name__).scan_files('*_test.rb')
9
8
  split_subset = launchable.CommonSplitSubsetImpls(__name__).split_subset()
@@ -1,12 +1,10 @@
1
- import glob
2
- import os
3
1
  from typing import Callable, Dict, List
4
2
  from xml.etree import ElementTree as ET
5
3
 
6
4
  import click
7
5
 
8
6
  from launchable.commands.record.case_event import CaseEvent
9
- from launchable.testpath import TestPath, unparse_test_path, parse_test_path
7
+ from launchable.testpath import TestPath, parse_test_path, unparse_test_path
10
8
 
11
9
  from . import launchable
12
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: launchable
3
- Version: 1.87.2
3
+ Version: 1.89.0
4
4
  Summary: Launchable CLI
5
5
  Home-page: https://launchableinc.com/
6
6
  Author: Launchable, Inc.
@@ -7,6 +7,7 @@ import tempfile
7
7
  import types
8
8
  import unittest
9
9
  from pathlib import Path
10
+ from typing import Any, Dict, List
10
11
 
11
12
  import click # type: ignore
12
13
  import responses # type: ignore
@@ -237,6 +238,7 @@ class CliTestCase(unittest.TestCase):
237
238
 
238
239
  expected = self.load_json_from_file(self.test_files_dir.joinpath(golden_image_filename))
239
240
  self.assert_json_orderless_equal(expected, payload)
241
+ self.assert_test_path_orderly_equal(expected, payload)
240
242
 
241
243
  def assert_subset_payload(self, golden_image_filename: str, payload=None):
242
244
  '''
@@ -294,3 +296,31 @@ class CliTestCase(unittest.TestCase):
294
296
  return obj
295
297
 
296
298
  self.assertEqual(tree_sorted(a), tree_sorted(b))
299
+
300
+ def assert_test_path_orderly_equal(self, a: Dict[str, Any], b: Dict[str, Any]):
301
+ """
302
+ Compare orders of the values associated with the `testPath` key in two dictionaries
303
+
304
+ Pre-conditions:
305
+ - Both 'a' and 'b' should contain 'events' key.
306
+ - The value associated with the 'events' key should be a list of dictionaries,
307
+ and each dictionary must include a 'testPath' key.
308
+
309
+ Exceptions:
310
+ - If 'a' or 'b' does not comply with the pre-conditions (e.g., missing keys, wrong data structure),
311
+ the method may raise KeyError or TypeError before the assertion takes place.
312
+ """
313
+ def extract_all_test_paths(obj: Dict[str, Any]) -> List[str]:
314
+ paths_list = []
315
+ for event in obj['events']:
316
+ paths_list.append(event['testPath'])
317
+ return paths_list
318
+
319
+ a_test_paths = extract_all_test_paths(a)
320
+ b_test_paths = extract_all_test_paths(b)
321
+
322
+ # We cannot compare a and b directory such as `a['events']['testPath']==b['events']['testPath']`.
323
+ # It's because the value associated with the 'events' key is in random order.
324
+ self.assertCountEqual(a_test_paths, b_test_paths)
325
+ for test_path in a_test_paths:
326
+ self.assertIn(test_path, b_test_paths, "Expected to include {}".format(test_path))
@@ -45,17 +45,20 @@ class BuildTest(CliTestCase):
45
45
  {
46
46
  "repositoryName": ".",
47
47
  "commitHash": "c50f5de0f06fe16afa4fd1dd615e4903e40b42a2",
48
- "branchName": "main"
48
+ "branchName": "main",
49
+ "mode": "source"
49
50
  },
50
51
  {
51
52
  "repositoryName": "./foo",
52
53
  "commitHash": "491e03096e2234dab9a9533da714fb6eff5dcaa7",
53
- "branchName": ""
54
+ "branchName": "",
55
+ "mode": "source"
54
56
  },
55
57
  {
56
58
  "repositoryName": "./bar-zot",
57
59
  "commitHash": "8bccab48338219e73c3118ad71c8c98fbd32a4be",
58
- "branchName": ""
60
+ "branchName": "",
61
+ "mode": "source"
59
62
  },
60
63
  ],
61
64
  "links": []
@@ -88,7 +91,8 @@ class BuildTest(CliTestCase):
88
91
  {
89
92
  "repositoryName": ".",
90
93
  "commitHash": "c50f5de0f06fe16afa4fd1dd615e4903e40b42a2",
91
- "branchName": ""
94
+ "branchName": "",
95
+ "mode": "source"
92
96
  },
93
97
  ],
94
98
  "links": []
@@ -119,6 +123,7 @@ class BuildTest(CliTestCase):
119
123
  "repositoryName": ".",
120
124
  "commitHash": "c50f5de0f06fe16afa4fd1dd615e4903e40b42a2",
121
125
  "branchName": "",
126
+ "mode": "commit"
122
127
  },
123
128
  ],
124
129
  "links": []
@@ -146,7 +151,8 @@ class BuildTest(CliTestCase):
146
151
  {
147
152
  "repositoryName": "A",
148
153
  "commitHash": "abc12",
149
- "branchName": ""
154
+ "branchName": "",
155
+ "mode": "commit"
150
156
  },
151
157
  ],
152
158
  "links": []
@@ -174,7 +180,8 @@ class BuildTest(CliTestCase):
174
180
  {
175
181
  "repositoryName": "A",
176
182
  "commitHash": "abc12",
177
- "branchName": "feature-xxx"
183
+ "branchName": "feature-xxx",
184
+ "mode": "commit"
178
185
  },
179
186
  ],
180
187
  "links": []
@@ -202,7 +209,8 @@ class BuildTest(CliTestCase):
202
209
  {
203
210
  "repositoryName": "A",
204
211
  "commitHash": "abc12",
205
- "branchName": ""
212
+ "branchName": "",
213
+ "mode": "commit"
206
214
  },
207
215
  ],
208
216
  "links": []
@@ -235,12 +243,14 @@ class BuildTest(CliTestCase):
235
243
  {
236
244
  "repositoryName": "A",
237
245
  "commitHash": "abc12",
238
- "branchName": "feature-xxx"
246
+ "branchName": "feature-xxx",
247
+ "mode": "commit"
239
248
  },
240
249
  {
241
250
  "repositoryName": "B",
242
251
  "commitHash": "56cde",
243
- "branchName": "feature-yyy"
252
+ "branchName": "feature-yyy",
253
+ "mode": "commit"
244
254
  },
245
255
  ],
246
256
  "links": []
@@ -27,11 +27,14 @@ class SessionTest(CliTestCase):
27
27
  self.assert_success(result)
28
28
 
29
29
  payload = json.loads(responses.calls[0].request.body.decode())
30
- self.assert_json_orderless_equal(
31
- {"flavors": {},
32
- "isObservation": False, "links": [],
33
- "noBuild": False, "lineage": None},
34
- payload)
30
+ self.assert_json_orderless_equal({
31
+ "flavors": {},
32
+ "isObservation": False,
33
+ "links": [],
34
+ "noBuild": False,
35
+ "lineage": None,
36
+ "testSuite": None,
37
+ }, payload)
35
38
 
36
39
  @responses.activate
37
40
  @mock.patch.dict(os.environ, {
@@ -54,6 +57,7 @@ class SessionTest(CliTestCase):
54
57
  "links": [],
55
58
  "noBuild": False,
56
59
  "lineage": None,
60
+ "testSuite": None,
57
61
  }, payload)
58
62
 
59
63
  with self.assertRaises(ValueError):
@@ -73,11 +77,14 @@ class SessionTest(CliTestCase):
73
77
 
74
78
  payload = json.loads(responses.calls[0].request.body.decode())
75
79
 
76
- self.assert_json_orderless_equal(
77
- {"flavors": {},
78
- "isObservation": True, "links": [],
79
- "noBuild": False, "lineage": None},
80
- payload)
80
+ self.assert_json_orderless_equal({
81
+ "flavors": {},
82
+ "isObservation": True,
83
+ "links": [],
84
+ "noBuild": False,
85
+ "lineage": None,
86
+ "testSuite": None,
87
+ }, payload)
81
88
 
82
89
  @responses.activate
83
90
  @mock.patch.dict(os.environ, {
@@ -108,11 +115,14 @@ class SessionTest(CliTestCase):
108
115
  self.assert_success(result)
109
116
 
110
117
  payload = json.loads(responses.calls[3].request.body.decode())
111
- self.assert_json_orderless_equal(
112
- {"flavors": {},
113
- "isObservation": False, "links": [],
114
- "noBuild": False, "lineage": None},
115
- payload)
118
+ self.assert_json_orderless_equal({
119
+ "flavors": {},
120
+ "isObservation": False,
121
+ "links": [],
122
+ "noBuild": False,
123
+ "lineage": None,
124
+ "testSuite": None,
125
+ }, payload)
116
126
 
117
127
  @responses.activate
118
128
  @mock.patch.dict(os.environ, {
@@ -131,4 +141,25 @@ class SessionTest(CliTestCase):
131
141
  "links": [],
132
142
  "noBuild": False,
133
143
  "lineage": "example-lineage",
144
+ "testSuite": None,
145
+ }, payload)
146
+
147
+ @responses.activate
148
+ @mock.patch.dict(os.environ, {
149
+ "LAUNCHABLE_TOKEN": CliTestCase.launchable_token,
150
+ 'LANG': 'C.UTF-8',
151
+ }, clear=True)
152
+ def test_run_session_with_test_suite(self):
153
+ result = self.cli("record", "session", "--build", self.build_name,
154
+ "--test-suite", "example-test-suite")
155
+ self.assert_success(result)
156
+
157
+ payload = json.loads(responses.calls[0].request.body.decode())
158
+ self.assert_json_orderless_equal({
159
+ "flavors": {},
160
+ "isObservation": False,
161
+ "links": [],
162
+ "noBuild": False,
163
+ "lineage": None,
164
+ "testSuite": "example-test-suite",
134
165
  }, payload)
@@ -4,13 +4,13 @@
4
4
  "type": "case",
5
5
  "testPath": [
6
6
  { "type": "file", "name": "test/models/user_copy_test.rb" },
7
- {
8
- "type": "testcase",
9
- "name": "test_should_save_user_with_name"
10
- },
11
7
  {
12
8
  "type": "class",
13
9
  "name": "UserCopyTest"
10
+ },
11
+ {
12
+ "type": "testcase",
13
+ "name": "test_should_save_user_with_name"
14
14
  }
15
15
  ],
16
16
  "duration": 1.602778,
@@ -23,13 +23,13 @@
23
23
  "type": "case",
24
24
  "testPath": [
25
25
  { "type": "file", "name": "test/models/user_copy_test.rb" },
26
- {
27
- "type": "testcase",
28
- "name": "test_should_not_save_user_without_name"
29
- },
30
26
  {
31
27
  "type": "class",
32
28
  "name": "UserCopyTest"
29
+ },
30
+ {
31
+ "type": "testcase",
32
+ "name": "test_should_not_save_user_without_name"
33
33
  }
34
34
  ],
35
35
  "duration": 1.606243,
@@ -42,13 +42,13 @@
42
42
  "type": "case",
43
43
  "testPath": [
44
44
  { "type": "file", "name": "test/models/admin/user_test.rb" },
45
- {
46
- "type": "testcase",
47
- "name": "test_should_not_save_user_without_name"
48
- },
49
45
  {
50
46
  "type": "class",
51
47
  "name": "Admin::UserTest"
48
+ },
49
+ {
50
+ "type": "testcase",
51
+ "name": "test_should_not_save_user_without_name"
52
52
  }
53
53
  ],
54
54
  "duration": 1.611738,
@@ -61,13 +61,13 @@
61
61
  "type": "case",
62
62
  "testPath": [
63
63
  { "type": "file", "name": "test/models/admin/user_test.rb" },
64
- {
65
- "type": "testcase",
66
- "name": "test_should_save_user_with_name"
67
- },
68
64
  {
69
65
  "type": "class",
70
66
  "name": "Admin::UserTest"
67
+ },
68
+ {
69
+ "type": "testcase",
70
+ "name": "test_should_save_user_with_name"
71
71
  }
72
72
  ],
73
73
  "duration": 1.607029,
@@ -80,13 +80,13 @@
80
80
  "type": "case",
81
81
  "testPath": [
82
82
  { "type": "file", "name": "test/models/open_class_user_test.rb" },
83
- {
84
- "type": "testcase",
85
- "name": "test_should_not_save_user_without_name_2"
86
- },
87
83
  {
88
84
  "type": "class",
89
85
  "name": "UserTest"
86
+ },
87
+ {
88
+ "type": "testcase",
89
+ "name": "test_should_not_save_user_without_name_2"
90
90
  }
91
91
  ],
92
92
  "duration": 1.614255,
@@ -99,13 +99,13 @@
99
99
  "type": "case",
100
100
  "testPath": [
101
101
  { "type": "file", "name": "test/controllers/user_test.rb" },
102
- {
103
- "type": "testcase",
104
- "name": "test_should_save_user_with_name"
105
- },
106
102
  {
107
103
  "type": "class",
108
104
  "name": "UserControllerTest"
105
+ },
106
+ {
107
+ "type": "testcase",
108
+ "name": "test_should_save_user_with_name"
109
109
  }
110
110
  ],
111
111
  "duration": 1.617726,
@@ -118,11 +118,11 @@
118
118
  "type": "case",
119
119
  "testPath": [
120
120
  { "type": "file", "name": "test/controllers/user_test.rb" },
121
+ { "type": "class", "name": "UserControllerTest" },
121
122
  {
122
123
  "type": "testcase",
123
124
  "name": "test_should_not_save_user_without_name"
124
- },
125
- { "type": "class", "name": "UserControllerTest" }
125
+ }
126
126
  ],
127
127
  "duration": 1.611985,
128
128
  "status": 1,
@@ -134,8 +134,8 @@
134
134
  "type": "case",
135
135
  "testPath": [
136
136
  { "type": "file", "name": "test/models/admin/user_test.rb" },
137
- { "type": "testcase", "name": "test_child" },
138
- { "type": "class", "name": "Admin::UserTest::ChildlenTest" }
137
+ { "type": "class", "name": "Admin::UserTest::ChildlenTest" },
138
+ { "type": "testcase", "name": "test_child" }
139
139
  ],
140
140
  "duration": 1.599567,
141
141
  "status": 1,