smart-tests-cli 2.15.0__tar.gz → 2.15.2__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.
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/PKG-INFO +2 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/pyproject.toml +1 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/session.py +2 -2
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/tests.py +24 -10
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/verify.py +21 -12
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/jar/exe_deploy.jar +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/karma.py +2 -2
- smart_tests_cli-2.15.2/smart_tests/utils/authentication.py +155 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/env_keys.py +10 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/java.py +18 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/PKG-INFO +2 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/SOURCES.txt +2 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/requires.txt +1 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/scm_file_list.json +2 -0
- smart_tests_cli-2.15.2/smart_tests_cli.egg-info/scm_version.json +8 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +43 -2
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/Main.java +21 -2
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_tests.py +32 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_verify.py +39 -1
- smart_tests_cli-2.15.2/tests/data/maven/record_test_nested_displayname_result.json +27 -0
- smart_tests_cli-2.15.2/tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml +4 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_maven.py +44 -35
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_authentication.py +82 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/uv.lock +14 -0
- smart_tests_cli-2.15.0/smart_tests/utils/authentication.py +0 -99
- smart_tests_cli-2.15.0/smart_tests_cli.egg-info/scm_version.json +0 -8
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.bazelrc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.bazelversion +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.claude/skills/merge-v1-to-main/SKILL.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.dockerignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.editorconfig +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/release.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/bazel-test.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/e2e.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/pre-commit.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/publish.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/test.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.github/workflows/update_maven_install_json.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.gitignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.pre-commit-config.yaml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.python-version +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/.tagpr +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/CLAUDE.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/CONTRIBUTING.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/Dockerfile +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/LICENSE.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/MODULE.bazel +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/MODULE.bazel.lock +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/WORKSPACE.bzlmod +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/build-java.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/renovate.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/scripts/update_docs.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/scripts/update_schema.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/setup.cfg +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/setup.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/__main__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/app.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/argument.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/command.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/decorators.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/exceptions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/option.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/parameter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/args4p/typer/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/analyze/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/analyze/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/compare/subsets.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/detect_flakes.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/gate.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/api_schema.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/get/docs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/model.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/inspect/tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/attachment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/case_event.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/commit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/record/deployment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/stats/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/stats/test_sessions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/test_path_writer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/update/alias.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/flaky_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/longest_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/never_failing_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/commands/view/test_results.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/antora.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/adb.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ant.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/bazel.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/behave.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations/github-actions.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/ctest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/cucumber.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/cypress.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/dotnet-test.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/flutter.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/go-test.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/googletest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/gradle.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/jest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/karma.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/maven.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/minitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/playwright.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/prove.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/pytest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/robot.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/rspec.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/c-plus-plus.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/dotnet.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/go.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/java.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/javascript.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/perl.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/python.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-languages/ruby.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/appium.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/cucumber.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/googletest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/jest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/junit.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/minitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nose.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nunit.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/prove.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/robot.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/rspec.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/selenium.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/testng.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/vitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/archive/xctest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/507088cf-209d-4856-be3e-60477c166d92.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/groups-2-record-after.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/auto-quarantine.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/failure-test.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/hi-rate-fail-quarantine/manual-quarantine.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/how-long-train-ml-model.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/icons/icon-vertical-three-dots-dark.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustion-run-whitelisted-tests-1.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-ignore-flakes-1.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-rotate-optimize-coverage.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/illustration-run-recently-failed-tests.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/link-to-results-example.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/model-training-evaluation-confidence-curves.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/new-code-existing-tests.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/predictive-test-selection-observation-mode.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/pts/pts-observe.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately-detailed.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-41-20.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-44-15.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-45-10.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-08-22-at-22-50-49.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-1-48-30-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-2-14-11-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-4-50-56-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-06-32-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-09-04-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-21-37-pm.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/builds-dashboard.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/create-api-key.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/initial-settings.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/organization-profile-id.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/record-session.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/sending-data/test-session-interface.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/slack-desktop-with-app-messages.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-subset-formation-flow.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-builds-interface-v1png.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-cli-3.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-monthly-time-saved.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_api_key_setting_20210613.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_invite_url_20220613.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_settings_20220613.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset/dynamic-parallel.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-2.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-3.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-4.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-details-with-content.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-session-report-example.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/data-examples.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/data-privacy-and-protection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/security-policies.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/administration/pages/troubleshooting.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/high-failure-rate-tests-and-quarantine.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/how-we-select-tests.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/use-cases-for-predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection/viewing-time-savings.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications/github-app-for-test-sessions.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications/test-notifications-via-slack.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/features/pages/test-trends-and-insights.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/ai-assistance.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/cli-reference.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/cli-version.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/faq.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations/raw.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations/use-the-generic-file-based-runner-integration.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/integrations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide/best-practices-checklist.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide/optional-configurations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/onboarding-guide.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/supported-languages.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/references/pages/supported-test-frameworks.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/choose-a-value-for-build-name.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/deal-with-shallow-clones.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-microservices.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-for-multistage-build.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-from-multiple-repositories.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/run-under-restricted-networks.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-sessions/record-sessions.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/attach-log-files.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/convert-test-reports-to-junit-format.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/ensure-record-tests-always-runs.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/manage-complex-test-session-layouts.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/record-test-results.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/separate-out-test-suites.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/use-flavors-to-run-the-best-tests-for-an-environment.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/send-data-to-smart-tests.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/getting-started.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/migration-to-github-oidc-auth.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/set-up-smart-tests/use-the-cli-with-docker-image.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/choose-a-subset-optimization-target.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/combine-with-rule-based-test-selection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/observe-subset-behavior.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/replace-static-parallel-suites-dynamic-parallel-subset.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/request-and-run-a-subset-of-tests.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-subset-optimization-target.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/smart-tests-extension-for-VS-code.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-with-the-smart-tests-cli.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/use-groups-to-split-subsets.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/zero-input-subsetting.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/plugins/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/schema/openapi-schema.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/adb.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/ant.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/bazel.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/behave.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/codeceptjs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/ctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cts.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cucumber.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/cypress.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/dotnet.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/file.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/flutter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/go_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/googletest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/gradle.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/jasmine.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/jest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/maven.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/minitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/nunit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/playwright.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/prove.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/pytest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/raw.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/robot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/rspec.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/smart_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/vitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/test_runners/xctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/testpath.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/ci_provider.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/commands.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/commit_ingester.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/common_tz.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/edit_distance.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/exceptions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/fail_fast_mode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/file_name_pattern.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/git_log_parser.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/glob.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/gzipgen.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/http_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/input_snapshot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/link.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/logger.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/no_build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/sax.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/smart_tests_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/subprocess.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/tracking.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/utils/typer_types.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests/version.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/entry_points.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/top_level.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/maven_install.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/GitFileTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/test-runner/__main__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/converters/test_converters.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_badcode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_badinput.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_command.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_decorators.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_help.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_parameter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/args4p/test_typer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/cli_test_case.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/compare/test_subsets.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_model.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/inspect/test_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_attachment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_case_event.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_commit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_deployment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/record/test_session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_api_error.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_detect_flakes.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_gate.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_flaky_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_longest_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_never_failing_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/test_view_test_results.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/commands/update/test_alias.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/adb/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/library/Cache.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ant/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/build_event.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/build_event_rest.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/bazel/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/reports/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/behave/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/broken_xml/broken.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/broken_xml/normal.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/codeceptjs/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/Testing/latest/Test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/ctest_list.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/ctest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cts/test_result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo/bar.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/foo-bar.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/record_test_json_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/dummy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cucumber/report/result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/empty.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/empty.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/cypress/test-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/junit-result-with-metadata.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/junit-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result-junit-with-metadata.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result-junit.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/dotnet/test-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/record_test_result_custom_attribute.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/file/result_custom_attribute.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/flutter/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/flutter/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/git_log_ingest/sample.out +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/reportv1/reportv1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/reportv2/reportv2.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/go_test/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/fail/output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/fail/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/output_a.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/output_b.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/googletest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/recursion/expected.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/jasmine-test-results.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jasmine/subset_payload.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/junit.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/jest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/sample-report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/subset_payload.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/karma/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/createdFile_1.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/createdFile_2.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.CalculatorTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.demo.UserTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/list.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-2.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/TEST-nested.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/reports/dummy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_by_confidence_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_from_file_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_scan_dryrun_results_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/TEST-UserTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result_chunk1.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/record_test_result_chunk2.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/minitest/test/example_test.rb +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/list.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/output-linux.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/output-windows.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/record_test_result-linux.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/record_test_result-windows.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/.gitignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/Program.cs +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/Test.cs +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/src/calc.csproj +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/nunit/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/packages/e2e/.gitkeep +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/playwright.config.ts +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_json.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_json_base.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/record_test_result_with_prefix.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report_with_json_base.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/playwright/report_with_prefix.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/prove/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/prove/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/pytest.ini +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/record_test_result_json.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/conftest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/funcs3_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/test_funcs1.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/pytest/tests/test_funcs2.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/dryrun.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/output_legacy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_legacy_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/single-output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/robot/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/rspec/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/rspec/rspec.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/vitest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/vitest/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/junit.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/data/xctest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/helper.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/plugins/foo.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_cli_test_case.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_plugin.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_adb.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_ant.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_bazel.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_behave.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_codeceptjs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_ctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cts.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cucumber.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_cypress.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_dotnet.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_file.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_go_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_googletest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_gradle.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_jasmine.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_jest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_karma.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_minitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_nunit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_playwright.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_prove.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_pytest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_raw.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_robot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_rspec.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_vitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_runners/test_xctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_testpath.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/test_version.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_edit_distance.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_fail_fast_mode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_file_name_pattern.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_git_log_parser.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_glob.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_gzipgen.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_http_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_link.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_logger.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_tracking.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_typer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tests/utils/test_typer_types.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tools/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/tools/generate_reference.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart-tests-cli
|
|
3
|
-
Version: 2.15.
|
|
3
|
+
Version: 2.15.2
|
|
4
4
|
Summary: Smart Tests CLI
|
|
5
5
|
Author-email: CloudBees <support@cloudbees.com>
|
|
6
6
|
License: Apache Software License v2
|
|
@@ -20,6 +20,7 @@ Requires-Dist: python-dateutil>=2.9
|
|
|
20
20
|
Requires-Dist: tabulate>=0.9
|
|
21
21
|
Requires-Dist: click<8.2,>=8.1
|
|
22
22
|
Requires-Dist: InquirerPy>=0.3.4
|
|
23
|
+
Requires-Dist: requests-toolbelt>=1.0.0
|
|
23
24
|
Dynamic: license-file
|
|
24
25
|
|
|
25
26
|
This is a CLI to interact with CloudBees Smart Tests.
|
|
@@ -97,8 +97,8 @@ def session(
|
|
|
97
97
|
res = client.request("post", sub_path, payload=payload)
|
|
98
98
|
|
|
99
99
|
if res.status_code == HTTPStatus.NOT_FOUND:
|
|
100
|
-
msg = f"Build {build_name} was not found." \
|
|
101
|
-
f"Make sure to run `
|
|
100
|
+
msg = f"Build {build_name} was not found. " \
|
|
101
|
+
f"Make sure to run `smart-tests record build --build {build_name}` before you run this command."
|
|
102
102
|
tracking_client.send_error_event(
|
|
103
103
|
event_name=Tracking.ErrorEvent.INTERNAL_CLI_ERROR,
|
|
104
104
|
stack_trace=msg,
|
|
@@ -12,6 +12,7 @@ import click
|
|
|
12
12
|
from dateutil.parser import ParserError, parse
|
|
13
13
|
from junitparser import JUnitXml, TestCase, TestSuite # type: ignore # noqa: F401
|
|
14
14
|
from more_itertools import ichunked
|
|
15
|
+
from requests_toolbelt import MultipartEncoder # type: ignore
|
|
15
16
|
from tabulate import tabulate
|
|
16
17
|
|
|
17
18
|
import smart_tests.args4p.converters as converters
|
|
@@ -33,6 +34,13 @@ from ...utils.logger import Logger
|
|
|
33
34
|
from ...utils.smart_tests_client import SmartTestsClient
|
|
34
35
|
from .case_event import CaseEvent, CaseEventGenerator, CaseEventType, DataBuilder, TestPathBuilder
|
|
35
36
|
|
|
37
|
+
# Together with the workers sending events, this stays within urllib3's default pool size (10 connections per host)
|
|
38
|
+
MAX_RAW_FILE_UPLOAD_WORKERS = 5
|
|
39
|
+
# (connect timeout, read timeout)
|
|
40
|
+
# urllib3 applies the connect timeout to each write of the request body, too. The read timeout is long because
|
|
41
|
+
# the server may store the file before responding.
|
|
42
|
+
RAW_FILE_UPLOAD_TIMEOUT = (30, 300)
|
|
43
|
+
|
|
36
44
|
GROUP_NAME_RULE = re.compile("^[a-zA-Z0-9][a-zA-Z0-9_-]*$")
|
|
37
45
|
RESERVED_GROUP_NAMES = ["group", "groups", "nogroup", "nogroups"]
|
|
38
46
|
|
|
@@ -272,17 +280,19 @@ class RecordTests:
|
|
|
272
280
|
url = f"{self.client.base_url()}{path}"
|
|
273
281
|
|
|
274
282
|
with open(file_path, 'rb') as f:
|
|
275
|
-
files
|
|
283
|
+
# Stream the multipart body instead of using `files=`. With `files=`, requests builds the whole body
|
|
284
|
+
# in memory and writes it in one go, and urllib3 applies the connect timeout to that write, so large
|
|
285
|
+
# files fail with "The write operation timed out".
|
|
286
|
+
body = MultipartEncoder(fields={'file': (os.path.basename(file_path), f)})
|
|
276
287
|
headers = self.client.http_client._headers(compress=False)
|
|
277
|
-
|
|
278
|
-
headers.pop('Content-Type', None)
|
|
288
|
+
headers['Content-Type'] = body.content_type
|
|
279
289
|
|
|
280
290
|
response = self.client.http_client.session.request(
|
|
281
291
|
'POST',
|
|
282
292
|
url,
|
|
283
|
-
|
|
293
|
+
data=body,
|
|
284
294
|
headers=headers,
|
|
285
|
-
timeout=
|
|
295
|
+
timeout=RAW_FILE_UPLOAD_TIMEOUT,
|
|
286
296
|
verify=(not self.client.http_client.skip_cert_verification)
|
|
287
297
|
)
|
|
288
298
|
|
|
@@ -300,17 +310,21 @@ class RecordTests:
|
|
|
300
310
|
self.logger.warning(f"Error uploading raw test result file {file_path}: {str(e)}")
|
|
301
311
|
return False
|
|
302
312
|
|
|
303
|
-
def upload_raw_files(self) -> None:
|
|
313
|
+
def upload_raw_files(self, executor: ThreadPoolExecutor) -> None:
|
|
304
314
|
|
|
305
315
|
if self.reports and not self.dry_run:
|
|
306
316
|
self.logger.debug(f"Uploading {len(self.reports)} raw test result file(s)")
|
|
307
317
|
for report_file in self.reports:
|
|
308
|
-
self.upload_raw_file
|
|
318
|
+
executor.submit(self.upload_raw_file, report_file)
|
|
309
319
|
|
|
310
320
|
def run(self):
|
|
311
|
-
# Upload raw test result files
|
|
312
|
-
|
|
321
|
+
# Upload raw test result files in the background while parsing and recording test results,
|
|
322
|
+
# so that large files don't delay recording. Leaving the `with` block waits for the uploads to finish.
|
|
323
|
+
with ThreadPoolExecutor(max_workers=MAX_RAW_FILE_UPLOAD_WORKERS) as executor:
|
|
324
|
+
self.upload_raw_files(executor)
|
|
325
|
+
self._record_tests()
|
|
313
326
|
|
|
327
|
+
def _record_tests(self):
|
|
314
328
|
count = 0 # count number of test cases sent
|
|
315
329
|
is_observation = False
|
|
316
330
|
|
|
@@ -487,7 +501,7 @@ class RecordTests:
|
|
|
487
501
|
url = self._get_test_session_url()
|
|
488
502
|
click.echo(
|
|
489
503
|
f"\nVisit {url} to view uploaded test results "
|
|
490
|
-
f"(or run `
|
|
504
|
+
f"(or run `smart-tests inspect tests --test-session-id {self.test_session_id}`)")
|
|
491
505
|
|
|
492
506
|
def _get_test_session_url(self) -> str:
|
|
493
507
|
cbp_workspace = self.client.get_cbp_workspace()
|
|
@@ -18,7 +18,7 @@ from .. import args4p
|
|
|
18
18
|
from ..app import Application
|
|
19
19
|
from ..utils.authentication import ensure_org_workspace, get_oidc_token, get_org_workspace
|
|
20
20
|
from ..utils.commands import Command
|
|
21
|
-
from ..utils.env_keys import OIDC_TOKEN_KEY, ORGANIZATION_KEY, TOKEN_KEY, WORKSPACE_KEY
|
|
21
|
+
from ..utils.env_keys import GITHUB_OIDC_KEY, LEGACY_GITHUB_OIDC_KEY, OIDC_TOKEN_KEY, ORGANIZATION_KEY, TOKEN_KEY, WORKSPACE_KEY
|
|
22
22
|
from ..utils.http_client import DEFAULT_GET_TIMEOUT, _HttpClient
|
|
23
23
|
from ..utils.java import get_java_command
|
|
24
24
|
from ..utils.smart_tests_client import SmartTestsClient
|
|
@@ -204,20 +204,27 @@ def verify_oidc(app_instance: Application):
|
|
|
204
204
|
Credential-free OIDC bootstrap. Presents the pipeline's OIDC id-token to Intake's
|
|
205
205
|
/intake/oidc/verify endpoint and translates the 200/403/401 contract into CLI behavior:
|
|
206
206
|
|
|
207
|
-
- 200: the subject is registered. Print `export` lines (org/workspace
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
- 200: the subject is registered. Print `export` lines (org/workspace, plus the OIDC token
|
|
208
|
+
when it is a fixed pass-through value) so the pipeline can
|
|
209
|
+
`eval "$(smart-tests verify --oidc)"` and authenticate subsequent commands. Exit 0.
|
|
210
210
|
- 403: the token verified but its subject isn't registered to any workspace yet. Show the
|
|
211
211
|
normalized `sub` so the user can register it from the WebApp settings. Exit 1.
|
|
212
212
|
- 401: the token is missing/expired/invalid. Exit 1.
|
|
213
213
|
'''
|
|
214
214
|
tracking_client = TrackingClient(Command.VERIFY, app=app_instance)
|
|
215
215
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
216
|
+
# authentication_headers() supplies the bearer for the request below; here we only confirm an OIDC
|
|
217
|
+
# flow is configured (fail fast) and decide whether the token can be echoed back. A pass-through
|
|
218
|
+
# token (SMART_TESTS_OIDC_TOKEN, e.g. a Jenkins-bound credential) is a fixed value we re-export;
|
|
219
|
+
# the GitHub flows mint a short-lived token per request, so exporting one here would only leave a
|
|
220
|
+
# stale value behind.
|
|
221
|
+
passthrough_token = get_oidc_token()
|
|
222
|
+
github_oidc_configured = os.getenv(GITHUB_OIDC_KEY) or os.getenv(LEGACY_GITHUB_OIDC_KEY)
|
|
223
|
+
if not passthrough_token and not github_oidc_configured:
|
|
224
|
+
msg = (f"OIDC authentication requires an OIDC flow to be configured: set {OIDC_TOKEN_KEY} to "
|
|
225
|
+
"the pipeline's OIDC id-token (e.g. a Jenkins-bound credential), or set "
|
|
226
|
+
f"{GITHUB_OIDC_KEY}=1 in GitHub Actions to fetch one automatically. "
|
|
227
|
+
"See the OIDC pipeline-authentication setup guide.")
|
|
221
228
|
click.secho(msg, fg='red', err=True)
|
|
222
229
|
tracking_client.send_error_event(
|
|
223
230
|
event_name=Tracking.ErrorEvent.USER_ERROR,
|
|
@@ -296,11 +303,13 @@ def verify_oidc(app_instance: Application):
|
|
|
296
303
|
|
|
297
304
|
# Emit eval-able export lines so the pipeline can hydrate its environment:
|
|
298
305
|
# eval "$(smart-tests verify --oidc)"
|
|
299
|
-
# Subsequent commands
|
|
300
|
-
#
|
|
306
|
+
# Subsequent commands read org/workspace from these vars. For a pass-through token we also
|
|
307
|
+
# re-export it as the bearer; the GitHub flows re-mint a fresh short-lived token per request in
|
|
308
|
+
# authentication_headers(), so exporting one here would only leave a stale value behind.
|
|
301
309
|
click.echo(f'export {ORGANIZATION_KEY}={_shell_quote(org)}')
|
|
302
310
|
click.echo(f'export {WORKSPACE_KEY}={_shell_quote(workspace)}')
|
|
303
|
-
|
|
311
|
+
if passthrough_token:
|
|
312
|
+
click.echo(f'export {OIDC_TOKEN_KEY}={_shell_quote(passthrough_token)}')
|
|
304
313
|
click.secho(
|
|
305
314
|
f"OIDC authentication verified for organization {org!r}, workspace {workspace!r}" + emoji(" \U0001f389"),
|
|
306
315
|
fg='green', err=True)
|
|
Binary file
|
|
@@ -26,10 +26,10 @@ def subset(client, _with: Annotated[str | None, typer.Option(
|
|
|
26
26
|
"""
|
|
27
27
|
Usage:
|
|
28
28
|
find src -name "*.spec.ts" -o -name "*.spec.js" > test-list.txt
|
|
29
|
-
cat test-list.txt |
|
|
29
|
+
cat test-list.txt | smart-tests subset karma --session @session.txt --target 10%
|
|
30
30
|
|
|
31
31
|
# Output in ng test format
|
|
32
|
-
find src -name "*.spec.ts" |
|
|
32
|
+
find src -name "*.spec.ts" | smart-tests subset karma --session @session.txt --target 10% --with ng
|
|
33
33
|
"""
|
|
34
34
|
for t in client.stdin():
|
|
35
35
|
path = t.strip()
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Optional, Tuple
|
|
3
|
+
from urllib.parse import quote
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
import requests
|
|
7
|
+
|
|
8
|
+
import smart_tests.args4p.typer as typer
|
|
9
|
+
|
|
10
|
+
from .env_keys import (GITHUB_OIDC_KEY, LEGACY_GITHUB_OIDC_KEY, OIDC_AUDIENCE_KEY,
|
|
11
|
+
OIDC_TOKEN_KEY, ORGANIZATION_KEY, WORKSPACE_KEY, get_token)
|
|
12
|
+
|
|
13
|
+
# Default audience Intake expects in an OIDC id-token (launchableinc.intake.oidc.audience).
|
|
14
|
+
DEFAULT_OIDC_AUDIENCE = "https://app.cloudbees.io/smart-tests"
|
|
15
|
+
# Header the CLI sends to opt into Intake's deprecated GitHub Actions OIDC path. Absent it, a
|
|
16
|
+
# GitHub-issued token is verified through the generic OIDC path. Mirrors RESTAuthConverter.
|
|
17
|
+
LEGACY_GITHUB_OIDC_HEADER = "GitHub-OIDC-Legacy"
|
|
18
|
+
|
|
19
|
+
# authentication_headers() runs on every API request, so guard the legacy deprecation notice to
|
|
20
|
+
# print at most once per process instead of once per request.
|
|
21
|
+
_legacy_oidc_warning_shown = False
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_org_workspace():
|
|
25
|
+
'''
|
|
26
|
+
Returns (org,ws) tuple from LAUNCHABLE_TOKEN, or (None,None) if not found.
|
|
27
|
+
Use ensure_org_workspace() if this is supposed to be an error condition
|
|
28
|
+
'''
|
|
29
|
+
token = get_token()
|
|
30
|
+
if token:
|
|
31
|
+
try:
|
|
32
|
+
_, user, _ = token.split(":", 2)
|
|
33
|
+
org, workspace = user.split("/", 1)
|
|
34
|
+
return org, workspace
|
|
35
|
+
except ValueError:
|
|
36
|
+
click.secho("Invalid value in LAUNCHABLE_TOKEN environment variable.", fg="red")
|
|
37
|
+
raise typer.Exit(1)
|
|
38
|
+
|
|
39
|
+
return os.getenv(ORGANIZATION_KEY), os.getenv(WORKSPACE_KEY)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def ensure_org_workspace() -> Tuple[str, str]:
|
|
43
|
+
org, workspace = get_org_workspace()
|
|
44
|
+
if org is None or workspace is None:
|
|
45
|
+
click.secho(
|
|
46
|
+
"Could not identify Smart Tests organization/workspace. "
|
|
47
|
+
"Please confirm if you set SMART_TESTS_TOKEN "
|
|
48
|
+
"(or LAUNCHABLE_TOKEN for backward compatibility) or SMART_TESTS_ORGANIZATION and "
|
|
49
|
+
"SMART_TESTS_WORKSPACE environment variables", fg='red', err=True)
|
|
50
|
+
raise typer.Exit(1)
|
|
51
|
+
return org, workspace
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_oidc_token():
|
|
55
|
+
'''
|
|
56
|
+
Returns the CI-issued OIDC id-token (e.g. a Jenkins-minted RS256 JWT) from the environment,
|
|
57
|
+
or None if not set. This is the same token `smart-tests verify --oidc` exchanges for an
|
|
58
|
+
org/workspace, and the one subsequent workspace-scoped calls present as their bearer.
|
|
59
|
+
'''
|
|
60
|
+
return os.getenv(OIDC_TOKEN_KEY)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def authentication_headers():
|
|
64
|
+
token = get_token()
|
|
65
|
+
if token:
|
|
66
|
+
return {'Authorization': f'Bearer {token}'}
|
|
67
|
+
|
|
68
|
+
# A pipeline that authenticated via `verify --oidc` carries no SMART_TESTS_TOKEN; it presents
|
|
69
|
+
# its OIDC id-token directly. Intake routes this by `iss` (RESTAuthVerifier) to the generic OIDC
|
|
70
|
+
# verifier, so subsequent workspace-scoped calls authenticate with the same JWT.
|
|
71
|
+
oidc_token = get_oidc_token()
|
|
72
|
+
if oidc_token:
|
|
73
|
+
return {'Authorization': f'Bearer {oidc_token}'}
|
|
74
|
+
|
|
75
|
+
# Generic GitHub Actions OIDC: fetch the id-token minted for the Smart Tests audience and present
|
|
76
|
+
# it like any other OIDC token. Intake routes by `iss` to the generic verifier and matches the
|
|
77
|
+
# normalized `repo:OWNER/REPO` subject against trusted_oidc_subjects. The audience is required
|
|
78
|
+
# here because the generic path enforces `aud` for GitHub's issuer.
|
|
79
|
+
if os.getenv(GITHUB_OIDC_KEY):
|
|
80
|
+
id_token = _fetch_github_id_token(audience=_expected_oidc_audience())
|
|
81
|
+
return {'Authorization': f'Bearer {id_token}'}
|
|
82
|
+
|
|
83
|
+
# Deprecated legacy GitHub Actions OIDC: Intake matches the `repository` claim against
|
|
84
|
+
# trusted_github_repositories. The legacy path never checks `aud`, so no audience is requested.
|
|
85
|
+
# The header tells Intake to take the legacy branch; without it the token would be verified
|
|
86
|
+
# through the generic path.
|
|
87
|
+
if os.getenv(LEGACY_GITHUB_OIDC_KEY):
|
|
88
|
+
global _legacy_oidc_warning_shown
|
|
89
|
+
if not _legacy_oidc_warning_shown:
|
|
90
|
+
_legacy_oidc_warning_shown = True
|
|
91
|
+
click.secho(
|
|
92
|
+
f"{LEGACY_GITHUB_OIDC_KEY} enables the deprecated GitHub Actions OIDC flow. Migrate "
|
|
93
|
+
f"by registering your repository as a Trusted OIDC subject and switching to "
|
|
94
|
+
f"{GITHUB_OIDC_KEY}=1. See "
|
|
95
|
+
"https://docs.cloudbees.com/docs/cloudbees-smart-tests/latest/send-data-to-smart-tests/set-up-smart-tests/migration-to-github-oidc-auth", # noqa: E501
|
|
96
|
+
fg='yellow', err=True)
|
|
97
|
+
id_token = _fetch_github_id_token()
|
|
98
|
+
return {
|
|
99
|
+
'Authorization': f'Bearer {id_token}',
|
|
100
|
+
LEGACY_GITHUB_OIDC_HEADER: '1',
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if os.getenv('GITHUB_ACTIONS'):
|
|
104
|
+
headers = {
|
|
105
|
+
'GitHub-Actions': os.environ['GITHUB_ACTIONS'],
|
|
106
|
+
'GitHub-Run-Id': os.environ['GITHUB_RUN_ID'],
|
|
107
|
+
'GitHub-Repository': os.environ['GITHUB_REPOSITORY'],
|
|
108
|
+
'GitHub-Workflow': os.environ['GITHUB_WORKFLOW'],
|
|
109
|
+
'GitHub-Run-Number': os.environ['GITHUB_RUN_NUMBER'],
|
|
110
|
+
'GitHub-Event-Name': os.environ['GITHUB_EVENT_NAME'],
|
|
111
|
+
'GitHub-Sha': os.environ['GITHUB_SHA'],
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
# GITHUB_PR_HEAD_SHA might not exist
|
|
115
|
+
pr_head_sha = os.getenv('GITHUB_PR_HEAD_SHA')
|
|
116
|
+
if pr_head_sha:
|
|
117
|
+
headers['GitHub-Pr-Head-Sha'] = pr_head_sha
|
|
118
|
+
|
|
119
|
+
return headers
|
|
120
|
+
return {}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def _expected_oidc_audience() -> str:
|
|
124
|
+
'''Audience the GitHub id-token must carry for Intake's generic OIDC path to accept it.'''
|
|
125
|
+
return os.getenv(OIDC_AUDIENCE_KEY) or DEFAULT_OIDC_AUDIENCE
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _fetch_github_id_token(audience: Optional[str] = None) -> str:
|
|
129
|
+
'''
|
|
130
|
+
Retrieve a GitHub Actions OIDC id-token via the runner's token endpoint.
|
|
131
|
+
|
|
132
|
+
Requires the `id-token: write` workflow permission, which populates ACTIONS_ID_TOKEN_REQUEST_URL
|
|
133
|
+
and ACTIONS_ID_TOKEN_REQUEST_TOKEN. When `audience` is given it is requested so the token's `aud`
|
|
134
|
+
claim matches what Intake expects (the generic OIDC path enforces it); the legacy path omits it.
|
|
135
|
+
'''
|
|
136
|
+
req_url = os.getenv('ACTIONS_ID_TOKEN_REQUEST_URL')
|
|
137
|
+
rt_token = os.getenv('ACTIONS_ID_TOKEN_REQUEST_TOKEN')
|
|
138
|
+
if not req_url or not rt_token:
|
|
139
|
+
click.secho(
|
|
140
|
+
"GitHub Actions OIDC tokens cannot be retrieved."
|
|
141
|
+
"Confirm that you have added necessary permissions following "
|
|
142
|
+
"https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers#adding-permissions-settings", # noqa: E501
|
|
143
|
+
fg='red', err=True)
|
|
144
|
+
raise typer.Exit(1)
|
|
145
|
+
if audience:
|
|
146
|
+
sep = '&' if '?' in req_url else '?'
|
|
147
|
+
req_url = f"{req_url}{sep}audience={quote(audience, safe='')}"
|
|
148
|
+
r = requests.get(req_url,
|
|
149
|
+
headers={
|
|
150
|
+
'Authorization': f'Bearer {rt_token}',
|
|
151
|
+
'Accept': 'application/json; api-version=2.0',
|
|
152
|
+
'Content-Type': 'application/json',
|
|
153
|
+
})
|
|
154
|
+
r.raise_for_status()
|
|
155
|
+
return r.json()['value']
|
|
@@ -9,6 +9,16 @@ OIDC_TOKEN_KEY = "SMART_TESTS_OIDC_TOKEN"
|
|
|
9
9
|
ORGANIZATION_KEY = "SMART_TESTS_ORGANIZATION"
|
|
10
10
|
WORKSPACE_KEY = "SMART_TESTS_WORKSPACE"
|
|
11
11
|
BASE_URL_KEY = "SMART_TESTS_BASE_URL"
|
|
12
|
+
# Opt in to the generic GitHub Actions OIDC flow: the CLI fetches the GitHub id-token and presents
|
|
13
|
+
# it like any other OIDC token. Intake verifies it against trusted_oidc_subjects (self-serve in the
|
|
14
|
+
# webapp) instead of the deprecated trusted_github_repositories path. See authentication_headers().
|
|
15
|
+
GITHUB_OIDC_KEY = "SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH"
|
|
16
|
+
# Deprecated opt in to the legacy GitHub Actions OIDC flow (repository-claim matching). Kept working
|
|
17
|
+
# for backward compatibility; when set, the CLI signals Intake to use the legacy path via a header.
|
|
18
|
+
LEGACY_GITHUB_OIDC_KEY = "EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH"
|
|
19
|
+
# Audience the GitHub id-token must be minted for so the generic OIDC path's aud check passes.
|
|
20
|
+
# Overridable for non-production Intake environments.
|
|
21
|
+
OIDC_AUDIENCE_KEY = "SMART_TESTS_OIDC_AUDIENCE"
|
|
12
22
|
SKIP_TIMEOUT_RETRY = "SMART_TESTS_SKIP_TIMEOUT_RETRY"
|
|
13
23
|
COMMIT_TIMEOUT = "SMART_TESTS_COMMIT_TIMEOUT"
|
|
14
24
|
SKIP_CERT_VERIFICATION = "SMART_TESTS_SKIP_CERT_VERIFICATION"
|
|
@@ -48,6 +48,12 @@ def junit5_nested_class_path_builder(
|
|
|
48
48
|
Note: Launchable allows $ in test paths. But we decided to remove it in this case
|
|
49
49
|
because $ in the class name is not a common case.
|
|
50
50
|
|
|
51
|
+
Separately, when a @Nested class carries an explicit @DisplayName, Surefire (>= ~3.5.x)
|
|
52
|
+
drops the outer class name from the `classname` attribute entirely and reports just the
|
|
53
|
+
@DisplayName value (e.g. classname="addFollowList", with no dot and no $). In that case we
|
|
54
|
+
fall back to the enclosing <testsuite name="..."> attribute, which is always the outer
|
|
55
|
+
class's fully-qualified name.
|
|
56
|
+
|
|
51
57
|
Args:
|
|
52
58
|
default_path_builder: The original path builder function to wrap
|
|
53
59
|
|
|
@@ -56,6 +62,17 @@ def junit5_nested_class_path_builder(
|
|
|
56
62
|
"""
|
|
57
63
|
def path_builder(case: TestCase, suite: TestSuite, report_file: str) -> TestPath:
|
|
58
64
|
test_path = default_path_builder(case, suite, report_file)
|
|
59
|
-
|
|
65
|
+
|
|
66
|
+
def fix_class(item):
|
|
67
|
+
if item["type"] != "class":
|
|
68
|
+
return item
|
|
69
|
+
name = item["name"]
|
|
70
|
+
if "." not in name:
|
|
71
|
+
suite_name = suite._elem.attrib.get("name")
|
|
72
|
+
if suite_name and "." in suite_name:
|
|
73
|
+
name = suite_name
|
|
74
|
+
return {**item, "name": name.split("$")[0]}
|
|
75
|
+
|
|
76
|
+
return [fix_class(item) for item in test_path]
|
|
60
77
|
|
|
61
78
|
return path_builder
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart-tests-cli
|
|
3
|
-
Version: 2.15.
|
|
3
|
+
Version: 2.15.2
|
|
4
4
|
Summary: Smart Tests CLI
|
|
5
5
|
Author-email: CloudBees <support@cloudbees.com>
|
|
6
6
|
License: Apache Software License v2
|
|
@@ -20,6 +20,7 @@ Requires-Dist: python-dateutil>=2.9
|
|
|
20
20
|
Requires-Dist: tabulate>=0.9
|
|
21
21
|
Requires-Dist: click<8.2,>=8.1
|
|
22
22
|
Requires-Dist: InquirerPy>=0.3.4
|
|
23
|
+
Requires-Dist: requests-toolbelt>=1.0.0
|
|
23
24
|
Dynamic: license-file
|
|
24
25
|
|
|
25
26
|
This is a CLI to interact with CloudBees Smart Tests.
|
|
@@ -546,6 +546,7 @@ tests/data/karma/subset_result.json
|
|
|
546
546
|
tests/data/maven/createdFile_1.lst
|
|
547
547
|
tests/data/maven/createdFile_2.lst
|
|
548
548
|
tests/data/maven/list.lst
|
|
549
|
+
tests/data/maven/record_test_nested_displayname_result.json
|
|
549
550
|
tests/data/maven/record_test_result.json
|
|
550
551
|
tests/data/maven/subset_by_absolute_time_result.json
|
|
551
552
|
tests/data/maven/subset_by_confidence_result.json
|
|
@@ -563,6 +564,7 @@ tests/data/maven/reports/TEST-1.xml
|
|
|
563
564
|
tests/data/maven/reports/TEST-2.xml
|
|
564
565
|
tests/data/maven/reports/TEST-nested.xml
|
|
565
566
|
tests/data/maven/reports/dummy.xml
|
|
567
|
+
tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml
|
|
566
568
|
tests/data/minitest/TEST-Admin_UserTest.xml
|
|
567
569
|
tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml
|
|
568
570
|
tests/data/minitest/TEST-UserControllerTest.xml
|
{smart_tests_cli-2.15.0 → smart_tests_cli-2.15.2}/smart_tests_cli.egg-info/scm_file_list.json
RENAMED
|
@@ -539,7 +539,9 @@
|
|
|
539
539
|
"tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java",
|
|
540
540
|
"tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java",
|
|
541
541
|
"tests/data/maven/list.lst",
|
|
542
|
+
"tests/data/maven/record_test_nested_displayname_result.json",
|
|
542
543
|
"tests/data/maven/record_test_result.json",
|
|
544
|
+
"tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml",
|
|
543
545
|
"tests/data/maven/reports/TEST-1.xml",
|
|
544
546
|
"tests/data/maven/reports/TEST-2.xml",
|
|
545
547
|
"tests/data/maven/reports/TEST-nested.xml",
|
|
@@ -6,6 +6,9 @@ import com.google.common.base.Strings;
|
|
|
6
6
|
import com.google.common.collect.ImmutableList;
|
|
7
7
|
import java.io.IOException;
|
|
8
8
|
import java.io.UncheckedIOException;
|
|
9
|
+
import java.io.UnsupportedEncodingException;
|
|
10
|
+
import java.net.URLEncoder;
|
|
11
|
+
import java.nio.charset.StandardCharsets;
|
|
9
12
|
import org.apache.http.Header;
|
|
10
13
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
|
11
14
|
import org.apache.http.client.methods.HttpGet;
|
|
@@ -15,10 +18,29 @@ import org.apache.http.message.BasicHeader;
|
|
|
15
18
|
import org.kohsuke.args4j.CmdLineException;
|
|
16
19
|
|
|
17
20
|
public class GitHubIdTokenAuthenticator implements Authenticator {
|
|
21
|
+
// Default audience Intake expects in an OIDC id-token (launchableinc.intake.oidc.audience).
|
|
22
|
+
// Mirrors the Python CLI's DEFAULT_OIDC_AUDIENCE.
|
|
23
|
+
static final String DEFAULT_OIDC_AUDIENCE = "https://app.cloudbees.io/smart-tests";
|
|
24
|
+
// Header the CLI sends to opt into Intake's deprecated GitHub Actions OIDC path. Absent it, a
|
|
25
|
+
// GitHub-issued token is verified through the generic OIDC path. Mirrors RESTAuthConverter.
|
|
26
|
+
static final String LEGACY_GITHUB_OIDC_HEADER = "GitHub-OIDC-Legacy";
|
|
27
|
+
|
|
18
28
|
private static final ObjectMapper objectMapper = new ObjectMapper();
|
|
19
29
|
private final String idToken;
|
|
30
|
+
private final boolean legacy;
|
|
20
31
|
|
|
21
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Retrieves a GitHub Actions OIDC id-token via the runner's token endpoint.
|
|
34
|
+
*
|
|
35
|
+
* @param audience When non-empty, requested so the token's {@code aud} claim matches what
|
|
36
|
+
* Intake's generic OIDC path enforces. Pass {@code null}/empty for the legacy path, which
|
|
37
|
+
* never checks {@code aud}.
|
|
38
|
+
* @param legacy When true, signals Intake to take the deprecated GitHub Actions OIDC path via the
|
|
39
|
+
* {@link #LEGACY_GITHUB_OIDC_HEADER} header; without it the token is verified through the
|
|
40
|
+
* generic path.
|
|
41
|
+
*/
|
|
42
|
+
public GitHubIdTokenAuthenticator(String audience, boolean legacy) throws CmdLineException {
|
|
43
|
+
this.legacy = legacy;
|
|
22
44
|
String reqUrl = System.getenv("ACTIONS_ID_TOKEN_REQUEST_URL");
|
|
23
45
|
String rtToken = System.getenv("ACTIONS_ID_TOKEN_REQUEST_TOKEN");
|
|
24
46
|
if (Strings.isNullOrEmpty(reqUrl) || Strings.isNullOrEmpty(rtToken)) {
|
|
@@ -28,6 +50,11 @@ public class GitHubIdTokenAuthenticator implements Authenticator {
|
|
|
28
50
|
+ "https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers#adding-permissions-settings");
|
|
29
51
|
}
|
|
30
52
|
|
|
53
|
+
if (!Strings.isNullOrEmpty(audience)) {
|
|
54
|
+
String sep = reqUrl.contains("?") ? "&" : "?";
|
|
55
|
+
reqUrl = reqUrl + sep + "audience=" + encode(audience);
|
|
56
|
+
}
|
|
57
|
+
|
|
31
58
|
HttpGet request = new HttpGet(reqUrl);
|
|
32
59
|
request.setHeader("Authorization", "Bearer " + rtToken);
|
|
33
60
|
request.setHeader("Accept", "applicaiton/json; api-version=2.0");
|
|
@@ -49,7 +76,21 @@ public class GitHubIdTokenAuthenticator implements Authenticator {
|
|
|
49
76
|
|
|
50
77
|
@Override
|
|
51
78
|
public ImmutableList<Header> getAuthenticationHeaders() {
|
|
52
|
-
|
|
79
|
+
ImmutableList.Builder<Header> headers = ImmutableList.builder();
|
|
80
|
+
headers.add(new BasicHeader("Authorization", "Bearer " + idToken));
|
|
81
|
+
if (legacy) {
|
|
82
|
+
headers.add(new BasicHeader(LEGACY_GITHUB_OIDC_HEADER, "1"));
|
|
83
|
+
}
|
|
84
|
+
return headers.build();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private static String encode(String value) {
|
|
88
|
+
try {
|
|
89
|
+
return URLEncoder.encode(value, StandardCharsets.UTF_8.name());
|
|
90
|
+
} catch (UnsupportedEncodingException e) {
|
|
91
|
+
// UTF-8 is always supported.
|
|
92
|
+
throw new AssertionError(e);
|
|
93
|
+
}
|
|
53
94
|
}
|
|
54
95
|
|
|
55
96
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.launchableinc.ingest.commits;
|
|
2
2
|
|
|
3
3
|
import com.google.common.annotations.VisibleForTesting;
|
|
4
|
+
import com.google.common.base.Strings;
|
|
4
5
|
import java.io.File;
|
|
5
6
|
import java.io.IOException;
|
|
6
7
|
import java.net.MalformedURLException;
|
|
@@ -110,8 +111,26 @@ public class Main {
|
|
|
110
111
|
this.ws = w;
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
if (System.getenv("
|
|
114
|
-
|
|
114
|
+
if (!Strings.isNullOrEmpty(System.getenv("SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH"))) {
|
|
115
|
+
// Generic GitHub Actions OIDC: fetch the id-token minted for the Smart Tests audience and
|
|
116
|
+
// present it like any other OIDC token. Intake routes by `iss` to the generic verifier
|
|
117
|
+
// and matches the normalized `repo:OWNER/REPO` subject against trusted_oidc_subjects. The
|
|
118
|
+
// audience is required because the generic path enforces `aud` for GitHub's issuer.
|
|
119
|
+
String audience = System.getenv("SMART_TESTS_OIDC_AUDIENCE");
|
|
120
|
+
if (Strings.isNullOrEmpty(audience)) {
|
|
121
|
+
audience = GitHubIdTokenAuthenticator.DEFAULT_OIDC_AUDIENCE;
|
|
122
|
+
}
|
|
123
|
+
authenticator = new GitHubIdTokenAuthenticator(audience, false);
|
|
124
|
+
} else if (!Strings.isNullOrEmpty(System.getenv("EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH"))) {
|
|
125
|
+
// Deprecated legacy GitHub Actions OIDC: Intake matches the `repository` claim against
|
|
126
|
+
// trusted_github_repositories. The legacy path never checks `aud`, so no audience is
|
|
127
|
+
// requested; the legacy header tells Intake to take the legacy branch.
|
|
128
|
+
System.err.println(
|
|
129
|
+
"EXPERIMENTAL_GITHUB_OIDC_TOKEN_AUTH enables the deprecated GitHub Actions OIDC flow."
|
|
130
|
+
+ " Migrate by registering your repository as a Trusted OIDC subject and switching"
|
|
131
|
+
+ " to SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH=1. See "
|
|
132
|
+
+ "https://docs.cloudbees.com/docs/cloudbees-smart-tests/latest/send-data-to-smart-tests/set-up-smart-tests/migration-to-github-oidc-auth");
|
|
133
|
+
authenticator = new GitHubIdTokenAuthenticator(null, true);
|
|
115
134
|
} else {
|
|
116
135
|
authenticator = new GitHubActionsAuthenticator();
|
|
117
136
|
}
|
|
@@ -9,6 +9,7 @@ from unittest import mock
|
|
|
9
9
|
import responses # type: ignore
|
|
10
10
|
|
|
11
11
|
from smart_tests.commands.record.tests import INVALID_TIMESTAMP, parse_launchable_timeformat
|
|
12
|
+
from smart_tests.utils.http_client import get_base_url
|
|
12
13
|
from tests.cli_test_case import CliTestCase
|
|
13
14
|
|
|
14
15
|
|
|
@@ -62,6 +63,37 @@ class TestsTest(CliTestCase):
|
|
|
62
63
|
# normal.xml
|
|
63
64
|
self.assertIn('open_class_user_test.rb', gzip.decompress(self.find_request('/events').request.body).decode())
|
|
64
65
|
|
|
66
|
+
@responses.activate
|
|
67
|
+
@mock.patch.dict(os.environ, {"SMART_TESTS_TOKEN": CliTestCase.smart_tests_token})
|
|
68
|
+
def test_upload_raw_files(self):
|
|
69
|
+
uploads = []
|
|
70
|
+
|
|
71
|
+
def callback(request):
|
|
72
|
+
body = request.body
|
|
73
|
+
if hasattr(body, 'read'):
|
|
74
|
+
body = body.read()
|
|
75
|
+
self.assertEqual(int(request.headers['Content-Length']), len(body))
|
|
76
|
+
self.assertTrue(request.headers['Content-Type'].startswith('multipart/form-data; boundary='))
|
|
77
|
+
uploads.append(body)
|
|
78
|
+
return 200, {}, ''
|
|
79
|
+
|
|
80
|
+
responses.add_callback(
|
|
81
|
+
responses.POST,
|
|
82
|
+
f"{get_base_url()}/intake/organizations/{self.organization}/workspaces/{self.workspace}"
|
|
83
|
+
f"/builds/{self.build_name}/test_sessions/{self.session_id}/test_result_file",
|
|
84
|
+
callback=callback)
|
|
85
|
+
|
|
86
|
+
xml_a = Path(__file__).parent.joinpath('../../data/googletest/output_a.xml').resolve()
|
|
87
|
+
xml_b = Path(__file__).parent.joinpath('../../data/googletest/output_b.xml').resolve()
|
|
88
|
+
result = self.cli('record', 'tests', 'googletest', '--session', self.session, str(xml_a), str(xml_b))
|
|
89
|
+
|
|
90
|
+
self.assert_success(result)
|
|
91
|
+
self.assertNotIn("Error uploading raw test result file", result.output)
|
|
92
|
+
self.assertEqual(len(uploads), 2)
|
|
93
|
+
for path in (xml_a, xml_b):
|
|
94
|
+
body = next(b for b in uploads if f'filename="{path.name}"'.encode() in b)
|
|
95
|
+
self.assertIn(path.read_bytes(), body)
|
|
96
|
+
|
|
65
97
|
def test_parse_launchable_timeformat(self):
|
|
66
98
|
t1 = "2021-04-01T09:35:47.934+00:00" # 1617269747.934
|
|
67
99
|
t2 = "2021-05-24T18:29:04.285+00:00" # 1621880944.285
|