smart-tests-cli 2.7.2__tar.gz → 2.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- smart_tests_cli-2.8.0/.github/workflows/pre-commit.yml +16 -0
- {smart_tests_cli-2.7.2/smart_tests_cli.egg-info → smart_tests_cli-2.8.0}/PKG-INFO +2 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/pyproject.toml +1 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/__main__.py +2 -0
- smart_tests_cli-2.8.0/smart_tests/commands/analyze/__init__.py +11 -0
- smart_tests_cli-2.8.0/smart_tests/commands/analyze/subset.py +428 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/compare/subsets.py +33 -3
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/inspect/subset.py +1 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/maven.py +67 -13
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/playwright.py +46 -2
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/testpath.py +25 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/http_client.py +15 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0/smart_tests_cli.egg-info}/PKG-INFO +2 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests_cli.egg-info/SOURCES.txt +16 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests_cli.egg-info/requires.txt +1 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/compare/test_subsets.py +2 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_session.py +38 -22
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jasmine/README.md +0 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/karma/subset_payload.json +1 -1
- smart_tests_cli-2.8.0/tests/data/maven/README.md +75 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.example.excludetestapplication.ExcludeTestApplicationTests.xml +87 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.launchable.demo.CalculatorTest.xml +91 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/TEST-com.launchable.demo.MixedTagsTest.xml +79 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/com.example.excludetestapplication.ExcludeTestApplicationTests.txt +4 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/com.launchable.demo.CalculatorTest.txt +4 -0
- smart_tests_cli-2.8.0/tests/data/maven/dryrun-test/target/surefire-reports/com.launchable.demo.MixedTagsTest.txt +4 -0
- smart_tests_cli-2.8.0/tests/data/playwright/record_test_result_with_json_base.json +49 -0
- smart_tests_cli-2.8.0/tests/data/playwright/record_test_result_with_prefix.json +49 -0
- smart_tests_cli-2.8.0/tests/data/playwright/report_with_json_base.json +64 -0
- smart_tests_cli-2.8.0/tests/data/playwright/report_with_prefix.json +64 -0
- smart_tests_cli-2.8.0/tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_maven.py +106 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_playwright.py +27 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_testpath.py +36 -1
- smart_tests_cli-2.8.0/tests/utils/__init__.py +0 -0
- smart_tests_cli-2.8.0/tests/utils/test_http_client.py +72 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/uv.lock +223 -178
- smart_tests_cli-2.7.2/tests/utils/test_http_client.py +0 -36
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.bazelrc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.bazelversion +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.dockerignore +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.editorconfig +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/release.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/workflows/bazel-test.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/workflows/e2e.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/workflows/publish.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/workflows/test.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.github/workflows/update_maven_install_json.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.gitignore +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.pre-commit-config.yaml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.python-version +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/.tagpr +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/CLAUDE.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/CONTRIBUTING.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/Dockerfile +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/LICENSE.txt +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/README.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/WORKSPACE +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/build-java.sh +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/renovate.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/scripts/update_docs.sh +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/setup.cfg +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/setup.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/app.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/README.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/argument.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/command.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/decorators.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/exceptions.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/option.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/parameter.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/args4p/typer/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/detect_flakes.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/gate.py +1 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/get/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/get/docs.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/inspect/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/inspect/model.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/attachment.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/build.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/case_event.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/commit.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/deployment.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/session.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/record/tests.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/stats/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/stats/test_sessions.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/subset.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/test_path_writer.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/update/alias.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/commands/verify.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/antora.yml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/0607-inference.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/0607-subset-creation.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/0607-training.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/507088cf-209d-4856-be3e-60477c166d92.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/confidence-curve.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/customer-example-curve.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/data-flow.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/demo.gif +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions-prioritized.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/eval-sessions.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/flavors.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/github-comment.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/groups-2-record-after.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/how-long-train-ml-model.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/icons/icon-vertical-three-dots-dark.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/illustion-run-whitelisted-tests-1.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-ignore-flakes-1.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-rotate-optimize-coverage.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/illustration-run-recently-failed-tests.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/in-place.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/link-to-results-example.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/model-training-evaluation-confidence-curves.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/new-code-existing-tests.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/object-model-june.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/object-model-v2.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/object-model.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/optimization-target.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/predictive-test-selection-observation-mode.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/prioritized-evaluation-session.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/pts-v2-working.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/recording-data.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately-detailed.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos-built-separately.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/recording-from-multiple-repos.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-41-20.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-44-15.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-07-25-at-20-45-10.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2023-08-22-at-22-50-49.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-1-48-30-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-04-29-at-2-14-11-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-4-50-56-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-06-32-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-09-04-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/screenshot-2024-05-15-at-5-21-37-pm.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/builds-dashboard.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/create-api-key.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/initial-settings.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/record-session.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/sending-data/test-session-interface.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/shift-left.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/single-session-compared.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/single-session-result.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/slack-desktop-with-app-messages.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-subset-formation-flow.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-builds-interface-v1png.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-cli-3.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests-monthly-time-saved.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_api_key_setting_20210613.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_invite_url_20220613.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/smart-tests_settings_20220613.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/subscription-ux.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/subset-creation.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/subset-exclude.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/subsetting-diagram-2x.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/target-line.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-insights-example.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-pyramid.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-runs-log.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-2.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-3.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition-4.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-definition.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-details-with-content.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-session-report-example.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/test-sessions-layout.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/testing-bottleneck-infinity.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/training-wheels.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/trends.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/triage-email-demo.avif +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/use-case-1.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/use-case-2.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/assets/images/zis-with-groups.png +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/nav.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/pages/getting-started.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/pages/index.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/partials/abbr.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/ROOT/partials/conditionals.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/branch.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/build.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/insight.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/object-model.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/organization.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/subset.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/test-session.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/test-suite.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/concepts/pages/workspace.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/intelligent-test-failure-diagnostics.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/faq.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/how-we-select-tests.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/observe-subset-behavior.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/choose-a-subset-optimization-target/choose-a-subset-optimization-target.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/choose-a-subset-optimization-target/smart-subset-optimization-target.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/request-and-run-a-subset-of-tests.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/subset-with-the-smart-tests-cli/combine-with-rule-based-test-selection.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/subset-with-the-smart-tests-cli/replace-static-parallel-suites-dynamic-parallel-subset.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/subset-with-the-smart-tests-cli/subset-with-the-smart-tests-cli.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/subset-with-the-smart-tests-cli/zero-input-subsetting/use-groups-to-split-subsets.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/request-and-run-a-subset-of-tests/subset-with-the-smart-tests-cli/zero-input-subsetting/zero-input-subsetting.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/smart-tests-extension-for-VS-code.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/use-cases-for-predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection/viewing-time-savings.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-notifications/github-app-for-test-sessions.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-notifications/test-notifications-via-slack.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-notifications.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-results-and-reports.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-suite-parallelization/parallelize-your-test-suite-with-the-smart-tests-cli.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/test-suite-parallelization.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/trends.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/features/pages/unhealthy-tests.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/ci-tool-integrations/github-actions.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/ci-tool-integrations.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/cli-reference.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/cli-version.txt +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/adb.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/ant.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/bazel.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/behave.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/ctest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/cucumber.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/cypress.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/dotnet-test.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/flutter.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/go-test.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/googletest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/gradle.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/jest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/karma.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/maven.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/minitest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/playwright.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/prove.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/pytest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/raw.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/robot.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/rspec.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/use-the-generic-file-based-runner-integration.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/vitest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations/xctest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/integrations.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/onboarding-guide/best-practices-checklist.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/onboarding-guide/optional-configurations.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/onboarding-guide.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/policies/data-examples.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/policies/data-privacy-and-protection.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/policies/security-policies.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/policies.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/c-plus-plus.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/dotnet.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/go.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/java.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/javascript.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/perl.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/python.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages/ruby.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-languages.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/appium.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/cucumber.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/googletest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/jest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/junit.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/minitest.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/nose.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/nunit.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/prove.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/robot.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/rspec.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/selenium.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks/testng.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/supported-test-frameworks.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/resources/pages/troubleshooting.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/getting-started/getting-started.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/getting-started/migration-to-github-oidc-auth.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/getting-started/use-the-cli-with-a-public-repository.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/getting-started/use-the-cli-with-docker-image.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/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.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/deal-with-shallow-clones.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds-from-multiple-repositories.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/record-builds.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-builds/run-under-restricted-networks.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-sessions/record-sessions.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/attach-log-files.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/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.7.2 → smart_tests_cli-2.8.0}/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.7.2 → smart_tests_cli-2.8.0}/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.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/record-test-results.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/record-test-results/separate-out-test-suites.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/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.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/send-data-to-smart-tests.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/docs/modules/send-data-to-smart-tests/pages/subset/subset-predictive-test-selection.adoc +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/jar/exe_deploy.jar +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/plugins/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/adb.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/ant.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/bazel.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/behave.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/codeceptjs.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/ctest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/cts.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/cucumber.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/cypress.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/dotnet.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/file.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/flutter.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/go_test.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/googletest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/gradle.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/jasmine.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/jest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/karma.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/minitest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/nunit.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/prove.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/pytest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/raw.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/robot.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/rspec.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/smart_tests.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/vitest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/test_runners/xctest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/authentication.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/ci_provider.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/commands.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/commit_ingester.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/common_tz.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/edit_distance.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/env_keys.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/exceptions.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/fail_fast_mode.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/file_name_pattern.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/git_log_parser.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/glob.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/gzipgen.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/input_snapshot.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/java.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/link.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/logger.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/no_build.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/sax.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/session.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/smart_tests_client.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/subprocess.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/tracking.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/utils/typer_types.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests/version.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests_cli.egg-info/entry_points.txt +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/smart_tests_cli.egg-info/top_level.txt +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/BUILD +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/BackgroundWorkStatus.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/BoundedExecutorService.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/ConcurrentConsumer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/GitFile.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionProgress.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/JSAsyncFileCollectionResponse.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/LaunchableHttpClient.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/Main.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/ProgressReporter.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/maven_install.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/BoundedExecutorServiceTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/ConcurrentConsumerTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/MainTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/ProgressReporterTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/test-runner/__main__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/converters/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/converters/test_converters.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_badcode.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_badinput.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_command.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_decorators.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_help.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_parameter.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/args4p/test_typer.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/cli_test_case.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/compare/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/inspect/test_model.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/inspect/test_subset.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_attachment.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_build.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_case_event.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_commit.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_deployment.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/record/test_tests.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/test_api_error.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/test_detect_flakes.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/test_gate.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/test_subset.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/test_verify.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/update/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/commands/update/test_alias.py +1 -1
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/adb/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/src/com/example/library/Cache.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ant/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/build_event.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/build_event_rest.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/bazel/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/behave/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/behave/reports/report.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/behave/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/broken_xml/broken.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/broken_xml/normal.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/codeceptjs/codeceptjs-result.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/codeceptjs/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ctest/ctest_list.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ctest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/ctest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cts/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cts/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cts/test_result.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/record_test_json_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/report/dummy.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cucumber/report/result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cypress/empty.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cypress/empty.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cypress/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cypress/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/cypress/test-result.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/dotnet/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/dotnet/test-result.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/file/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/file/record_test_result_custom_attribute.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/file/result.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/file/result_custom_attribute.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/flutter/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/flutter/report.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/git_log_ingest/sample.out +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/go_test/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/go_test/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/fail/output.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/fail/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/output_a.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/output_b.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/googletest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/gradle/recursion/expected.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jasmine/jasmine-test-results-v3.99.0.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jasmine/jasmine-test-results.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jasmine/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jasmine/subset_payload.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jest/junit.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/jest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/karma/README.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/karma/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/karma/sample-report.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/karma/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/createdFile_1.lst +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/createdFile_2.lst +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/e2e/E2ETest.java +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/list.lst +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/reports/TEST-1.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/reports/TEST-2.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/reports/TEST-nested.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/reports/dummy.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_by_confidence_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_from_file_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_scan_test_compile_lst_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/maven/subset_with_exclude_rules_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/minitest/test/example_test.rb +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/list.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/output-linux.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/output-windows.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/record_test_result-linux.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/record_test_result-windows.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/src/.gitignore +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/src/Program.cs +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/src/README.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/src/Test.cs +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/src/calc.csproj +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/nunit/subset_result.json +0 -0
- /smart_tests_cli-2.7.2/tests/data/pytest/tests/fooo/__init__.py → /smart_tests_cli-2.8.0/tests/data/playwright/packages/e2e/.gitkeep +0 -0
- /smart_tests_cli-2.7.2/tests/test_runners/__init__.py → /smart_tests_cli-2.8.0/tests/data/playwright/playwright.config.ts +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/playwright/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/playwright/report.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/playwright/report.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/prove/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/prove/report.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/pytest.ini +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/record_test_result_json.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/report.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/report.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/conftest.py +0 -0
- {smart_tests_cli-2.7.2/tests/utils → smart_tests_cli-2.8.0/tests/data/pytest/tests/fooo}/__init__.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/dryrun.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/output.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/single-output.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/robot/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/rspec/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/rspec/rspec.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/vitest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/vitest/report.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/xctest/junit.xml +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/xctest/record_test_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/data/xctest/subset_result.json +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/helper.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/plugins/foo.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_cli_test_case.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_plugin.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_adb.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_ant.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_bazel.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_behave.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_codeceptjs.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_ctest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_cts.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_cucumber.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_cypress.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_dotnet.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_file.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_go_test.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_googletest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_gradle.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_jasmine.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_jest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_karma.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_minitest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_nunit.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_prove.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_pytest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_raw.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_robot.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_rspec.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_vitest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_runners/test_xctest.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/test_version.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_authentication.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_edit_distance.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_fail_fast_mode.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_file_name_pattern.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_git_log_parser.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_glob.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_gzipgen.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_link.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_logger.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_session.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_typer.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tests/utils/test_typer_types.py +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tools/README.md +0 -0
- {smart_tests_cli-2.7.2 → smart_tests_cli-2.8.0}/tools/generate_reference.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: pre-commit
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
pre-commit:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v6
|
|
13
|
+
- uses: actions/setup-python@v6
|
|
14
|
+
with:
|
|
15
|
+
python-version-file: .python-version
|
|
16
|
+
- uses: pre-commit/action@v3.0.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart-tests-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.8.0
|
|
4
4
|
Summary: Smart Tests CLI
|
|
5
5
|
Author-email: CloudBees <support@cloudbees.com>
|
|
6
6
|
License: Apache Software License v2
|
|
@@ -19,6 +19,7 @@ Requires-Dist: more-itertools>=7.1.0
|
|
|
19
19
|
Requires-Dist: python-dateutil>=2.9
|
|
20
20
|
Requires-Dist: tabulate>=0.9
|
|
21
21
|
Requires-Dist: click<8.2,>=8.1
|
|
22
|
+
Requires-Dist: InquirerPy>=0.3.4
|
|
22
23
|
Dynamic: license-file
|
|
23
24
|
|
|
24
25
|
This is a CLI to interact with CloudBees Smart Tests.
|
|
@@ -6,6 +6,7 @@ from os.path import basename, dirname, join
|
|
|
6
6
|
|
|
7
7
|
from smart_tests.app import Application
|
|
8
8
|
from smart_tests.args4p.command import Group
|
|
9
|
+
from smart_tests.commands.analyze import analyze
|
|
9
10
|
from smart_tests.commands.compare import compare
|
|
10
11
|
from smart_tests.commands.detect_flakes import detect_flakes
|
|
11
12
|
from smart_tests.commands.gate import gate
|
|
@@ -24,6 +25,7 @@ cli.add_command(subset)
|
|
|
24
25
|
# TODO: main.add_command(split_subset)
|
|
25
26
|
cli.add_command(verify)
|
|
26
27
|
cli.add_command(inspect)
|
|
28
|
+
cli.add_command(analyze)
|
|
27
29
|
cli.add_command(stats)
|
|
28
30
|
cli.add_command(compare)
|
|
29
31
|
cli.add_command(detect_flakes)
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Annotated, List, Optional, Tuple, cast
|
|
3
|
+
|
|
4
|
+
import click
|
|
5
|
+
from InquirerPy import inquirer
|
|
6
|
+
from tabulate import tabulate
|
|
7
|
+
|
|
8
|
+
import smart_tests.args4p.typer as typer
|
|
9
|
+
from smart_tests import args4p
|
|
10
|
+
from smart_tests.app import Application
|
|
11
|
+
from smart_tests.commands.compare.subsets import _display_from_subset_ids, _from_subset_ids, get_column_width, wrap_data
|
|
12
|
+
from smart_tests.utils.smart_tests_client import SmartTestsClient
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _get_previous_subset_id(client: SmartTestsClient, subset_id: int) -> Optional[int]:
|
|
16
|
+
"""Fetch the previous subset ID for the given subset from the API.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
Previous subset ID if found, None otherwise
|
|
20
|
+
"""
|
|
21
|
+
try:
|
|
22
|
+
response = client.request("get", f"subset-analyze/{subset_id}/previous")
|
|
23
|
+
if response.status_code == HTTPStatus.NOT_FOUND:
|
|
24
|
+
return None
|
|
25
|
+
response.raise_for_status()
|
|
26
|
+
payload = response.json()
|
|
27
|
+
return payload.get("previousSubsettingId")
|
|
28
|
+
except Exception as e:
|
|
29
|
+
client.print_exception_and_recover(e, "Warning: failed to fetch previous subset ID")
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _get_pts_summary_for_expected_tests(
|
|
34
|
+
expected_tests: List[str],
|
|
35
|
+
expected_rows: List[Tuple[str, int, str, str, float]],
|
|
36
|
+
total_tests: int
|
|
37
|
+
) -> str:
|
|
38
|
+
"""Get summary of PTS effectiveness based on expected tests
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
expected_tests: Tests the user selected
|
|
42
|
+
expected_rows: List of (rank, after_order, test_name, reason, density) for expected tests
|
|
43
|
+
total_tests: Total number of tests in the subset
|
|
44
|
+
|
|
45
|
+
Example output:
|
|
46
|
+
✅ Tests Promoted:
|
|
47
|
+
- test_model.py promoted by 42 positions to rank #1
|
|
48
|
+
|
|
49
|
+
✅ Tests Prioritized:
|
|
50
|
+
- Expected test prioritized at rank #1 out of 67 (top 1.5%)
|
|
51
|
+
|
|
52
|
+
✅ Test Selection:
|
|
53
|
+
- PTS successfully picked expected tests with high confidence
|
|
54
|
+
- test_model.py: density 0.84 (very strong correlation)
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
if not expected_rows:
|
|
58
|
+
return "⚠ No results to analyze"
|
|
59
|
+
|
|
60
|
+
# Calculate metrics
|
|
61
|
+
top_50_percent = total_tests / 2
|
|
62
|
+
|
|
63
|
+
prioritized = [r for r in expected_rows if r[1] <= top_50_percent]
|
|
64
|
+
promoted = [r for r in expected_rows if isinstance(r[0], str) and r[0].startswith('↑')]
|
|
65
|
+
high_density = [r for r in expected_rows if r[4] > 0.6]
|
|
66
|
+
|
|
67
|
+
# Build summary sections
|
|
68
|
+
sections = []
|
|
69
|
+
|
|
70
|
+
# Tests Promoted section (only if one or more promoted) - SHOW FIRST (flashiest metric!)
|
|
71
|
+
if promoted:
|
|
72
|
+
sections.append("✅ Tests Promoted:")
|
|
73
|
+
|
|
74
|
+
for rank, after, test_name, reason, density in promoted:
|
|
75
|
+
short_name = test_name.split('=')[-1].split('/')[-1] if '=' in test_name else test_name.split('/')[-1]
|
|
76
|
+
promotion_amount = int(rank.replace('↑', ''))
|
|
77
|
+
sections.append(f"- {short_name} promoted by {promotion_amount} positions to rank #{after}")
|
|
78
|
+
|
|
79
|
+
# Tests Prioritized section (only if one or more in top 50%)
|
|
80
|
+
if prioritized:
|
|
81
|
+
if sections: # Add spacing if previous section exists
|
|
82
|
+
sections.append("")
|
|
83
|
+
sections.append("✅ Tests Prioritized:")
|
|
84
|
+
|
|
85
|
+
if len(expected_tests) == 1:
|
|
86
|
+
test_rank = prioritized[0][1]
|
|
87
|
+
percentage = (test_rank / total_tests) * 100
|
|
88
|
+
sections.append(f"- Expected test prioritized at rank #{test_rank} out of {total_tests} (top {percentage:.1f}%)")
|
|
89
|
+
else:
|
|
90
|
+
# Multiple tests
|
|
91
|
+
top_n = max(r[1] for r in prioritized)
|
|
92
|
+
percentage = (top_n / total_tests) * 100
|
|
93
|
+
count_text = f"{len(prioritized)}/{len(expected_tests)}"
|
|
94
|
+
sections.append(
|
|
95
|
+
f"- {count_text} of expected tests prioritized in top {top_n} "
|
|
96
|
+
f"out of {total_tests} (top {percentage:.1f}%)")
|
|
97
|
+
|
|
98
|
+
# Show individual rankings if helpful
|
|
99
|
+
for rank, after, test_name, reason, density in prioritized:
|
|
100
|
+
short_name = test_name.split('=')[-1].split('/')[-1] if '=' in test_name else test_name.split('/')[-1]
|
|
101
|
+
sections.append(f"- {short_name} ranked #{after}")
|
|
102
|
+
|
|
103
|
+
# Test Selection section (only if one or more have density > 0.6)
|
|
104
|
+
if high_density:
|
|
105
|
+
sections.append("")
|
|
106
|
+
sections.append("✅ Test Selection:")
|
|
107
|
+
sections.append("- PTS successfully picked expected tests with high confidence")
|
|
108
|
+
|
|
109
|
+
for rank, after, test_name, reason, density in high_density:
|
|
110
|
+
short_name = test_name.split('=')[-1].split('/')[-1] if '=' in test_name else test_name.split('/')[-1]
|
|
111
|
+
|
|
112
|
+
# Descriptive density labels
|
|
113
|
+
if density >= 0.8:
|
|
114
|
+
confidence = "very strong"
|
|
115
|
+
elif density >= 0.7:
|
|
116
|
+
confidence = "strong"
|
|
117
|
+
else:
|
|
118
|
+
confidence = "moderate"
|
|
119
|
+
|
|
120
|
+
sections.append(f"- {short_name}: density {density:.2f} ({confidence} confidence)")
|
|
121
|
+
|
|
122
|
+
return "\n".join(sections) if sections else "⚠ Expected tests were not prioritized, promoted, or had high density"
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _echo_pts_summary_for_expected_tests(
|
|
126
|
+
expected_tests: List[str],
|
|
127
|
+
rows: List[Tuple[str, int, str, str, float]],
|
|
128
|
+
total_tests: int
|
|
129
|
+
):
|
|
130
|
+
click.echo()
|
|
131
|
+
|
|
132
|
+
# Filter rows for expected tests only
|
|
133
|
+
# rows format: (rank, after_order, test_name, reason, density)
|
|
134
|
+
expected_rows = [
|
|
135
|
+
row for row in rows
|
|
136
|
+
if any(expected in row[2] for expected in expected_tests)
|
|
137
|
+
]
|
|
138
|
+
|
|
139
|
+
summary = _get_pts_summary_for_expected_tests(expected_tests=expected_tests, expected_rows=expected_rows,
|
|
140
|
+
total_tests=total_tests)
|
|
141
|
+
|
|
142
|
+
if summary:
|
|
143
|
+
click.echo()
|
|
144
|
+
click.echo(summary)
|
|
145
|
+
click.echo()
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _get_related_tests(
|
|
149
|
+
client: SmartTestsClient,
|
|
150
|
+
changed_files: List[str],
|
|
151
|
+
selected_tests: List[str],
|
|
152
|
+
promoted_tests_data: List[Tuple[str, int, str, str, float]]
|
|
153
|
+
) -> List[str]:
|
|
154
|
+
"""Get related test suggestions from backend.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
client: API client
|
|
158
|
+
changed_files: List of changed file paths
|
|
159
|
+
selected_tests: Tests user expected to be prioritized
|
|
160
|
+
promoted_tests_data: Tuples of (rank, promotion, test_name, reason, density)
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
List of suggested test names (max 3), or empty list on failure
|
|
164
|
+
"""
|
|
165
|
+
try:
|
|
166
|
+
# Limit to 500 tests
|
|
167
|
+
promoted_tests_payload = [
|
|
168
|
+
{
|
|
169
|
+
"testName": name,
|
|
170
|
+
"promotionAmount": promo,
|
|
171
|
+
"density": density
|
|
172
|
+
}
|
|
173
|
+
for rank, promo, name, reason, density in promoted_tests_data[:500]
|
|
174
|
+
]
|
|
175
|
+
|
|
176
|
+
payload = {
|
|
177
|
+
"changedFiles": sorted(changed_files),
|
|
178
|
+
"selectedTests": selected_tests,
|
|
179
|
+
"promotedTests": promoted_tests_payload
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
response = client.request(
|
|
183
|
+
"post",
|
|
184
|
+
"subset-analyze/suggest-related-tests",
|
|
185
|
+
payload=payload
|
|
186
|
+
)
|
|
187
|
+
response.raise_for_status()
|
|
188
|
+
return response.json().get("relatedTests", [])
|
|
189
|
+
|
|
190
|
+
except Exception:
|
|
191
|
+
return []
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def _analyze_subset(app: Application, subset_id: int, baseline_subset_id: Optional[int]):
|
|
195
|
+
client = SmartTestsClient(app=app)
|
|
196
|
+
|
|
197
|
+
# If baseline_subset_id not provided, try to fetch from API
|
|
198
|
+
if baseline_subset_id is None:
|
|
199
|
+
click.echo("→ Fetching previous subset ID...")
|
|
200
|
+
baseline_subset_id = _get_previous_subset_id(client, subset_id)
|
|
201
|
+
if baseline_subset_id is None:
|
|
202
|
+
click.secho(
|
|
203
|
+
"✗ No previous subset available for comparison. This appears to be the first subset.",
|
|
204
|
+
fg="red",
|
|
205
|
+
err=True
|
|
206
|
+
)
|
|
207
|
+
return
|
|
208
|
+
click.echo(f"✓ Found previous subset ID: {baseline_subset_id}")
|
|
209
|
+
|
|
210
|
+
click.echo("→ Fetching subset data...")
|
|
211
|
+
try:
|
|
212
|
+
rows, total, promoted, demoted, affected = _from_subset_ids(client, baseline_subset_id, subset_id)
|
|
213
|
+
except Exception as e:
|
|
214
|
+
click.secho(f"✗ Failed to fetch subset data: {e}", fg="red", err=True)
|
|
215
|
+
return
|
|
216
|
+
|
|
217
|
+
# Filter out DELETED tests - rows format: (rank, after_order, test_name, reason, density)
|
|
218
|
+
# After filtering: rank is str, after_order is int, density is float
|
|
219
|
+
rows_without_deleted = cast(
|
|
220
|
+
List[Tuple[str, int, str, str, float]],
|
|
221
|
+
[row for row in rows if row[0] != "DELETED"]
|
|
222
|
+
)
|
|
223
|
+
test_names = [row[2] for row in rows_without_deleted]
|
|
224
|
+
|
|
225
|
+
if not test_names:
|
|
226
|
+
click.secho("✗ No tests found in subset", fg="red", err=True)
|
|
227
|
+
return
|
|
228
|
+
|
|
229
|
+
click.echo(f"✓ Found {len(test_names)} tests in subset")
|
|
230
|
+
click.echo()
|
|
231
|
+
|
|
232
|
+
# Step 1: Select Expected Tests
|
|
233
|
+
click.echo("─" * 70)
|
|
234
|
+
click.echo("Select Expected Tests")
|
|
235
|
+
click.echo("─" * 70)
|
|
236
|
+
click.echo()
|
|
237
|
+
|
|
238
|
+
if affected:
|
|
239
|
+
click.echo("Code files modified:")
|
|
240
|
+
for file in sorted(affected):
|
|
241
|
+
click.echo(" - " + click.style(file, bold=True))
|
|
242
|
+
click.echo()
|
|
243
|
+
|
|
244
|
+
click.echo("Which tests do you expect PTS to prioritize?")
|
|
245
|
+
click.echo()
|
|
246
|
+
|
|
247
|
+
expected_tests = []
|
|
248
|
+
if inquirer.confirm(message="Select expected tests?", default=True).execute():
|
|
249
|
+
click.echo()
|
|
250
|
+
tab_space = click.style("Tab/Space", fg="cyan")
|
|
251
|
+
enter_key = click.style("Enter", fg="cyan")
|
|
252
|
+
click.echo(
|
|
253
|
+
f"Use {tab_space} to toggle selection, {enter_key} when done"
|
|
254
|
+
)
|
|
255
|
+
click.echo()
|
|
256
|
+
|
|
257
|
+
try:
|
|
258
|
+
expected_tests = inquirer.fuzzy(
|
|
259
|
+
message="Search and select expected tests:",
|
|
260
|
+
choices=test_names,
|
|
261
|
+
multiselect=True,
|
|
262
|
+
max_height="70%",
|
|
263
|
+
mandatory=True,
|
|
264
|
+
marker="✓ ",
|
|
265
|
+
marker_pl=" ",
|
|
266
|
+
).execute()
|
|
267
|
+
|
|
268
|
+
if expected_tests:
|
|
269
|
+
click.echo(f"\n✓ Selected {len(expected_tests)} expected test(s):")
|
|
270
|
+
for test in expected_tests:
|
|
271
|
+
click.echo(f" • {test}")
|
|
272
|
+
else:
|
|
273
|
+
click.echo("\nNo tests selected.")
|
|
274
|
+
except (KeyboardInterrupt, EOFError):
|
|
275
|
+
click.echo("\nSkipped test selection.")
|
|
276
|
+
expected_tests = []
|
|
277
|
+
|
|
278
|
+
# If user didn't select any tests, fallback to:
|
|
279
|
+
# smart_tests/commands/compare/subsets.py
|
|
280
|
+
if not expected_tests:
|
|
281
|
+
_display_from_subset_ids(rows, total, promoted, demoted, affected)
|
|
282
|
+
return
|
|
283
|
+
|
|
284
|
+
# Step 2: Show Comparison Results
|
|
285
|
+
rows_matching_expected_tests = [
|
|
286
|
+
(rank, after, test_name, reason, density)
|
|
287
|
+
for rank, after, test_name, reason, density in rows_without_deleted
|
|
288
|
+
if any(expected in test_name for expected in expected_tests)
|
|
289
|
+
]
|
|
290
|
+
|
|
291
|
+
click.echo()
|
|
292
|
+
click.echo("─" * 70)
|
|
293
|
+
click.echo("Comparison Results")
|
|
294
|
+
click.echo("─" * 70)
|
|
295
|
+
click.echo()
|
|
296
|
+
|
|
297
|
+
# Show filtered table
|
|
298
|
+
headers = ["Δ Rank", "Subset Rank", "Test Name", "Reason", "Density"]
|
|
299
|
+
column_width = get_column_width()
|
|
300
|
+
tabular_data = [
|
|
301
|
+
(rank, after, wrap_data(test_name, width=column_width), wrap_data(reason, width=column_width), density)
|
|
302
|
+
for rank, after, test_name, reason, density in rows_matching_expected_tests
|
|
303
|
+
]
|
|
304
|
+
click.echo(tabulate(tabular_data, headers=headers, tablefmt="simple"))
|
|
305
|
+
|
|
306
|
+
# Check if any expected tests were prioritized (top 50%) or promoted
|
|
307
|
+
top_50_percent = total / 2
|
|
308
|
+
any_prioritized_or_promoted = any(
|
|
309
|
+
rank.startswith('↑') or after <= top_50_percent
|
|
310
|
+
for rank, after, test_name, reason, density in rows_matching_expected_tests
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
if not any_prioritized_or_promoted:
|
|
314
|
+
# Try to suggest related tests using backend
|
|
315
|
+
suggestions = []
|
|
316
|
+
try:
|
|
317
|
+
# Build list of tests to send to backend for suggestions
|
|
318
|
+
# Include: (1) Top 50% tests, (2) All promoted tests
|
|
319
|
+
# This ensures backend sees both high-ranking tests and tests that moved significantly
|
|
320
|
+
top_50_percent = total / 2
|
|
321
|
+
|
|
322
|
+
# Collect tests to send to backend (use dict to deduplicate by test_name)
|
|
323
|
+
# Store: (rank_str, promotion_amount, test_name, reason, density, after_order)
|
|
324
|
+
tests_for_ai = {}
|
|
325
|
+
|
|
326
|
+
for rank, after, test_name, reason, density in rows_without_deleted:
|
|
327
|
+
# Calculate promotion amount
|
|
328
|
+
if isinstance(rank, str) and rank.startswith('↑'):
|
|
329
|
+
promotion_amount = int(rank.replace('↑', ''))
|
|
330
|
+
else:
|
|
331
|
+
promotion_amount = 0
|
|
332
|
+
|
|
333
|
+
# Include if in top 50% OR promoted
|
|
334
|
+
if after <= top_50_percent or promotion_amount > 0:
|
|
335
|
+
tests_for_ai[test_name] = (rank, promotion_amount, test_name, reason, density, after)
|
|
336
|
+
|
|
337
|
+
# Convert to list and sort by:
|
|
338
|
+
# 1. Promotion amount (descending) - most promoted first
|
|
339
|
+
# 2. Rank position (ascending) - lower rank is better
|
|
340
|
+
tests_with_order = list(tests_for_ai.values())
|
|
341
|
+
tests_with_order.sort(key=lambda x: (-x[1], x[5]))
|
|
342
|
+
|
|
343
|
+
# Remove after_order from tuples (backend expects 5-tuple)
|
|
344
|
+
promoted_tests_data: List[Tuple[str, int, str, str, float]] = [
|
|
345
|
+
(rank, promo, name, reason, density)
|
|
346
|
+
for rank, promo, name, reason, density, after in tests_with_order
|
|
347
|
+
]
|
|
348
|
+
|
|
349
|
+
# Limit to 500 tests for backend context
|
|
350
|
+
# Why limit the context?
|
|
351
|
+
# - LLMs doesn't perform well in very long contexts
|
|
352
|
+
# - 500 tests ≈ 12.5K tokens, well within limits
|
|
353
|
+
# - 500 limit should cover top 50% of test + all promoted tests in most large test suites (1000+ tests)
|
|
354
|
+
promoted_tests_data = promoted_tests_data[:500]
|
|
355
|
+
|
|
356
|
+
if affected and promoted_tests_data:
|
|
357
|
+
suggestions = _get_related_tests(
|
|
358
|
+
client=client,
|
|
359
|
+
changed_files=sorted(affected),
|
|
360
|
+
selected_tests=expected_tests,
|
|
361
|
+
promoted_tests_data=promoted_tests_data
|
|
362
|
+
)
|
|
363
|
+
except Exception:
|
|
364
|
+
pass
|
|
365
|
+
|
|
366
|
+
click.echo()
|
|
367
|
+
|
|
368
|
+
if not suggestions:
|
|
369
|
+
click.secho("⚠ Expected test(s) were not promoted in this instance.")
|
|
370
|
+
click.echo("- Make sure subset is created with related tests")
|
|
371
|
+
click.echo("- Or try modifying a different file, and try again")
|
|
372
|
+
click.echo()
|
|
373
|
+
|
|
374
|
+
if inquirer.confirm(
|
|
375
|
+
message="Would you like to search and inspect all tests?",
|
|
376
|
+
default=True
|
|
377
|
+
).execute():
|
|
378
|
+
_display_from_subset_ids(rows, total, promoted, demoted, affected)
|
|
379
|
+
|
|
380
|
+
return
|
|
381
|
+
|
|
382
|
+
# Show suggestions as selectable options
|
|
383
|
+
click.secho("Did you expect the following test(s) instead?", fg="cyan")
|
|
384
|
+
|
|
385
|
+
suggestion_choices = []
|
|
386
|
+
suggestion_map = {} # Map display text to test name
|
|
387
|
+
for suggestion in suggestions:
|
|
388
|
+
# Find the test in rows to show its stats
|
|
389
|
+
for rank, after, test_name, reason, density in rows_without_deleted:
|
|
390
|
+
if suggestion in test_name:
|
|
391
|
+
display_text = f"{test_name} (Rank #{after}, {rank}, Density {density:.2f})"
|
|
392
|
+
suggestion_choices.append(display_text)
|
|
393
|
+
suggestion_map[display_text] = test_name
|
|
394
|
+
break
|
|
395
|
+
|
|
396
|
+
suggestion_choices.append("No, search all tests instead")
|
|
397
|
+
|
|
398
|
+
selected_option = inquirer.select(
|
|
399
|
+
message="Select a test to see its summary:",
|
|
400
|
+
choices=suggestion_choices,
|
|
401
|
+
default=suggestion_choices[0] if suggestion_choices else None,
|
|
402
|
+
).execute()
|
|
403
|
+
|
|
404
|
+
if selected_option != "No, search all tests instead":
|
|
405
|
+
# User selected a suggested test - show AI summary for it
|
|
406
|
+
selected_test_name = suggestion_map[selected_option]
|
|
407
|
+
_echo_pts_summary_for_expected_tests([selected_test_name], rows_without_deleted, total)
|
|
408
|
+
return
|
|
409
|
+
else:
|
|
410
|
+
_display_from_subset_ids(rows, total, promoted, demoted, affected)
|
|
411
|
+
return
|
|
412
|
+
|
|
413
|
+
_echo_pts_summary_for_expected_tests(expected_tests, rows_without_deleted, total)
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
@args4p.command()
|
|
417
|
+
def subset(
|
|
418
|
+
app: Application,
|
|
419
|
+
subset_id: Annotated[int, typer.Argument(help="Subset ID to analyze")],
|
|
420
|
+
baseline_subset_id: Annotated[
|
|
421
|
+
Optional[int],
|
|
422
|
+
typer.Option(
|
|
423
|
+
"--baseline-subset-id",
|
|
424
|
+
help="Baseline subset ID to compare against (auto-detected if not provided)"
|
|
425
|
+
)
|
|
426
|
+
] = None,
|
|
427
|
+
):
|
|
428
|
+
_analyze_subset(app, subset_id, baseline_subset_id)
|
|
@@ -73,7 +73,7 @@ class SubsetResults(SubsetResultBases[SubsetResult]):
|
|
|
73
73
|
@classmethod
|
|
74
74
|
def load(cls, client: SmartTestsClient, subset_id: int) -> "SubsetResults":
|
|
75
75
|
try:
|
|
76
|
-
response = client.request("get", f"subset/{subset_id}")
|
|
76
|
+
response = client.request("get", f"subset/{subset_id}", timeout=(30, 300))
|
|
77
77
|
if response.status_code == HTTPStatus.NOT_FOUND:
|
|
78
78
|
raise click.ClickException(
|
|
79
79
|
f"Subset {subset_id} not found. Check subset ID and try again."
|
|
@@ -136,7 +136,12 @@ def subsets(
|
|
|
136
136
|
client = SmartTestsClient(app=app)
|
|
137
137
|
# for type check
|
|
138
138
|
assert subset_id_before is not None and subset_id_after is not None
|
|
139
|
-
|
|
139
|
+
rows, total, promoted, demoted, affected = _from_subset_ids(
|
|
140
|
+
client=client,
|
|
141
|
+
subset_id_before=subset_id_before,
|
|
142
|
+
subset_id_after=subset_id_after
|
|
143
|
+
)
|
|
144
|
+
_display_from_subset_ids(rows, total, promoted, demoted, affected)
|
|
140
145
|
return
|
|
141
146
|
|
|
142
147
|
# for type check
|
|
@@ -144,7 +149,14 @@ def subsets(
|
|
|
144
149
|
_from_files(file_before=file_before, file_after=file_after)
|
|
145
150
|
|
|
146
151
|
|
|
147
|
-
def _from_subset_ids(
|
|
152
|
+
def _from_subset_ids(
|
|
153
|
+
client: SmartTestsClient,
|
|
154
|
+
subset_id_before: int,
|
|
155
|
+
subset_id_after: int
|
|
156
|
+
) -> Tuple[List[Tuple[str, Union[int, str], str, str, Union[float, str]]], int, int, int, set]:
|
|
157
|
+
"""Compare two subsets, and return in format:
|
|
158
|
+
Tuple of (rows, total, promoted, demoted, affected)
|
|
159
|
+
"""
|
|
148
160
|
before_subset = SubsetResults.load(client, subset_id_before)
|
|
149
161
|
after_subset = SubsetResults.load(client, subset_id_after)
|
|
150
162
|
|
|
@@ -186,6 +198,24 @@ def _from_subset_ids(client: SmartTestsClient, subset_id_before: int, subset_id_
|
|
|
186
198
|
if after_subset.get_order(test_name) is None:
|
|
187
199
|
rows.append(("DELETED", '-', test_name, "", ""))
|
|
188
200
|
|
|
201
|
+
return rows, total, promoted, demoted, affected
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def _display_from_subset_ids(
|
|
205
|
+
rows: List[Tuple[str, Union[int, str], str, str, Union[float, str]]],
|
|
206
|
+
total: int,
|
|
207
|
+
promoted: int,
|
|
208
|
+
demoted: int,
|
|
209
|
+
affected: set
|
|
210
|
+
) -> None:
|
|
211
|
+
"""Display subset comparison results.
|
|
212
|
+
Args:
|
|
213
|
+
rows: List of tuples (rank, after_order, test_name, reason, density)
|
|
214
|
+
total: Total number of tests
|
|
215
|
+
promoted: Number of promoted tests
|
|
216
|
+
demoted: Number of demoted tests
|
|
217
|
+
affected: Set of affected file paths
|
|
218
|
+
"""
|
|
189
219
|
summary = f"""PTS subset change summary:
|
|
190
220
|
────────────────────────────────
|
|
191
221
|
-> {total} tests analyzed | {promoted} ↑ promoted | {demoted} ↓ demoted
|
|
@@ -112,7 +112,7 @@ def subset(
|
|
|
112
112
|
rest = []
|
|
113
113
|
client = SmartTestsClient(app=app)
|
|
114
114
|
try:
|
|
115
|
-
res = client.request("get", f"subset/{subset_id}")
|
|
115
|
+
res = client.request("get", f"subset/{subset_id}", timeout=(30, 300))
|
|
116
116
|
|
|
117
117
|
if res.status_code == HTTPStatus.NOT_FOUND:
|
|
118
118
|
click.secho(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import glob
|
|
2
2
|
import os
|
|
3
3
|
import re
|
|
4
|
+
import xml.etree.ElementTree as ET
|
|
4
5
|
from typing import Annotated, Dict, List
|
|
5
6
|
|
|
6
7
|
import click
|
|
@@ -50,6 +51,33 @@ def is_file(f: str) -> bool:
|
|
|
50
51
|
return False
|
|
51
52
|
|
|
52
53
|
|
|
54
|
+
def parse_surefire_reports() -> List[Dict[str, str]]:
|
|
55
|
+
"""Parse Maven Surefire XML reports from target/surefire-reports/."""
|
|
56
|
+
test_paths = []
|
|
57
|
+
report_pattern = '**/target/surefire-reports/TEST-*.xml'
|
|
58
|
+
report_files = glob.glob(report_pattern, recursive=True)
|
|
59
|
+
|
|
60
|
+
if not report_files:
|
|
61
|
+
return []
|
|
62
|
+
|
|
63
|
+
click.echo(f"Found {len(report_files)} surefire report(s)", err=True)
|
|
64
|
+
|
|
65
|
+
for report_file in report_files:
|
|
66
|
+
try:
|
|
67
|
+
tree = ET.parse(report_file)
|
|
68
|
+
root = tree.getroot()
|
|
69
|
+
classname = root.get('name')
|
|
70
|
+
|
|
71
|
+
if classname:
|
|
72
|
+
test_paths.append({"type": "class", "name": classname})
|
|
73
|
+
|
|
74
|
+
except ET.ParseError as e:
|
|
75
|
+
click.secho(f"Warning: Could not parse {report_file}: {e}", fg='yellow', err=True)
|
|
76
|
+
|
|
77
|
+
click.echo(f"Total tests discovered: {len(test_paths)}", err=True)
|
|
78
|
+
return test_paths
|
|
79
|
+
|
|
80
|
+
|
|
53
81
|
@smart_tests.subset
|
|
54
82
|
def subset(
|
|
55
83
|
client: Subset,
|
|
@@ -73,6 +101,10 @@ def subset(
|
|
|
73
101
|
multiple=True,
|
|
74
102
|
help="Exclude tests matching the given Python regular expression pattern. Can be specified multiple times."
|
|
75
103
|
)] = [],
|
|
104
|
+
is_scan_dryrun_results: Annotated[bool, typer.Option(
|
|
105
|
+
"--scan-dryrun-results",
|
|
106
|
+
help="Scan surefire reports generated by mvn test -DdryRun=true"
|
|
107
|
+
)] = False,
|
|
76
108
|
):
|
|
77
109
|
|
|
78
110
|
# Compile exclude rules
|
|
@@ -109,24 +141,45 @@ def subset(
|
|
|
109
141
|
if source_roots is None:
|
|
110
142
|
source_roots = []
|
|
111
143
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
click.secho(
|
|
116
|
-
"Warning: --test-compile-created-file is overridden by --scan-test-compile-lst",
|
|
117
|
-
fg='yellow', err=True)
|
|
118
|
-
|
|
119
|
-
pattern = os.path.join('**', 'createdFiles.lst')
|
|
120
|
-
files_to_read = glob.glob(pattern, recursive=True)
|
|
144
|
+
if is_scan_dryrun_results:
|
|
145
|
+
click.echo("Scanning Maven dry-run results...", err=True)
|
|
146
|
+
tests = parse_surefire_reports()
|
|
121
147
|
|
|
122
|
-
if not
|
|
148
|
+
if not tests:
|
|
123
149
|
click.secho(
|
|
124
|
-
"Warning: No
|
|
150
|
+
"Warning: No surefire reports found. Did you run 'mvn test -DdryRun=true'?",
|
|
125
151
|
fg='yellow',
|
|
126
|
-
err=True
|
|
152
|
+
err=True
|
|
153
|
+
)
|
|
154
|
+
click.secho(
|
|
155
|
+
"Please run: mvn test -DdryRun=true",
|
|
156
|
+
fg='cyan',
|
|
157
|
+
err=True
|
|
158
|
+
)
|
|
127
159
|
return
|
|
128
160
|
|
|
129
|
-
|
|
161
|
+
# Add tests to client (each test path must be a list)
|
|
162
|
+
for test in tests:
|
|
163
|
+
client.test_paths.append([test])
|
|
164
|
+
|
|
165
|
+
elif is_scan_test_compile_lst or test_compile_created_file:
|
|
166
|
+
if is_scan_test_compile_lst:
|
|
167
|
+
if len(test_compile_created_file) > 0:
|
|
168
|
+
click.echo(click.style(
|
|
169
|
+
"Warning: --test-compile-created-file is overridden by --scan-test-compile-lst", fg="yellow"),
|
|
170
|
+
err=True)
|
|
171
|
+
|
|
172
|
+
pattern = os.path.join('**', 'createdFiles.lst')
|
|
173
|
+
files_to_read = glob.glob(pattern, recursive=True)
|
|
174
|
+
|
|
175
|
+
if not files_to_read:
|
|
176
|
+
click.echo(click.style(
|
|
177
|
+
"Warning: No .lst files. Please run after executing `mvn test-compile`", fg="yellow"),
|
|
178
|
+
err=True)
|
|
179
|
+
return
|
|
180
|
+
elif test_compile_created_file:
|
|
181
|
+
files_to_read = list(test_compile_created_file)
|
|
182
|
+
|
|
130
183
|
for file in files_to_read:
|
|
131
184
|
with open(file, 'r') as f:
|
|
132
185
|
lines = f.readlines()
|
|
@@ -143,6 +196,7 @@ def subset(
|
|
|
143
196
|
path = file2test(line)
|
|
144
197
|
if path:
|
|
145
198
|
client.test_paths.append(path)
|
|
199
|
+
|
|
146
200
|
else:
|
|
147
201
|
for root in source_roots:
|
|
148
202
|
client.scan(root, '**/*', file2test)
|