smart-tests-cli 2.15.0__tar.gz → 2.15.1__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.1}/PKG-INFO +1 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/verify.py +21 -12
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/jar/exe_deploy.jar +0 -0
- smart_tests_cli-2.15.1/smart_tests/utils/authentication.py +155 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/env_keys.py +10 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/java.py +18 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/PKG-INFO +1 -1
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/SOURCES.txt +2 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/scm_file_list.json +2 -0
- smart_tests_cli-2.15.1/smart_tests_cli.egg-info/scm_version.json +8 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +43 -2
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/Main.java +21 -2
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_verify.py +39 -1
- smart_tests_cli-2.15.1/tests/data/maven/record_test_nested_displayname_result.json +27 -0
- smart_tests_cli-2.15.1/tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml +4 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_maven.py +44 -35
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_authentication.py +82 -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.1}/.bazelrc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.bazelversion +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.claude/skills/merge-v1-to-main/SKILL.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.dockerignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.editorconfig +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/release.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/bazel-test.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/e2e.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/pre-commit.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/publish.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/test.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.github/workflows/update_maven_install_json.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.gitignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.pre-commit-config.yaml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.python-version +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/.tagpr +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/CLAUDE.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/CONTRIBUTING.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/Dockerfile +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/LICENSE.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/MODULE.bazel +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/MODULE.bazel.lock +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/WORKSPACE.bzlmod +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/build-java.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/pyproject.toml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/renovate.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/scripts/update_docs.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/scripts/update_schema.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/setup.cfg +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/setup.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/__main__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/app.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/argument.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/command.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/decorators.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/exceptions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/option.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/parameter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/args4p/typer/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/analyze/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/analyze/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/compare/subsets.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/detect_flakes.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/gate.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/api_schema.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/get/docs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/model.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/inspect/tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/attachment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/case_event.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/commit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/deployment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/record/tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/stats/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/stats/test_sessions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/test_path_writer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/update/alias.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/flaky_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/longest_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/never_failing_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/commands/view/test_results.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/antora.yml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/adb.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ant.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/bazel.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/behave.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/ROOT/archive/ci-tool-integrations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/ctest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/cucumber.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/cypress.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/dotnet-test.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/flutter.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/go-test.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/googletest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/gradle.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/jest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/karma.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/maven.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/minitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/playwright.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/prove.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/pytest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/robot.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/rspec.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/dotnet.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/go.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/java.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/javascript.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/perl.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/python.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-languages/ruby.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/appium.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/cucumber.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/googletest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/jest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/junit.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/minitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nose.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/nunit.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/prove.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/robot.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/rspec.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/selenium.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/supported-test-frameworks/testng.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/vitest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/archive/xctest.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/pts/pts-observe.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset/dynamic-parallel.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/data-examples.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/data-privacy-and-protection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/security-policies.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/administration/pages/troubleshooting.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/features/pages/test-trends-and-insights.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/ai-assistance.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/cli-reference.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/cli-version.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/faq.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/integrations/raw.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/references/pages/integrations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/smart_tests/docs/modules/references/pages/onboarding-guide/optional-configurations.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/onboarding-guide.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/supported-languages.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/docs/modules/references/pages/supported-test-frameworks.adoc +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/smart_tests/plugins/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/schema/openapi-schema.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/adb.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/ant.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/bazel.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/behave.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/codeceptjs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/ctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cts.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cucumber.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/cypress.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/dotnet.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/file.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/flutter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/go_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/googletest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/gradle.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/jasmine.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/jest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/karma.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/maven.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/minitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/nunit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/playwright.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/prove.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/pytest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/raw.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/robot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/rspec.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/smart_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/vitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/test_runners/xctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/testpath.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/ci_provider.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/commands.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/commit_ingester.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/common_tz.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/edit_distance.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/exceptions.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/fail_fast_mode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/file_name_pattern.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/git_log_parser.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/glob.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/gzipgen.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/http_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/input_snapshot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/link.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/logger.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/no_build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/sax.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/smart_tests_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/subprocess.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/tracking.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/utils/typer_types.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests/version.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/entry_points.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/requires.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/smart_tests_cli.egg-info/top_level.txt +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/maven_install.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/GitFileTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/test-runner/__main__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/converters/test_converters.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_badcode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_badinput.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_command.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_decorators.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_help.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_parameter.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/args4p/test_typer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/cli_test_case.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/compare/test_subsets.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/inspect/test_model.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/inspect/test_subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/inspect/test_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_attachment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_build.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_case_event.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_commit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_deployment.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/record/test_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_api_error.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_detect_flakes.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_gate.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_subset.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_flaky_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_longest_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_never_failing_tests.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/test_view_test_results.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/commands/update/test_alias.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/adb/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/library/Cache.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ant/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/tests/data/bazel/build_event.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/bazel/build_event_rest.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/bazel/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/tests/data/bazel/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/behave/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/behave/reports/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/behave/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/broken_xml/broken.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/broken_xml/normal.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/codeceptjs/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ctest/Testing/latest/Test.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ctest/ctest_list.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ctest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/ctest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cts/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cts/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cts/test_result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo/bar.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/foo-bar.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/record_test_json_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/dummy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cucumber/report/result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cypress/empty.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cypress/empty.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cypress/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cypress/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/cypress/test-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/junit-result-with-metadata.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/junit-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result-junit-with-metadata.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result-junit.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/dotnet/test-result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/file/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/file/record_test_result_custom_attribute.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/file/result.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/file/result_custom_attribute.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/flutter/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/flutter/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/git_log_ingest/sample.out +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/go_test/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/go_test/reportv1/reportv1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/go_test/reportv2/reportv2.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/go_test/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/fail/output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/fail/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/output_a.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/output_b.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/googletest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/tests/data/gradle/recursion/expected.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/jasmine-test-results.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jasmine/subset_payload.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jest/junit.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/jest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/karma/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/karma/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/karma/sample-report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/karma/subset_payload.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/karma/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/createdFile_1.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/createdFile_2.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/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.1}/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.1}/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.1}/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.1}/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.1}/tests/data/maven/list.lst +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-1.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-2.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/TEST-nested.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/reports/dummy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_by_confidence_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_from_file_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_scan_dryrun_results_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/TEST-UserTest.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result_chunk1.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/record_test_result_chunk2.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/minitest/test/example_test.rb +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/list.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/output-linux.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/output-windows.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/record_test_result-linux.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/record_test_result-windows.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/.gitignore +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/Program.cs +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/Test.cs +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/src/calc.csproj +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/nunit/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/packages/e2e/.gitkeep +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/playwright.config.ts +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_json.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_json_base.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/record_test_result_with_prefix.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report_with_json_base.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/playwright/report_with_prefix.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/prove/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/prove/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/pytest.ini +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/record_test_result_json.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/report.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/conftest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/funcs3_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/test_funcs1.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/pytest/tests/test_funcs2.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/dryrun.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/output_legacy.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_legacy_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/single-output.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/robot/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/rspec/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/rspec/rspec.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/vitest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/vitest/report.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/xctest/junit.xml +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/xctest/record_test_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/data/xctest/subset_result.json +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/helper.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/plugins/foo.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_cli_test_case.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_plugin.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_adb.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_ant.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_bazel.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_behave.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_codeceptjs.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_ctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cts.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cucumber.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_cypress.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_dotnet.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_file.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_go_test.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_googletest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_gradle.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_jasmine.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_jest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_karma.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_minitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_nunit.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_playwright.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_prove.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_pytest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_raw.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_robot.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_rspec.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_vitest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_runners/test_xctest.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_testpath.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/test_version.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_edit_distance.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_fail_fast_mode.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_file_name_pattern.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_git_log_parser.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_glob.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_gzipgen.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_http_client.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_link.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_logger.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_session.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_tracking.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_typer.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tests/utils/test_typer_types.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tools/README.md +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/tools/generate_reference.py +0 -0
- {smart_tests_cli-2.15.0 → smart_tests_cli-2.15.1}/uv.lock +0 -0
|
@@ -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
|
|
@@ -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
|
|
@@ -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.1}/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
|
}
|
|
@@ -179,11 +179,49 @@ class VerifyOidcCommandTest(CliTestCase):
|
|
|
179
179
|
|
|
180
180
|
@patch.dict(os.environ, {}, clear=True)
|
|
181
181
|
def test_oidc_missing_token(self):
|
|
182
|
-
"""No OIDC
|
|
182
|
+
"""No OIDC flow configured → usage error, exit 2."""
|
|
183
183
|
result = self.cli("verify", "--oidc")
|
|
184
184
|
self.assert_exit_code(result, 2)
|
|
185
185
|
self.assertIn("SMART_TESTS_OIDC_TOKEN", result.output)
|
|
186
186
|
|
|
187
|
+
gh_id_token = "gh-header.gh-payload.gh-signature"
|
|
188
|
+
gh_oidc_env = {
|
|
189
|
+
"SMART_TESTS_GITHUB_OIDC_TOKEN_AUTH": "1",
|
|
190
|
+
"SMART_TESTS_BASE_URL": base_url,
|
|
191
|
+
"ACTIONS_ID_TOKEN_REQUEST_URL": "http://gh-oidc.local/token",
|
|
192
|
+
"ACTIONS_ID_TOKEN_REQUEST_TOKEN": "runner-rt-token",
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@responses.activate
|
|
196
|
+
@patch.dict(os.environ, gh_oidc_env, clear=True)
|
|
197
|
+
def test_oidc_github_generic_no_token_export(self):
|
|
198
|
+
"""GitHub generic flow (no SMART_TESTS_OIDC_TOKEN): the CLI fetches a fresh id-token, presents
|
|
199
|
+
it as the bearer, and on 200 exports org/workspace but NOT the short-lived token."""
|
|
200
|
+
responses.add(
|
|
201
|
+
responses.GET,
|
|
202
|
+
"http://gh-oidc.local/token",
|
|
203
|
+
json={"value": self.gh_id_token},
|
|
204
|
+
status=200,
|
|
205
|
+
)
|
|
206
|
+
responses.add(
|
|
207
|
+
responses.POST,
|
|
208
|
+
self.oidc_verify_url,
|
|
209
|
+
json={"organization": "acme", "workspace": "prod"},
|
|
210
|
+
status=200,
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
result = self.cli("verify", "--oidc")
|
|
214
|
+
self.assert_success(result)
|
|
215
|
+
|
|
216
|
+
self.assertIn("export SMART_TESTS_ORGANIZATION='acme'", result.output)
|
|
217
|
+
self.assertIn("export SMART_TESTS_WORKSPACE='prod'", result.output)
|
|
218
|
+
# The GitHub token is minted per request, so it must not be exported for reuse.
|
|
219
|
+
self.assertNotIn("export SMART_TESTS_OIDC_TOKEN", result.output)
|
|
220
|
+
|
|
221
|
+
# The fetched GitHub id-token is the bearer presented to the verify endpoint.
|
|
222
|
+
verify_call = next(c for c in responses.calls if "/oidc/verify" in c.request.url)
|
|
223
|
+
self.assertEqual(verify_call.request.headers["Authorization"], f"Bearer {self.gh_id_token}")
|
|
224
|
+
|
|
187
225
|
|
|
188
226
|
def _make_jwt(claims: dict) -> str:
|
|
189
227
|
"""Build an unsigned-looking JWT (header.payload.signature) with the given claims payload."""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"events": [
|
|
3
|
+
{
|
|
4
|
+
"type": "case",
|
|
5
|
+
"testPath": [
|
|
6
|
+
{
|
|
7
|
+
"type": "class",
|
|
8
|
+
"name": "com.example.sample_app_maven.NestedDisplayNameTest"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "testcase",
|
|
12
|
+
"name": "methodIsCalled"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"duration": 0.001,
|
|
16
|
+
"status": 1,
|
|
17
|
+
"stdout": "",
|
|
18
|
+
"stderr": "",
|
|
19
|
+
"data": null
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"testRunner": "maven",
|
|
23
|
+
"group": "",
|
|
24
|
+
"noBuild": false,
|
|
25
|
+
"flavors": [],
|
|
26
|
+
"testSuite": ""
|
|
27
|
+
}
|
smart_tests_cli-2.15.1/tests/data/maven/reports-nested-displayname/TEST-nested-displayname.xml
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.example.sample_app_maven.NestedDisplayNameTest" time="0.001" tests="1" errors="0" skipped="0" failures="0">
|
|
3
|
+
<testcase name="methodIsCalled" classname="addFollowList" time="0.001" />
|
|
4
|
+
</testsuite>
|
|
@@ -4,8 +4,12 @@ import tempfile
|
|
|
4
4
|
from unittest import mock
|
|
5
5
|
|
|
6
6
|
import responses # type: ignore
|
|
7
|
+
from junitparser import JUnitXml # type: ignore
|
|
7
8
|
|
|
9
|
+
from smart_tests.commands.record.case_event import CaseEvent
|
|
8
10
|
from smart_tests.test_runners import maven
|
|
11
|
+
from smart_tests.testpath import FilePathNormalizer
|
|
12
|
+
from smart_tests.utils.java import junit5_nested_class_path_builder
|
|
9
13
|
from tests.cli_test_case import CliTestCase
|
|
10
14
|
|
|
11
15
|
|
|
@@ -106,47 +110,52 @@ class MavenTest(CliTestCase):
|
|
|
106
110
|
self.assert_success(result)
|
|
107
111
|
self.assert_record_tests_payload("record_test_result.json")
|
|
108
112
|
|
|
113
|
+
def _build_path_builder(self):
|
|
114
|
+
"""Builds the same wrapped path_builder that maven.py's record_tests wires up."""
|
|
115
|
+
default_path_builder = CaseEvent.default_path_builder(FilePathNormalizer())
|
|
116
|
+
return junit5_nested_class_path_builder(default_path_builder)
|
|
117
|
+
|
|
118
|
+
def _class_path_for_first_case(self, report_path):
|
|
119
|
+
path_builder = self._build_path_builder()
|
|
120
|
+
xml = JUnitXml.fromfile(str(self.test_files_dir.joinpath(report_path)))
|
|
121
|
+
suite = next(iter(xml))
|
|
122
|
+
case = next(iter(suite))
|
|
123
|
+
test_path = path_builder(case, suite, str(report_path))
|
|
124
|
+
return next(item["name"] for item in test_path if item["type"] == "class")
|
|
125
|
+
|
|
126
|
+
def test_junit5_nested_class_path_builder_strips_dollar_suffix(self):
|
|
127
|
+
"""@Nested class WITHOUT @DisplayName: Surefire keeps "Outer$Inner" as classname."""
|
|
128
|
+
class_name = self._class_path_for_first_case('reports/TEST-nested.xml')
|
|
129
|
+
self.assertEqual(class_name, "com.example.sample_app_maven.NestedTest")
|
|
130
|
+
self.assertNotIn("$", class_name)
|
|
131
|
+
|
|
132
|
+
def test_junit5_nested_class_path_builder_falls_back_to_suite_name(self):
|
|
133
|
+
"""@Nested class WITH @DisplayName: Surefire (>= ~3.5.x) drops the outer class from
|
|
134
|
+
`classname` entirely (e.g. classname="addFollowList"). We must fall back to the
|
|
135
|
+
enclosing <testsuite name="..."> attribute, which is always the outer class FQCN."""
|
|
136
|
+
class_name = self._class_path_for_first_case('reports-nested-displayname/TEST-nested-displayname.xml')
|
|
137
|
+
self.assertEqual(class_name, "com.example.sample_app_maven.NestedDisplayNameTest")
|
|
138
|
+
self.assertNotIn("$", class_name)
|
|
139
|
+
self.assertNotEqual(class_name, "addFollowList")
|
|
140
|
+
|
|
109
141
|
@responses.activate
|
|
110
142
|
@mock.patch.dict(os.environ, {"SMART_TESTS_TOKEN": CliTestCase.smart_tests_token})
|
|
111
143
|
def test_record_test_maven_with_nested_class(self):
|
|
112
144
|
"""Verify that class names containing $ (inner class marker) are processed correctly during test recording"""
|
|
113
|
-
# Test the path_builder function directly by extracting it from the maven module
|
|
114
|
-
from unittest import TestCase as UnitTestCase
|
|
115
|
-
from unittest import TestSuite as UnitTestSuite
|
|
116
|
-
|
|
117
|
-
# Extract the implementation from maven.py directly
|
|
118
|
-
# This gets the implementation without going through the CLI/Click command
|
|
119
|
-
def create_custom_path_builder(default_path_builder):
|
|
120
|
-
def path_builder(case, suite, report_file):
|
|
121
|
-
test_path = default_path_builder(case, suite, report_file)
|
|
122
|
-
return [{**item, "name": item["name"].split("$")[0]} if item["type"] == "class" else item for item in test_path]
|
|
123
|
-
return path_builder
|
|
124
|
-
|
|
125
|
-
# Mock the default path builder that would return a class with $ in it
|
|
126
|
-
def default_path_builder(case, suite, report_file):
|
|
127
|
-
return [{"type": "class", "name": "com.launchableinc.rocket_car_maven.NestedTest$InnerClass"}]
|
|
128
|
-
|
|
129
|
-
# Create our custom path builder function
|
|
130
|
-
custom_path_builder = create_custom_path_builder(default_path_builder)
|
|
131
|
-
|
|
132
|
-
# Test it directly with dummy inputs
|
|
133
|
-
test_case = UnitTestCase()
|
|
134
|
-
test_suite = UnitTestSuite()
|
|
135
|
-
report_file = "TEST-nested.xml"
|
|
136
|
-
|
|
137
|
-
# Call the path_builder
|
|
138
|
-
result_path = custom_path_builder(test_case, test_suite, report_file)
|
|
139
|
-
|
|
140
|
-
# Verify the result - it should remove everything after $
|
|
141
|
-
self.assertEqual(result_path[0]["name"], "com.launchableinc.rocket_car_maven.NestedTest")
|
|
142
|
-
self.assertNotIn("$", result_path[0]["name"])
|
|
143
|
-
|
|
144
|
-
# Now run the actual CLI command to ensure integration works
|
|
145
145
|
result = self.cli('record', 'tests', 'maven', '--session', self.session,
|
|
146
|
-
str(self.test_files_dir
|
|
147
|
-
str(self.test_files_dir
|
|
148
|
-
str(self.test_files_dir
|
|
146
|
+
str(self.test_files_dir.joinpath('reports/TEST-1.xml')),
|
|
147
|
+
str(self.test_files_dir.joinpath('reports/TEST-2.xml')),
|
|
148
|
+
str(self.test_files_dir.joinpath('reports/TEST-nested.xml')))
|
|
149
|
+
self.assert_success(result)
|
|
150
|
+
|
|
151
|
+
@responses.activate
|
|
152
|
+
@mock.patch.dict(os.environ, {"SMART_TESTS_TOKEN": CliTestCase.smart_tests_token})
|
|
153
|
+
def test_record_test_maven_with_nested_displayname_class(self):
|
|
154
|
+
"""Verify the bare-@DisplayName-as-classname bug (no dot, no $) is corrected end-to-end."""
|
|
155
|
+
result = self.cli('record', 'tests', 'maven', '--session', self.session,
|
|
156
|
+
str(self.test_files_dir.joinpath('reports-nested-displayname/TEST-nested-displayname.xml')))
|
|
149
157
|
self.assert_success(result)
|
|
158
|
+
self.assert_record_tests_payload("record_test_nested_displayname_result.json")
|
|
150
159
|
|
|
151
160
|
@responses.activate
|
|
152
161
|
@mock.patch.dict(os.environ, {"SMART_TESTS_TOKEN": CliTestCase.smart_tests_token})
|