smart-tests-cli 2.0.0rc2__tar.gz → 2.1.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.1.0/.bazelversion +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.editorconfig +1 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/e2e.yml +13 -14
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/publish.yml +24 -24
- smart_tests_cli-2.1.0/.github/workflows/test.yml +95 -0
- smart_tests_cli-2.1.0/Dockerfile +27 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/PKG-INFO +9 -9
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/README.md +3 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/WORKSPACE +4 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/pyproject.toml +8 -10
- smart_tests_cli-2.1.0/smart_tests/__main__.py +60 -0
- smart_tests_cli-2.1.0/smart_tests/app.py +67 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/README.md +102 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/__init__.py +13 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/argument.py +45 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/command.py +682 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/converters/__init__.py +75 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/decorators.py +98 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/exceptions.py +12 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/option.py +85 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/parameter.py +84 -0
- smart_tests_cli-2.1.0/smart_tests/args4p/typer/__init__.py +42 -0
- smart_tests_cli-2.1.0/smart_tests/commands/compare/__init__.py +11 -0
- smart_tests_cli-2.1.0/smart_tests/commands/compare/subsets.py +58 -0
- smart_tests_cli-2.1.0/smart_tests/commands/detect_flakes.py +100 -0
- smart_tests_cli-2.1.0/smart_tests/commands/inspect/__init__.py +13 -0
- smart_tests_cli-2.1.0/smart_tests/commands/inspect/model.py +52 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/inspect/subset.py +43 -46
- smart_tests_cli-2.1.0/smart_tests/commands/record/__init__.py +19 -0
- smart_tests_cli-2.1.0/smart_tests/commands/record/attachment.py +40 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/build.py +63 -49
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/case_event.py +8 -7
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/record/commit.py +37 -27
- smart_tests_cli-2.1.0/smart_tests/commands/record/session.py +124 -0
- smart_tests_cli-2.1.0/smart_tests/commands/record/tests.py +494 -0
- smart_tests_cli-2.1.0/smart_tests/commands/stats/__init__.py +11 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/stats/test_sessions.py +11 -10
- smart_tests_cli-2.1.0/smart_tests/commands/subset.py +570 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/test_path_writer.py +13 -28
- smart_tests_cli-2.1.0/smart_tests/commands/verify.py +153 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/jar/exe_deploy.jar +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/adb.py +2 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/ant.py +6 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/bazel.py +50 -14
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/behave.py +8 -5
- smart_tests_cli-2.1.0/smart_tests/test_runners/codeceptjs.py +33 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/ctest.py +11 -6
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cts.py +9 -5
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cucumber.py +10 -7
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/cypress.py +8 -5
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/dotnet.py +12 -8
- smart_tests_cli-2.1.0/smart_tests/test_runners/file.py +20 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/flutter.py +23 -21
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/go_test.py +9 -4
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/googletest.py +2 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/gradle.py +15 -8
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/jest.py +8 -4
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/maven.py +16 -9
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/minitest.py +5 -2
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/nunit.py +9 -5
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/playwright.py +14 -8
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/prove.py +9 -4
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/pytest.py +78 -30
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/raw.py +24 -10
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/robot.py +10 -4
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/rspec.py +1 -0
- smart_tests_cli-2.1.0/smart_tests/test_runners/smart_tests.py +235 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/vitest.py +12 -5
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/xctest.py +14 -7
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/authentication.py +8 -6
- smart_tests_cli-2.1.0/smart_tests/utils/commands.py +14 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/commit_ingester.py +2 -2
- smart_tests_cli-2.1.0/smart_tests/utils/edit_distance.py +11 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/exceptions.py +12 -0
- smart_tests_cli-2.1.0/smart_tests/utils/fail_fast_mode.py +100 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/http_client.py +3 -35
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/java.py +5 -2
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/link.py +82 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/logger.py +1 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/sax.py +2 -2
- smart_tests_cli-2.1.0/smart_tests/utils/session.py +92 -0
- smart_tests_cli-2.0.0rc2/smart_tests/utils/launchable_client.py → smart_tests_cli-2.1.0/smart_tests/utils/smart_tests_client.py +42 -13
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/tracking.py +4 -11
- smart_tests_cli-2.1.0/smart_tests/utils/typer_types.py +241 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/version.py +1 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/PKG-INFO +9 -9
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/SOURCES.txt +57 -7
- smart_tests_cli-2.1.0/smart_tests_cli.egg-info/requires.txt +7 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/BUILD +2 -1
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +59 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +37 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +271 -119
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +20 -9
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +36 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +14 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/GitFile.java +81 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +7 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +1 -4
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/ProgressReportingConsumer.java +74 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +18 -0
- smart_tests_cli-2.1.0/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +26 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/maven_install.json +112 -5
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +3 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/BUILD +6 -2
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +55 -35
- smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +97 -0
- smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +20 -0
- smart_tests_cli-2.1.0/src/test/java/com/launchableinc/ingest/commits/ProgressReportingConsumerTest.java +45 -0
- smart_tests_cli-2.1.0/tests/args4p/converters/test_converters.py +204 -0
- smart_tests_cli-2.1.0/tests/args4p/test_badcode.py +269 -0
- smart_tests_cli-2.1.0/tests/args4p/test_badinput.py +280 -0
- smart_tests_cli-2.1.0/tests/args4p/test_command.py +334 -0
- smart_tests_cli-2.1.0/tests/args4p/test_decorators.py +295 -0
- smart_tests_cli-2.1.0/tests/args4p/test_help.py +66 -0
- smart_tests_cli-2.1.0/tests/args4p/test_parameter.py +22 -0
- smart_tests_cli-2.1.0/tests/args4p/test_typer.py +26 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/cli_test_case.py +27 -14
- smart_tests_cli-2.1.0/tests/commands/compare/test_subsets.py +155 -0
- smart_tests_cli-2.1.0/tests/commands/inspect/test_model.py +41 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_attachment.py +1 -13
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_build.py +201 -8
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_commit.py +1 -1
- smart_tests_cli-2.1.0/tests/commands/record/test_session.py +208 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_tests.py +26 -55
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_api_error.py +51 -94
- smart_tests_cli-2.1.0/tests/commands/test_detect_flakes.py +101 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_subset.py +72 -183
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/test_verify.py +9 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/adb/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/subset_result.json +1 -0
- smart_tests_cli-2.1.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.log +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +4 -2
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_result.json +3 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_with_build_event_json_result.json +3 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +3 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/subset_result.json +1 -0
- smart_tests_cli-2.1.0/tests/data/codeceptjs/codeceptjs-result.xml +18 -0
- smart_tests_cli-2.1.0/tests/data/codeceptjs/record_test_result.json +53 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_by_absolute_time_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_by_confidence_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_from_file_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/subset_scan_test_compile_lst_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/subset_result.json +1 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/plugins/foo.py +5 -3
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_plugin.py +3 -4
- smart_tests_cli-2.1.0/tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_adb.py +1 -15
- smart_tests_cli-2.1.0/tests/test_runners/test_ant.py +24 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_bazel.py +6 -68
- smart_tests_cli-2.1.0/tests/test_runners/test_behave.py +30 -0
- smart_tests_cli-2.1.0/tests/test_runners/test_codeceptjs.py +218 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_ctest.py +4 -37
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_cts.py +3 -29
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_cucumber.py +3 -29
- smart_tests_cli-2.1.0/tests/test_runners/test_cypress.py +45 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_dotnet.py +6 -44
- smart_tests_cli-2.1.0/tests/test_runners/test_go_test.py +40 -0
- smart_tests_cli-2.1.0/tests/test_runners/test_googletest.py +52 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_gradle.py +9 -73
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_jest.py +6 -41
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_maven.py +7 -78
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_minitest.py +8 -64
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_nunit.py +4 -50
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_playwright.py +4 -39
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_prove.py +1 -13
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_pytest.py +66 -40
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_raw.py +7 -51
- smart_tests_cli-2.1.0/tests/test_runners/test_robot.py +31 -0
- smart_tests_cli-2.1.0/tests/test_runners/test_rspec.py +17 -0
- smart_tests_cli-2.1.0/tests/test_runners/test_vitest.py +15 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_runners/test_xctest.py +2 -13
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_testpath.py +0 -4
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_version.py +3 -3
- smart_tests_cli-2.1.0/tests/utils/__init__.py +0 -0
- smart_tests_cli-2.1.0/tests/utils/test_edit_distance.py +15 -0
- smart_tests_cli-2.1.0/tests/utils/test_fail_fast_mode.py +40 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_gzipgen.py +0 -1
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_http_client.py +4 -19
- smart_tests_cli-2.1.0/tests/utils/test_link.py +98 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_logger.py +2 -2
- smart_tests_cli-2.1.0/tests/utils/test_session.py +48 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_typer.py +2 -2
- smart_tests_cli-2.1.0/tests/utils/test_typer_types.py +251 -0
- smart_tests_cli-2.1.0/tools/README.md +70 -0
- smart_tests_cli-2.1.0/tools/generate_reference.py +80 -0
- smart_tests_cli-2.1.0/uv.lock +568 -0
- smart_tests_cli-2.0.0rc2/.bazelversion +0 -1
- smart_tests_cli-2.0.0rc2/.github/workflows/test.yml +0 -95
- smart_tests_cli-2.0.0rc2/Dockerfile +0 -26
- smart_tests_cli-2.0.0rc2/smart_tests/__main__.py +0 -171
- smart_tests_cli-2.0.0rc2/smart_tests/app.py +0 -11
- smart_tests_cli-2.0.0rc2/smart_tests/commands/helper.py +0 -79
- smart_tests_cli-2.0.0rc2/smart_tests/commands/inspect/__init__.py +0 -7
- smart_tests_cli-2.0.0rc2/smart_tests/commands/record/__init__.py +0 -12
- smart_tests_cli-2.0.0rc2/smart_tests/commands/record/attachment.py +0 -43
- smart_tests_cli-2.0.0rc2/smart_tests/commands/record/session.py +0 -226
- smart_tests_cli-2.0.0rc2/smart_tests/commands/record/tests.py +0 -622
- smart_tests_cli-2.0.0rc2/smart_tests/commands/stats/__init__.py +0 -7
- smart_tests_cli-2.0.0rc2/smart_tests/commands/subset.py +0 -588
- smart_tests_cli-2.0.0rc2/smart_tests/commands/verify.py +0 -152
- smart_tests_cli-2.0.0rc2/smart_tests/test_runners/file.py +0 -57
- smart_tests_cli-2.0.0rc2/smart_tests/test_runners/smart_tests.py +0 -154
- smart_tests_cli-2.0.0rc2/smart_tests/utils/dynamic_commands.py +0 -296
- smart_tests_cli-2.0.0rc2/smart_tests/utils/test_runner_registry.py +0 -117
- smart_tests_cli-2.0.0rc2/smart_tests/utils/typer_types.py +0 -219
- smart_tests_cli-2.0.0rc2/smart_tests_cli.egg-info/requires.txt +0 -7
- smart_tests_cli-2.0.0rc2/tests/commands/record/test_session.py +0 -271
- smart_tests_cli-2.0.0rc2/tests/commands/test_helper.py +0 -63
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_ant.py +0 -47
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_behave.py +0 -56
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_cypress.py +0 -81
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_go_test.py +0 -76
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_googletest.py +0 -100
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_robot.py +0 -67
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_rspec.py +0 -29
- smart_tests_cli-2.0.0rc2/tests/test_runners/test_vitest.py +0 -28
- smart_tests_cli-2.0.0rc2/tests/utils/test_link.py +0 -46
- smart_tests_cli-2.0.0rc2/uv.lock +0 -573
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.bazelrc +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/release.yml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/bazel-test.yml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.github/workflows/update_maven_install_json.yml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.gitignore +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.pre-commit-config.yaml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.python-version +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/.tagpr +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/CONTRIBUTING.md +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/LICENSE.txt +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/build-java.sh +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/renovate.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/setup.cfg +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/setup.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/commands/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/plugins/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/test_runners/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/testpath.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/ci_provider.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/common_tz.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/env_keys.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/file_name_pattern.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/git_log_parser.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/glob.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/gzipgen.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/no_build.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests/utils/subprocess.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/dependency_links.txt +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/entry_points.txt +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/smart_tests_cli.egg-info/top_level.txt +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/BUILD +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/test-runner/__main__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/commands → smart_tests_cli-2.1.0/tests/args4p}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/commands/inspect → smart_tests_cli-2.1.0/tests/args4p/converters}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/commands/record → smart_tests_cli-2.1.0/tests/commands}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/data/pytest/tests/fooo → smart_tests_cli-2.1.0/tests/commands/compare}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/inspect/test_subset.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/test_runners → smart_tests_cli-2.1.0/tests/commands/record}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/commands/record/test_case_event.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/HelloWorld.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/HelloWorldTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/library/Cache.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ant/src/com/example/library/CacheTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/build_event.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/bazel/build_event_rest.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/behave/reports/report.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/broken_xml/broken.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/broken_xml/normal.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/Testing/latest/Test.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/ctest_list.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/ctest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cts/test_result.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo/bar.feature +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/foo-bar.feature +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/record_test_json_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/dummy.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cucumber/report/result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/empty.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/empty.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/cypress/test-result.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/dotnet/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/dotnet/test-result.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/flutter/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/flutter/report.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/git_log_ingest/sample.out +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/reportv1/reportv1.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/go_test/reportv2/reportv2.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/fail/output.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/fail/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/output_a.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/output_b.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/googletest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/recursion/expected.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/junit.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/jest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/createdFile_1.lst +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/createdFile_2.lst +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/list.lst +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-1.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-2.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/TEST-nested.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/maven/reports/dummy.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/TEST-UserTest.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result_chunk1.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/record_test_result_chunk2.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/subset_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/minitest/test/example_test.rb +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/list.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/output-linux.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/output-windows.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/record_test_result-linux.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/record_test_result-windows.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/.gitignore +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/Program.cs +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/README.md +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/Test.cs +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/nunit/src/calc.csproj +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/record_test_result_with_json.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/report.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/playwright/report.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/prove/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/prove/report.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/pytest.ini +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/record_test_result_json.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/report.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/report.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/conftest.py +0 -0
- {smart_tests_cli-2.0.0rc2/tests/utils → smart_tests_cli-2.1.0/tests/data/pytest/tests/fooo}/__init__.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/funcs3_test.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/test_funcs1.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/pytest/tests/test_funcs2.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/dryrun.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/output.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/robot/single-output.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/rspec/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/rspec/rspec.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/vitest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/vitest/report.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/junit.xml +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/data/xctest/record_test_result.json +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/helper.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/test_cli_test_case.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_authentication.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_file_name_pattern.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_git_log_parser.py +0 -0
- {smart_tests_cli-2.0.0rc2 → smart_tests_cli-2.1.0}/tests/utils/test_glob.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7.6.1
|
|
@@ -5,7 +5,6 @@ on:
|
|
|
5
5
|
branches: [main, smart-tests] # smart-tests branch temporarily added for Smart Tests CLI development
|
|
6
6
|
workflow_dispatch:
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
env:
|
|
10
9
|
SMART_TESTS_DEBUG: 1
|
|
11
10
|
SMART_TESTS_REPORT_ERROR: 1
|
|
@@ -26,7 +25,7 @@ jobs:
|
|
|
26
25
|
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
|
|
27
26
|
with:
|
|
28
27
|
java-version: 8
|
|
29
|
-
distribution:
|
|
28
|
+
distribution: "temurin"
|
|
30
29
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5
|
|
31
30
|
with:
|
|
32
31
|
go-version: 1.24
|
|
@@ -46,17 +45,17 @@ jobs:
|
|
|
46
45
|
env:
|
|
47
46
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
48
47
|
- name: "bazel: Record build"
|
|
49
|
-
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --
|
|
48
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=../.. --source cli=../../..'
|
|
50
49
|
env:
|
|
51
50
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
52
51
|
working-directory: examples/bazel/java
|
|
53
52
|
- name: "bazel: Record session"
|
|
54
|
-
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --
|
|
53
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "bazel" > bazel-test-session.txt'
|
|
55
54
|
env:
|
|
56
55
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
57
56
|
working-directory: examples/bazel/java
|
|
58
57
|
- name: "bazel: Subset"
|
|
59
|
-
run: bazelisk query 'tests(//...)' | smart-tests subset bazel --
|
|
58
|
+
run: bazelisk query 'tests(//...)' | smart-tests subset bazel --session $(cat bazel-test-session.txt) --target 30% > subset.txt
|
|
60
59
|
env:
|
|
61
60
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
62
61
|
working-directory: examples/bazel/java
|
|
@@ -64,7 +63,7 @@ jobs:
|
|
|
64
63
|
run: bazelisk test $(cat subset.txt)
|
|
65
64
|
working-directory: examples/bazel/java
|
|
66
65
|
- name: "bazel: Record test results"
|
|
67
|
-
run: smart-tests record
|
|
66
|
+
run: smart-tests record tests bazel --session $(cat bazel-test-session.txt) .
|
|
68
67
|
if: always()
|
|
69
68
|
env:
|
|
70
69
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
@@ -79,17 +78,17 @@ jobs:
|
|
|
79
78
|
env:
|
|
80
79
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
81
80
|
- name: "go: Record build"
|
|
82
|
-
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --
|
|
81
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
|
|
83
82
|
env:
|
|
84
83
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
85
84
|
working-directory: examples/go
|
|
86
85
|
- name: "go: Record session"
|
|
87
|
-
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --
|
|
86
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "go-test" > go-test-session.txt'
|
|
88
87
|
env:
|
|
89
88
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
90
89
|
working-directory: examples/go
|
|
91
90
|
- name: "go: Subset"
|
|
92
|
-
run: go test -list="Test|Example" ./... | smart-tests subset go-test --
|
|
91
|
+
run: go test -list="Test|Example" ./... | smart-tests subset go-test --session $(cat go-test-session.txt) --confidence 80% > smart-tests-subset.txt
|
|
93
92
|
env:
|
|
94
93
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
95
94
|
working-directory: examples/go
|
|
@@ -97,7 +96,7 @@ jobs:
|
|
|
97
96
|
run: go test -run $(cat smart-tests-subset.txt) ./... -v 2>&1 | go-junit-report -set-exit-code > report.xml
|
|
98
97
|
working-directory: examples/go
|
|
99
98
|
- name: "go: Record test results"
|
|
100
|
-
run: smart-tests record
|
|
99
|
+
run: smart-tests record tests go-test --session $(cat go-test-session.txt) report.xml
|
|
101
100
|
if: always()
|
|
102
101
|
env:
|
|
103
102
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
@@ -108,17 +107,17 @@ jobs:
|
|
|
108
107
|
env:
|
|
109
108
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
110
109
|
- name: "gradle: Record build"
|
|
111
|
-
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --
|
|
110
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
|
|
112
111
|
env:
|
|
113
112
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
114
113
|
working-directory: examples/gradle
|
|
115
114
|
- name: "gradle: Record session"
|
|
116
|
-
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --
|
|
115
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "gradle" > gradle-test-session.txt'
|
|
117
116
|
env:
|
|
118
117
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
119
118
|
working-directory: examples/gradle
|
|
120
119
|
- name: "gradle: Subset"
|
|
121
|
-
run: smart-tests subset gradle --
|
|
120
|
+
run: smart-tests subset gradle --session $(cat gradle-test-session.txt) --target 80% src/test/java > smart-tests-subset.txt
|
|
122
121
|
env:
|
|
123
122
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
124
123
|
working-directory: examples/gradle
|
|
@@ -126,7 +125,7 @@ jobs:
|
|
|
126
125
|
run: ./gradlew test $(cat smart-tests-subset.txt)
|
|
127
126
|
working-directory: examples/gradle
|
|
128
127
|
- name: "gradle: Record test results"
|
|
129
|
-
run: smart-tests record
|
|
128
|
+
run: smart-tests record tests gradle --session $(cat gradle-test-session.txt) build/test-results/test
|
|
130
129
|
if: always()
|
|
131
130
|
env:
|
|
132
131
|
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
@@ -7,10 +7,10 @@ on:
|
|
|
7
7
|
workflow_dispatch:
|
|
8
8
|
push:
|
|
9
9
|
branches:
|
|
10
|
-
|
|
10
|
+
- main
|
|
11
11
|
|
|
12
12
|
env:
|
|
13
|
-
IMAGE_NAME: cloudbees/smart-tests
|
|
13
|
+
IMAGE_NAME: cloudbees/smart-tests-cli
|
|
14
14
|
|
|
15
15
|
jobs:
|
|
16
16
|
tagpr:
|
|
@@ -22,11 +22,11 @@ jobs:
|
|
|
22
22
|
outputs:
|
|
23
23
|
tag: ${{ steps.run-tagpr.outputs.tag }}
|
|
24
24
|
steps:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
26
|
+
- id: run-tagpr
|
|
27
|
+
uses: Songmu/tagpr@7191605433b03e11b313dbbc0efb80185170de4b # v1.9.0
|
|
28
|
+
env:
|
|
29
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
30
30
|
|
|
31
31
|
pypi:
|
|
32
32
|
needs: tagpr
|
|
@@ -35,22 +35,22 @@ jobs:
|
|
|
35
35
|
runs-on: ubuntu-22.04
|
|
36
36
|
|
|
37
37
|
steps:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
with:
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
- name: Install uv
|
|
42
|
+
uses: astral-sh/setup-uv@v3
|
|
43
|
+
|
|
44
|
+
- name: Build package
|
|
45
|
+
run: uv build
|
|
46
|
+
- name: Publish to PyPI
|
|
47
|
+
run: uv publish --token ${{ secrets.SMART_TESTS_PYPI_API_TOKEN }}
|
|
48
|
+
- name: Actions for Discord
|
|
49
|
+
uses: Ilshidur/action-discord@0.3.2
|
|
50
|
+
env:
|
|
51
|
+
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
52
|
+
with:
|
|
53
|
+
args: "Smart Tests CLI ${{ needs.tagpr.outputs.tag }} is released! https://github.com/launchableinc/cli/releases/tag/${{ needs.tagpr.outputs.tag }}"
|
|
54
54
|
|
|
55
55
|
docker:
|
|
56
56
|
name: Push Docker image to Docker Hub
|
|
@@ -88,7 +88,7 @@ jobs:
|
|
|
88
88
|
tags: ${{ env.IMAGE_NAME }}:${{ needs.tagpr.outputs.tag }}
|
|
89
89
|
|
|
90
90
|
- name: Generate artifact attestation
|
|
91
|
-
uses: actions/attest-build-provenance@
|
|
91
|
+
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
|
|
92
92
|
with:
|
|
93
93
|
subject-name: index.docker.io/${{ env.IMAGE_NAME }}
|
|
94
94
|
subject-digest: ${{ steps.push.outputs.digest }}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Test workflow for the Smart Tests CLI
|
|
2
|
+
# Runs tests, linting, type checking, and build verification
|
|
3
|
+
|
|
4
|
+
name: Test
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
push:
|
|
9
|
+
branches: [main, smart-tests]
|
|
10
|
+
paths-ignore:
|
|
11
|
+
- "WORKSPACE"
|
|
12
|
+
- "src/**"
|
|
13
|
+
pull_request:
|
|
14
|
+
paths-ignore:
|
|
15
|
+
- "WORKSPACE"
|
|
16
|
+
- "src/**"
|
|
17
|
+
schedule:
|
|
18
|
+
# This job runs at 00:00 JST every day.
|
|
19
|
+
- cron: "0 9 * * *"
|
|
20
|
+
|
|
21
|
+
env:
|
|
22
|
+
SMART_TESTS_ORGANIZATION: "launchableinc"
|
|
23
|
+
SMART_TESTS_WORKSPACE: "cli"
|
|
24
|
+
GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }}
|
|
25
|
+
GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
id-token: write
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
build:
|
|
33
|
+
runs-on: ${{ matrix.os }}
|
|
34
|
+
strategy:
|
|
35
|
+
matrix:
|
|
36
|
+
os: [ubuntu-22.04, windows-latest]
|
|
37
|
+
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/checkout@v4
|
|
40
|
+
with:
|
|
41
|
+
fetch-depth: 0
|
|
42
|
+
|
|
43
|
+
- name: Install uv
|
|
44
|
+
uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
|
|
45
|
+
with:
|
|
46
|
+
enable-cache: true
|
|
47
|
+
cache-dependency-glob: "uv.lock"
|
|
48
|
+
|
|
49
|
+
- name: Set up JDK 1.8
|
|
50
|
+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
|
51
|
+
with:
|
|
52
|
+
java-version: 8
|
|
53
|
+
distribution: "temurin"
|
|
54
|
+
|
|
55
|
+
- name: Install dependencies
|
|
56
|
+
run: uv sync --dev
|
|
57
|
+
|
|
58
|
+
- name: Test package build
|
|
59
|
+
run: uv build
|
|
60
|
+
|
|
61
|
+
- name: Type check
|
|
62
|
+
run: uv run poe type
|
|
63
|
+
|
|
64
|
+
- name: Lint with flake8
|
|
65
|
+
run: uv run poe lint
|
|
66
|
+
- name: Pull request validation
|
|
67
|
+
run: |
|
|
68
|
+
# Install Smart Tests CLI from this repo's code as a global tool
|
|
69
|
+
uv tool install .
|
|
70
|
+
|
|
71
|
+
set -x
|
|
72
|
+
|
|
73
|
+
smart-tests verify
|
|
74
|
+
|
|
75
|
+
# Tell Smart Tests about the build you are producing and testing
|
|
76
|
+
smart-tests record build --build ${GITHUB_RUN_ID}
|
|
77
|
+
|
|
78
|
+
smart-tests record session --build ${GITHUB_RUN_ID} --test-suite 'python-unittest' --flavor os=${{ matrix.os }} --flavor python=$(cat .python-version) > session.txt
|
|
79
|
+
|
|
80
|
+
# Find 25% of the relevant tests to run for this change
|
|
81
|
+
find tests -name test_*.py | grep -v tests/data | smart-tests subset file --session $(cat session.txt) --target 25% --rest smart-tests-remainder.txt > subset.txt
|
|
82
|
+
|
|
83
|
+
function record() {
|
|
84
|
+
# Record test results
|
|
85
|
+
SMART_TESTS_SLACK_NOTIFICATION=true smart-tests record tests file --session $(cat session.txt) test-results/*.xml
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
trap record EXIT
|
|
89
|
+
|
|
90
|
+
# Test subset of tests
|
|
91
|
+
uv run poe test-xml $(tr '\r\n' '\n' < subset.txt)
|
|
92
|
+
|
|
93
|
+
# Test rest of tests
|
|
94
|
+
uv run poe test-xml $(tr '\r\n' '\n' < smart-tests-remainder.txt)
|
|
95
|
+
shell: bash
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
FROM python:3.13-slim
|
|
2
|
+
|
|
3
|
+
RUN apt-get update && \
|
|
4
|
+
apt-get install -y --no-install-recommends \
|
|
5
|
+
git \
|
|
6
|
+
openjdk-21-jre-headless \
|
|
7
|
+
curl && \
|
|
8
|
+
rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
# Install uv
|
|
11
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
|
12
|
+
|
|
13
|
+
WORKDIR /src
|
|
14
|
+
COPY . .
|
|
15
|
+
|
|
16
|
+
# Install dependencies and build the package using uv
|
|
17
|
+
# This works with normal Git repositories (non-worktree)
|
|
18
|
+
RUN uv sync --frozen --no-dev
|
|
19
|
+
|
|
20
|
+
RUN apt-get update && \
|
|
21
|
+
apt-get install -y --no-install-recommends openjdk-21-jre-headless git && \
|
|
22
|
+
rm -rf /var/lib/apt/lists/*
|
|
23
|
+
|
|
24
|
+
RUN useradd -m smart-tests && chown -R smart-tests:smart-tests /src
|
|
25
|
+
USER smart-tests
|
|
26
|
+
|
|
27
|
+
ENTRYPOINT ["smart-tests"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart-tests-cli
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Smart Tests CLI
|
|
5
5
|
Author-email: CloudBees <support@cloudbees.com>
|
|
6
6
|
License: Apache Software License v2
|
|
@@ -12,19 +12,19 @@ Classifier: Operating System :: OS Independent
|
|
|
12
12
|
Requires-Python: >=3.13
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE.txt
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist: urllib3>=1.26
|
|
15
|
+
Requires-Dist: requests>=2.32.5
|
|
16
|
+
Requires-Dist: urllib3>=2.5
|
|
18
17
|
Requires-Dist: junitparser>=4.0.0
|
|
19
18
|
Requires-Dist: more-itertools>=7.1.0
|
|
20
|
-
Requires-Dist: python-dateutil
|
|
21
|
-
Requires-Dist: tabulate
|
|
19
|
+
Requires-Dist: python-dateutil>=2.9
|
|
20
|
+
Requires-Dist: tabulate>=0.9
|
|
21
|
+
Requires-Dist: click<8.2,>=8.1
|
|
22
22
|
Dynamic: license-file
|
|
23
23
|
|
|
24
24
|
# Usage
|
|
25
25
|
|
|
26
|
-
See https://
|
|
27
|
-
https://
|
|
26
|
+
See https://help.launchableinc.com/resources/cli-reference/ and
|
|
27
|
+
https://help.launchableinc.com/sending-data-to-launchable/using-the-launchable-cli/getting-started/.
|
|
28
28
|
|
|
29
29
|
# Development
|
|
30
30
|
|
|
@@ -105,7 +105,7 @@ uv run poe install
|
|
|
105
105
|
# Add runtime dependency
|
|
106
106
|
uv add some-package
|
|
107
107
|
|
|
108
|
-
# Add development dependency
|
|
108
|
+
# Add development dependency
|
|
109
109
|
uv add --dev some-dev-package
|
|
110
110
|
```
|
|
111
111
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Usage
|
|
2
2
|
|
|
3
|
-
See https://
|
|
4
|
-
https://
|
|
3
|
+
See https://help.launchableinc.com/resources/cli-reference/ and
|
|
4
|
+
https://help.launchableinc.com/sending-data-to-launchable/using-the-launchable-cli/getting-started/.
|
|
5
5
|
|
|
6
6
|
# Development
|
|
7
7
|
|
|
@@ -82,7 +82,7 @@ uv run poe install
|
|
|
82
82
|
# Add runtime dependency
|
|
83
83
|
uv add some-package
|
|
84
84
|
|
|
85
|
-
# Add development dependency
|
|
85
|
+
# Add development dependency
|
|
86
86
|
uv add --dev some-dev-package
|
|
87
87
|
```
|
|
88
88
|
|
|
@@ -9,9 +9,11 @@ http_archive(
|
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
|
|
12
|
+
|
|
12
13
|
rules_jvm_external_deps()
|
|
13
14
|
|
|
14
15
|
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
|
|
16
|
+
|
|
15
17
|
rules_jvm_external_setup()
|
|
16
18
|
|
|
17
19
|
load("@rules_jvm_external//:defs.bzl", "maven_install")
|
|
@@ -25,6 +27,7 @@ maven_install(
|
|
|
25
27
|
"com.fasterxml.jackson.core:jackson-core:2.18.2",
|
|
26
28
|
"com.fasterxml.jackson.core:jackson-databind:2.18.2",
|
|
27
29
|
"com.google.guava:guava:33.3.1-jre",
|
|
30
|
+
"org.apache.commons:commons-compress:1.27.1",
|
|
28
31
|
"org.apache.httpcomponents:httpclient:4.5.14",
|
|
29
32
|
# This is the last release that produce Java 8 class files.
|
|
30
33
|
"org.eclipse.jgit:org.eclipse.jgit:5.13.3.202401111512-r",
|
|
@@ -45,10 +48,10 @@ maven_install(
|
|
|
45
48
|
version = "1.4.4",
|
|
46
49
|
),
|
|
47
50
|
],
|
|
51
|
+
fetch_sources = True,
|
|
48
52
|
maven_install_json = "//src:maven_install.json",
|
|
49
53
|
repositories = ["https://repo1.maven.org/maven2"],
|
|
50
54
|
version_conflict_policy = "pinned",
|
|
51
|
-
fetch_sources = True,
|
|
52
55
|
)
|
|
53
56
|
|
|
54
57
|
load("@maven//:defs.bzl", "pinned_maven_install")
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "smart-tests-cli"
|
|
3
|
-
authors = [
|
|
4
|
-
{name = "CloudBees", email = "support@cloudbees.com"}
|
|
5
|
-
]
|
|
3
|
+
authors = [{ name = "CloudBees", email = "support@cloudbees.com" }]
|
|
6
4
|
description = "Smart Tests CLI"
|
|
7
5
|
readme = "README.md"
|
|
8
|
-
license = {text = "Apache Software License v2"}
|
|
6
|
+
license = { text = "Apache Software License v2" }
|
|
9
7
|
requires-python = ">=3.13"
|
|
10
8
|
classifiers = [
|
|
11
9
|
"Programming Language :: Python :: 3",
|
|
@@ -13,13 +11,13 @@ classifiers = [
|
|
|
13
11
|
"Operating System :: OS Independent",
|
|
14
12
|
]
|
|
15
13
|
dependencies = [
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"urllib3>=1.26",
|
|
14
|
+
"requests>=2.32.5",
|
|
15
|
+
"urllib3>=2.5",
|
|
19
16
|
"junitparser>=4.0.0",
|
|
20
17
|
"more-itertools>=7.1.0",
|
|
21
|
-
"python-dateutil",
|
|
22
|
-
"tabulate",
|
|
18
|
+
"python-dateutil>=2.9",
|
|
19
|
+
"tabulate>=0.9",
|
|
20
|
+
"click>=8.1,<8.2",
|
|
23
21
|
]
|
|
24
22
|
dynamic = ["version"]
|
|
25
23
|
|
|
@@ -37,7 +35,7 @@ dev-dependencies = [
|
|
|
37
35
|
"mypy",
|
|
38
36
|
"pre-commit",
|
|
39
37
|
"responses",
|
|
40
|
-
"types-
|
|
38
|
+
"types-setuptools",
|
|
41
39
|
"types-python-dateutil",
|
|
42
40
|
"types-requests",
|
|
43
41
|
"types-tabulate",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
import importlib.util
|
|
3
|
+
import sys
|
|
4
|
+
from glob import glob
|
|
5
|
+
from os.path import basename, dirname, join
|
|
6
|
+
|
|
7
|
+
from smart_tests.app import Application
|
|
8
|
+
from smart_tests.args4p.command import Group
|
|
9
|
+
from smart_tests.commands.compare import compare
|
|
10
|
+
from smart_tests.commands.detect_flakes import detect_flakes
|
|
11
|
+
from smart_tests.commands.inspect import inspect
|
|
12
|
+
from smart_tests.commands.record import record
|
|
13
|
+
from smart_tests.commands.stats import stats
|
|
14
|
+
from smart_tests.commands.subset import subset
|
|
15
|
+
from smart_tests.commands.verify import verify
|
|
16
|
+
|
|
17
|
+
cli = Group(name="cli", callback=Application)
|
|
18
|
+
cli.add_command(record)
|
|
19
|
+
cli.add_command(subset)
|
|
20
|
+
# TODO: main.add_command(split_subset)
|
|
21
|
+
cli.add_command(verify)
|
|
22
|
+
cli.add_command(inspect)
|
|
23
|
+
cli.add_command(stats)
|
|
24
|
+
cli.add_command(compare)
|
|
25
|
+
cli.add_command(detect_flakes)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _load_test_runners():
|
|
29
|
+
# load all test runners
|
|
30
|
+
for f in glob(join(dirname(__file__), 'test_runners', "*.py")):
|
|
31
|
+
f = basename(f)[:-3]
|
|
32
|
+
if f == '__init__':
|
|
33
|
+
continue
|
|
34
|
+
importlib.import_module(f'smart_tests.test_runners.{f}')
|
|
35
|
+
|
|
36
|
+
# load all plugins. Here we do a bit of command line parsing ourselves,
|
|
37
|
+
# because the command line could look something like `smart-tests record tests myprofile --plugins ...
|
|
38
|
+
plugin_dir = None
|
|
39
|
+
if "--plugins" in sys.argv:
|
|
40
|
+
idx = sys.argv.index("--plugins")
|
|
41
|
+
if idx + 1 < len(sys.argv):
|
|
42
|
+
plugin_dir = sys.argv[idx + 1]
|
|
43
|
+
|
|
44
|
+
if plugin_dir:
|
|
45
|
+
for f in glob(join(plugin_dir, '*.py')):
|
|
46
|
+
spec = importlib.util.spec_from_file_location(
|
|
47
|
+
f"smart_tests.plugins.{basename(f)[:-3]}", f)
|
|
48
|
+
plugin = importlib.util.module_from_spec(spec)
|
|
49
|
+
spec.loader.exec_module(plugin)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
_load_test_runners()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def main():
|
|
56
|
+
cli.main()
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
if __name__ == '__main__':
|
|
60
|
+
main()
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Object representing the most global state possible, which represents a single invocation of CLI
|
|
2
|
+
# Currently it's used to keep global configurations.
|
|
3
|
+
#
|
|
4
|
+
# From command implementations, this is available via dependency injection
|
|
5
|
+
|
|
6
|
+
import logging
|
|
7
|
+
import os
|
|
8
|
+
from typing import Annotated
|
|
9
|
+
|
|
10
|
+
import click
|
|
11
|
+
|
|
12
|
+
import smart_tests.args4p.typer as typer
|
|
13
|
+
from smart_tests.utils import logger
|
|
14
|
+
from smart_tests.utils.env_keys import SKIP_CERT_VERIFICATION
|
|
15
|
+
from smart_tests.version import __version__
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Application:
|
|
19
|
+
# Group commands that take the CLI profile as a sub-command shall set this parameter
|
|
20
|
+
test_runner: str | None = None
|
|
21
|
+
|
|
22
|
+
# this maps to the main entry point of the CLI command
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
log_level: Annotated[str, typer.Option(
|
|
26
|
+
help="Set logger's log level (CRITICAL, ERROR, WARNING, AUDIT, INFO, DEBUG)."
|
|
27
|
+
)] = logger.LOG_LEVEL_DEFAULT_STR,
|
|
28
|
+
plugin_dir: Annotated[str | None, typer.Option(
|
|
29
|
+
"--plugins",
|
|
30
|
+
help="Directory to load plugins from"
|
|
31
|
+
)] = None,
|
|
32
|
+
dry_run: Annotated[bool, typer.Option(
|
|
33
|
+
help="Dry-run mode. No data is sent to the server. However, sometimes "
|
|
34
|
+
"GET requests without payload data or side effects could be sent."
|
|
35
|
+
"note: Since the dry run log is output together with the AUDIT log, "
|
|
36
|
+
"even if the log-level is set to warning or higher, the log level will "
|
|
37
|
+
"be forced to be set to AUDIT."
|
|
38
|
+
)] = False,
|
|
39
|
+
skip_cert_verification: Annotated[bool, typer.Option(
|
|
40
|
+
help="Skip the SSL certificate check. This lets you bypass system setup issues "
|
|
41
|
+
"like CERTIFICATE_VERIFY_FAILED, at the expense of vulnerability against "
|
|
42
|
+
"a possible man-in-the-middle attack. Use it as an escape hatch, but with caution."
|
|
43
|
+
)] = False,
|
|
44
|
+
version: Annotated[bool, typer.Option(
|
|
45
|
+
"--version", help="Show version and exit"
|
|
46
|
+
)] = False,
|
|
47
|
+
):
|
|
48
|
+
if version:
|
|
49
|
+
click.echo(f"smart-tests-cli {__version__}")
|
|
50
|
+
raise typer.Exit(0)
|
|
51
|
+
|
|
52
|
+
level = logger.get_log_level(log_level)
|
|
53
|
+
# In the case of dry-run, it is forced to set the level below the AUDIT.
|
|
54
|
+
# This is because the dry-run log will be output along with the audit log.
|
|
55
|
+
if dry_run and level > logger.LOG_LEVEL_AUDIT:
|
|
56
|
+
level = logger.LOG_LEVEL_AUDIT
|
|
57
|
+
logging.basicConfig(level=level)
|
|
58
|
+
|
|
59
|
+
# plugin_dir is processed earlier. If we do it here, it's too late
|
|
60
|
+
|
|
61
|
+
# Dry run mode. This command is used by customers to inspect data we'd send to our server,
|
|
62
|
+
# but without actually doing so.
|
|
63
|
+
self.dry_run = dry_run
|
|
64
|
+
|
|
65
|
+
if not skip_cert_verification:
|
|
66
|
+
skip_cert_verification = (os.environ.get(SKIP_CERT_VERIFICATION) is not None)
|
|
67
|
+
self.skip_cert_verification = skip_cert_verification
|