smart-tests-cli 2.0.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.0.0/.bazelrc +4 -0
- smart_tests_cli-2.0.0/.bazelversion +1 -0
- smart_tests_cli-2.0.0/.editorconfig +11 -0
- smart_tests_cli-2.0.0/.github/release.yml +4 -0
- smart_tests_cli-2.0.0/.github/workflows/bazel-test.yml +34 -0
- smart_tests_cli-2.0.0/.github/workflows/e2e.yml +132 -0
- smart_tests_cli-2.0.0/.github/workflows/publish.yml +95 -0
- smart_tests_cli-2.0.0/.github/workflows/test.yml +95 -0
- smart_tests_cli-2.0.0/.github/workflows/update_maven_install_json.yml +40 -0
- smart_tests_cli-2.0.0/.gitignore +147 -0
- smart_tests_cli-2.0.0/.pre-commit-config.yaml +39 -0
- smart_tests_cli-2.0.0/.python-version +1 -0
- smart_tests_cli-2.0.0/.tagpr +43 -0
- smart_tests_cli-2.0.0/CONTRIBUTING.md +19 -0
- smart_tests_cli-2.0.0/Dockerfile +27 -0
- smart_tests_cli-2.0.0/LICENSE.txt +202 -0
- smart_tests_cli-2.0.0/PKG-INFO +168 -0
- smart_tests_cli-2.0.0/README.md +145 -0
- smart_tests_cli-2.0.0/WORKSPACE +59 -0
- smart_tests_cli-2.0.0/build-java.sh +4 -0
- smart_tests_cli-2.0.0/pyproject.toml +66 -0
- smart_tests_cli-2.0.0/renovate.json +9 -0
- smart_tests_cli-2.0.0/setup.cfg +4 -0
- smart_tests_cli-2.0.0/setup.py +3 -0
- smart_tests_cli-2.0.0/smart_tests/__init__.py +0 -0
- smart_tests_cli-2.0.0/smart_tests/__main__.py +60 -0
- smart_tests_cli-2.0.0/smart_tests/app.py +67 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/README.md +102 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/__init__.py +13 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/argument.py +45 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/command.py +593 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/converters/__init__.py +75 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/decorators.py +98 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/exceptions.py +12 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/option.py +85 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/parameter.py +84 -0
- smart_tests_cli-2.0.0/smart_tests/args4p/typer/__init__.py +42 -0
- smart_tests_cli-2.0.0/smart_tests/commands/__init__.py +0 -0
- smart_tests_cli-2.0.0/smart_tests/commands/compare/__init__.py +11 -0
- smart_tests_cli-2.0.0/smart_tests/commands/compare/subsets.py +58 -0
- smart_tests_cli-2.0.0/smart_tests/commands/detect_flakes.py +105 -0
- smart_tests_cli-2.0.0/smart_tests/commands/inspect/__init__.py +13 -0
- smart_tests_cli-2.0.0/smart_tests/commands/inspect/model.py +52 -0
- smart_tests_cli-2.0.0/smart_tests/commands/inspect/subset.py +138 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/__init__.py +19 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/attachment.py +38 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/build.py +356 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/case_event.py +190 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/commit.py +157 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/session.py +120 -0
- smart_tests_cli-2.0.0/smart_tests/commands/record/tests.py +498 -0
- smart_tests_cli-2.0.0/smart_tests/commands/stats/__init__.py +11 -0
- smart_tests_cli-2.0.0/smart_tests/commands/stats/test_sessions.py +45 -0
- smart_tests_cli-2.0.0/smart_tests/commands/subset.py +567 -0
- smart_tests_cli-2.0.0/smart_tests/commands/test_path_writer.py +51 -0
- smart_tests_cli-2.0.0/smart_tests/commands/verify.py +153 -0
- smart_tests_cli-2.0.0/smart_tests/jar/exe_deploy.jar +0 -0
- smart_tests_cli-2.0.0/smart_tests/plugins/__init__.py +0 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/__init__.py +0 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/adb.py +24 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/ant.py +35 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/bazel.py +103 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/behave.py +62 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/codeceptjs.py +33 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/ctest.py +164 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/cts.py +189 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/cucumber.py +451 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/cypress.py +46 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/dotnet.py +106 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/file.py +20 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/flutter.py +251 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/go_test.py +99 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/googletest.py +34 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/gradle.py +96 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/jest.py +52 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/maven.py +149 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/minitest.py +40 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/nunit.py +190 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/playwright.py +252 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/prove.py +74 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/pytest.py +358 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/raw.py +238 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/robot.py +125 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/rspec.py +5 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/smart_tests.py +235 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/vitest.py +49 -0
- smart_tests_cli-2.0.0/smart_tests/test_runners/xctest.py +79 -0
- smart_tests_cli-2.0.0/smart_tests/testpath.py +154 -0
- smart_tests_cli-2.0.0/smart_tests/utils/__init__.py +0 -0
- smart_tests_cli-2.0.0/smart_tests/utils/authentication.py +78 -0
- smart_tests_cli-2.0.0/smart_tests/utils/ci_provider.py +7 -0
- smart_tests_cli-2.0.0/smart_tests/utils/commands.py +14 -0
- smart_tests_cli-2.0.0/smart_tests/utils/commit_ingester.py +59 -0
- smart_tests_cli-2.0.0/smart_tests/utils/common_tz.py +12 -0
- smart_tests_cli-2.0.0/smart_tests/utils/edit_distance.py +11 -0
- smart_tests_cli-2.0.0/smart_tests/utils/env_keys.py +19 -0
- smart_tests_cli-2.0.0/smart_tests/utils/exceptions.py +34 -0
- smart_tests_cli-2.0.0/smart_tests/utils/fail_fast_mode.py +99 -0
- smart_tests_cli-2.0.0/smart_tests/utils/file_name_pattern.py +4 -0
- smart_tests_cli-2.0.0/smart_tests/utils/git_log_parser.py +53 -0
- smart_tests_cli-2.0.0/smart_tests/utils/glob.py +44 -0
- smart_tests_cli-2.0.0/smart_tests/utils/gzipgen.py +46 -0
- smart_tests_cli-2.0.0/smart_tests/utils/http_client.py +169 -0
- smart_tests_cli-2.0.0/smart_tests/utils/java.py +61 -0
- smart_tests_cli-2.0.0/smart_tests/utils/link.py +149 -0
- smart_tests_cli-2.0.0/smart_tests/utils/logger.py +53 -0
- smart_tests_cli-2.0.0/smart_tests/utils/no_build.py +2 -0
- smart_tests_cli-2.0.0/smart_tests/utils/sax.py +119 -0
- smart_tests_cli-2.0.0/smart_tests/utils/session.py +73 -0
- smart_tests_cli-2.0.0/smart_tests/utils/smart_tests_client.py +134 -0
- smart_tests_cli-2.0.0/smart_tests/utils/subprocess.py +12 -0
- smart_tests_cli-2.0.0/smart_tests/utils/tracking.py +95 -0
- smart_tests_cli-2.0.0/smart_tests/utils/typer_types.py +241 -0
- smart_tests_cli-2.0.0/smart_tests/version.py +7 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/PKG-INFO +168 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/SOURCES.txt +383 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/dependency_links.txt +1 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/entry_points.txt +2 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/requires.txt +7 -0
- smart_tests_cli-2.0.0/smart_tests_cli.egg-info/top_level.txt +1 -0
- smart_tests_cli-2.0.0/src/BUILD +0 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +14 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/BUILD +29 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/ChunkStreamer.java +59 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/CommitChunkStreamer.java +37 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +618 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +199 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +53 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/FileChunkStreamer.java +36 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/FlushableConsumer.java +14 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/GitFile.java +81 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +29 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +59 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/IOConsumer.java +7 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +121 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +84 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +27 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/ProgressReportingConsumer.java +74 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +49 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +18 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/TreeReceiver.java +18 -0
- smart_tests_cli-2.0.0/src/main/java/com/launchableinc/ingest/commits/VirtualFile.java +26 -0
- smart_tests_cli-2.0.0/src/maven_install.json +2454 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/AllTests.java +15 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/BUILD +25 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +192 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +76 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/FileChunkStreamerTest.java +97 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/PassThroughTreeReceiverImpl.java +20 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/ProgressReportingConsumerTest.java +45 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +13 -0
- smart_tests_cli-2.0.0/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +23 -0
- smart_tests_cli-2.0.0/test-runner/__main__.py +22 -0
- smart_tests_cli-2.0.0/tests/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/args4p/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/args4p/converters/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/args4p/converters/test_converters.py +204 -0
- smart_tests_cli-2.0.0/tests/args4p/test_badcode.py +269 -0
- smart_tests_cli-2.0.0/tests/args4p/test_badinput.py +280 -0
- smart_tests_cli-2.0.0/tests/args4p/test_command.py +334 -0
- smart_tests_cli-2.0.0/tests/args4p/test_decorators.py +295 -0
- smart_tests_cli-2.0.0/tests/args4p/test_help.py +66 -0
- smart_tests_cli-2.0.0/tests/args4p/test_parameter.py +22 -0
- smart_tests_cli-2.0.0/tests/args4p/test_typer.py +26 -0
- smart_tests_cli-2.0.0/tests/cli_test_case.py +335 -0
- smart_tests_cli-2.0.0/tests/commands/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/commands/compare/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/commands/compare/test_subsets.py +155 -0
- smart_tests_cli-2.0.0/tests/commands/inspect/test_model.py +41 -0
- smart_tests_cli-2.0.0/tests/commands/inspect/test_subset.py +83 -0
- smart_tests_cli-2.0.0/tests/commands/record/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_attachment.py +43 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_build.py +507 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_case_event.py +37 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_commit.py +52 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_session.py +208 -0
- smart_tests_cli-2.0.0/tests/commands/record/test_tests.py +83 -0
- smart_tests_cli-2.0.0/tests/commands/test_api_error.py +422 -0
- smart_tests_cli-2.0.0/tests/commands/test_detect_flakes.py +101 -0
- smart_tests_cli-2.0.0/tests/commands/test_subset.py +524 -0
- smart_tests_cli-2.0.0/tests/commands/test_verify.py +47 -0
- smart_tests_cli-2.0.0/tests/data/adb/subset_result.json +16 -0
- smart_tests_cli-2.0.0/tests/data/ant/junitreport/TEST-com.example.HelloWorldTest.xml +84 -0
- smart_tests_cli-2.0.0/tests/data/ant/junitreport/TEST-com.example.library.CacheTest.xml +79 -0
- smart_tests_cli-2.0.0/tests/data/ant/junitreport/TESTS-TestSuites.xml +316 -0
- smart_tests_cli-2.0.0/tests/data/ant/record_test_result.json +63 -0
- smart_tests_cli-2.0.0/tests/data/ant/src/com/example/HelloWorld.java +11 -0
- smart_tests_cli-2.0.0/tests/data/ant/src/com/example/HelloWorldTest.java +18 -0
- smart_tests_cli-2.0.0/tests/data/ant/src/com/example/library/Cache.java +18 -0
- smart_tests_cli-2.0.0/tests/data/ant/src/com/example/library/CacheTest.java +16 -0
- smart_tests_cli-2.0.0/tests/data/ant/subset_result.json +12 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
- smart_tests_cli-2.0.0/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/bazel/build_event.json +36 -0
- smart_tests_cli-2.0.0/tests/data/bazel/build_event_rest.json +30 -0
- smart_tests_cli-2.0.0/tests/data/bazel/record_test_result.json +135 -0
- smart_tests_cli-2.0.0/tests/data/bazel/record_test_with_build_event_json_result.json +51 -0
- smart_tests_cli-2.0.0/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +79 -0
- smart_tests_cli-2.0.0/tests/data/bazel/subset_result.json +46 -0
- smart_tests_cli-2.0.0/tests/data/behave/record_test_result.json +31 -0
- smart_tests_cli-2.0.0/tests/data/behave/reports/report.xml +12 -0
- smart_tests_cli-2.0.0/tests/data/behave/subset_result.json +13 -0
- smart_tests_cli-2.0.0/tests/data/broken_xml/broken.xml +1 -0
- smart_tests_cli-2.0.0/tests/data/broken_xml/normal.xml +5 -0
- smart_tests_cli-2.0.0/tests/data/codeceptjs/codeceptjs-result.xml +18 -0
- smart_tests_cli-2.0.0/tests/data/codeceptjs/record_test_result.json +53 -0
- smart_tests_cli-2.0.0/tests/data/ctest/Testing/latest/Test.xml +202 -0
- smart_tests_cli-2.0.0/tests/data/ctest/ctest_list.json +155 -0
- smart_tests_cli-2.0.0/tests/data/ctest/record_test_result.json +65 -0
- smart_tests_cli-2.0.0/tests/data/ctest/subset_result.json +14 -0
- smart_tests_cli-2.0.0/tests/data/cts/record_test_result.json +251 -0
- smart_tests_cli-2.0.0/tests/data/cts/subset_result.json +39 -0
- smart_tests_cli-2.0.0/tests/data/cts/test_result.xml +44 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/features/foo/bar.feature +6 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/features/foo/is_it_friday_yet.feature +28 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/features/foo-bar.feature +6 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/features/is_it_friday_yet.feature +36 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/record_test_json_result.json +501 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/record_test_result.json +295 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/report/TEST-features-foo-bar.xml +12 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +67 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +67 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/report/dummy.xml +0 -0
- smart_tests_cli-2.0.0/tests/data/cucumber/report/result.json +1992 -0
- smart_tests_cli-2.0.0/tests/data/cypress/empty.json +1 -0
- smart_tests_cli-2.0.0/tests/data/cypress/empty.xml +3 -0
- smart_tests_cli-2.0.0/tests/data/cypress/record_test_result.json +75 -0
- smart_tests_cli-2.0.0/tests/data/cypress/subset_result.json +18 -0
- smart_tests_cli-2.0.0/tests/data/cypress/test-result.xml +13 -0
- smart_tests_cli-2.0.0/tests/data/dotnet/record_test_result.json +113 -0
- smart_tests_cli-2.0.0/tests/data/dotnet/test-result.xml +37 -0
- smart_tests_cli-2.0.0/tests/data/flutter/record_test_result.json +63 -0
- smart_tests_cli-2.0.0/tests/data/flutter/report.json +29 -0
- smart_tests_cli-2.0.0/tests/data/git_log_ingest/sample.out +31 -0
- smart_tests_cli-2.0.0/tests/data/go_test/record_test_result.json +179 -0
- smart_tests_cli-2.0.0/tests/data/go_test/reportv1/reportv1.xml +22 -0
- smart_tests_cli-2.0.0/tests/data/go_test/reportv2/reportv2.xml +16 -0
- smart_tests_cli-2.0.0/tests/data/go_test/subset_result.json +10 -0
- smart_tests_cli-2.0.0/tests/data/googletest/fail/output.xml +13 -0
- smart_tests_cli-2.0.0/tests/data/googletest/fail/record_test_result.json +63 -0
- smart_tests_cli-2.0.0/tests/data/googletest/output_a.xml +8 -0
- smart_tests_cli-2.0.0/tests/data/googletest/output_b.xml +8 -0
- smart_tests_cli-2.0.0/tests/data/googletest/record_test_result.json +117 -0
- smart_tests_cli-2.0.0/tests/data/googletest/subset_result.json +22 -0
- smart_tests_cli-2.0.0/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/App2Test.java +21 -0
- smart_tests_cli-2.0.0/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/AppTest.java +32 -0
- smart_tests_cli-2.0.0/tests/data/gradle/java/app/src/test/java/com/example/sample_app_gradle/sub/App3Test.java +21 -0
- smart_tests_cli-2.0.0/tests/data/gradle/recursion/expected.json +81 -0
- smart_tests_cli-2.0.0/tests/data/gradle/recursion/foo/bar/reports/1.xml +10 -0
- smart_tests_cli-2.0.0/tests/data/jest/junit.xml +43 -0
- smart_tests_cli-2.0.0/tests/data/jest/record_test_result.json +155 -0
- smart_tests_cli-2.0.0/tests/data/jest/subset_result.json +42 -0
- smart_tests_cli-2.0.0/tests/data/maven/createdFile_1.lst +4 -0
- smart_tests_cli-2.0.0/tests/data/maven/createdFile_2.lst +4 -0
- smart_tests_cli-2.0.0/tests/data/maven/java/test/src/java/com/example/sample_app_maven/App2Test.java +20 -0
- smart_tests_cli-2.0.0/tests/data/maven/java/test/src/java/com/example/sample_app_maven/AppTest.java +14 -0
- smart_tests_cli-2.0.0/tests/data/maven/list.lst +3 -0
- smart_tests_cli-2.0.0/tests/data/maven/record_test_result.json +81 -0
- smart_tests_cli-2.0.0/tests/data/maven/reports/TEST-1.xml +4 -0
- smart_tests_cli-2.0.0/tests/data/maven/reports/TEST-2.xml +5 -0
- smart_tests_cli-2.0.0/tests/data/maven/reports/TEST-nested.xml +4 -0
- smart_tests_cli-2.0.0/tests/data/maven/reports/dummy.xml +4 -0
- smart_tests_cli-2.0.0/tests/data/maven/subset_by_absolute_time_result.json +17 -0
- smart_tests_cli-2.0.0/tests/data/maven/subset_by_confidence_result.json +17 -0
- smart_tests_cli-2.0.0/tests/data/maven/subset_from_file_result.json +31 -0
- smart_tests_cli-2.0.0/tests/data/maven/subset_result.json +17 -0
- smart_tests_cli-2.0.0/tests/data/maven/subset_scan_test_compile_lst_result.json +21 -0
- smart_tests_cli-2.0.0/tests/data/minitest/TEST-Admin_UserTest.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +5 -0
- smart_tests_cli-2.0.0/tests/data/minitest/TEST-UserControllerTest.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/minitest/TEST-UserCopyTest.xml +7 -0
- smart_tests_cli-2.0.0/tests/data/minitest/TEST-UserTest.xml +5 -0
- smart_tests_cli-2.0.0/tests/data/minitest/record_test_result.json +152 -0
- smart_tests_cli-2.0.0/tests/data/minitest/record_test_result_chunk1.json +90 -0
- smart_tests_cli-2.0.0/tests/data/minitest/record_test_result_chunk2.json +53 -0
- smart_tests_cli-2.0.0/tests/data/minitest/subset_result.json +10 -0
- smart_tests_cli-2.0.0/tests/data/minitest/test/example_test.rb +1 -0
- smart_tests_cli-2.0.0/tests/data/nunit/list.xml +39 -0
- smart_tests_cli-2.0.0/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +42 -0
- smart_tests_cli-2.0.0/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +25 -0
- smart_tests_cli-2.0.0/tests/data/nunit/output-linux.xml +67 -0
- smart_tests_cli-2.0.0/tests/data/nunit/output-windows.xml +67 -0
- smart_tests_cli-2.0.0/tests/data/nunit/record_test_result-linux.json +112 -0
- smart_tests_cli-2.0.0/tests/data/nunit/record_test_result-windows.json +112 -0
- smart_tests_cli-2.0.0/tests/data/nunit/src/.gitignore +3 -0
- smart_tests_cli-2.0.0/tests/data/nunit/src/Program.cs +12 -0
- smart_tests_cli-2.0.0/tests/data/nunit/src/README.md +10 -0
- smart_tests_cli-2.0.0/tests/data/nunit/src/Test.cs +74 -0
- smart_tests_cli-2.0.0/tests/data/nunit/src/calc.csproj +14 -0
- smart_tests_cli-2.0.0/tests/data/nunit/subset_result.json +51 -0
- smart_tests_cli-2.0.0/tests/data/playwright/record_test_result.json +1683 -0
- smart_tests_cli-2.0.0/tests/data/playwright/record_test_result_with_json.json +2409 -0
- smart_tests_cli-2.0.0/tests/data/playwright/report.json +3618 -0
- smart_tests_cli-2.0.0/tests/data/playwright/report.xml +581 -0
- smart_tests_cli-2.0.0/tests/data/prove/record_test_result.json +135 -0
- smart_tests_cli-2.0.0/tests/data/prove/report.xml +65 -0
- smart_tests_cli-2.0.0/tests/data/pytest/pytest.ini +8 -0
- smart_tests_cli-2.0.0/tests/data/pytest/record_test_result.json +233 -0
- smart_tests_cli-2.0.0/tests/data/pytest/record_test_result_json.json +163 -0
- smart_tests_cli-2.0.0/tests/data/pytest/report.json +29 -0
- smart_tests_cli-2.0.0/tests/data/pytest/report.xml +120 -0
- smart_tests_cli-2.0.0/tests/data/pytest/subset_result.json +134 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/conftest.py +6 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/fooo/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/fooo/filenameonly_test.py +2 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/fooo/func4_test.py +2 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/funcs3_test.py +6 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/test_funcs1.py +20 -0
- smart_tests_cli-2.0.0/tests/data/pytest/tests/test_funcs2.py +11 -0
- smart_tests_cli-2.0.0/tests/data/robot/dryrun.xml +129 -0
- smart_tests_cli-2.0.0/tests/data/robot/output.xml +131 -0
- smart_tests_cli-2.0.0/tests/data/robot/record_test_executed_only_one_file_result.json +63 -0
- smart_tests_cli-2.0.0/tests/data/robot/record_test_result.json +117 -0
- smart_tests_cli-2.0.0/tests/data/robot/single-output.xml +56 -0
- smart_tests_cli-2.0.0/tests/data/robot/subset_result.json +34 -0
- smart_tests_cli-2.0.0/tests/data/rspec/record_test_result.json +361 -0
- smart_tests_cli-2.0.0/tests/data/rspec/rspec.xml +22 -0
- smart_tests_cli-2.0.0/tests/data/vitest/record_test_result.json +99 -0
- smart_tests_cli-2.0.0/tests/data/vitest/report.xml +55 -0
- smart_tests_cli-2.0.0/tests/data/xctest/junit.xml +24 -0
- smart_tests_cli-2.0.0/tests/data/xctest/record_test_result.json +207 -0
- smart_tests_cli-2.0.0/tests/data/xctest/subset_result.json +11 -0
- smart_tests_cli-2.0.0/tests/helper.py +9 -0
- smart_tests_cli-2.0.0/tests/plugins/foo.py +23 -0
- smart_tests_cli-2.0.0/tests/test_cli_test_case.py +243 -0
- smart_tests_cli-2.0.0/tests/test_plugin.py +53 -0
- smart_tests_cli-2.0.0/tests/test_runners/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_adb.py +62 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_ant.py +24 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_bazel.py +96 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_behave.py +30 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_codeceptjs.py +218 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_ctest.py +84 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_cts.py +90 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_cucumber.py +47 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_cypress.py +45 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_dotnet.py +160 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_go_test.py +40 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_googletest.py +52 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_gradle.py +267 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_jest.py +79 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_maven.py +165 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_minitest.py +115 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_nunit.py +65 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_playwright.py +66 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_prove.py +37 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_pytest.py +139 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_raw.py +357 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_robot.py +31 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_rspec.py +17 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_vitest.py +15 -0
- smart_tests_cli-2.0.0/tests/test_runners/test_xctest.py +66 -0
- smart_tests_cli-2.0.0/tests/test_testpath.py +136 -0
- smart_tests_cli-2.0.0/tests/test_version.py +14 -0
- smart_tests_cli-2.0.0/tests/utils/__init__.py +0 -0
- smart_tests_cli-2.0.0/tests/utils/test_authentication.py +112 -0
- smart_tests_cli-2.0.0/tests/utils/test_edit_distance.py +15 -0
- smart_tests_cli-2.0.0/tests/utils/test_fail_fast_mode.py +40 -0
- smart_tests_cli-2.0.0/tests/utils/test_file_name_pattern.py +27 -0
- smart_tests_cli-2.0.0/tests/utils/test_git_log_parser.py +155 -0
- smart_tests_cli-2.0.0/tests/utils/test_glob.py +66 -0
- smart_tests_cli-2.0.0/tests/utils/test_gzipgen.py +12 -0
- smart_tests_cli-2.0.0/tests/utils/test_http_client.py +36 -0
- smart_tests_cli-2.0.0/tests/utils/test_link.py +98 -0
- smart_tests_cli-2.0.0/tests/utils/test_logger.py +45 -0
- smart_tests_cli-2.0.0/tests/utils/test_session.py +48 -0
- smart_tests_cli-2.0.0/tests/utils/test_typer.py +59 -0
- smart_tests_cli-2.0.0/tests/utils/test_typer_types.py +251 -0
- smart_tests_cli-2.0.0/uv.lock +568 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7.6.1
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Bazel test
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- 'WORKSPACE'
|
|
8
|
+
- 'src/**'
|
|
9
|
+
- '!src/**.md'
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- 'WORKSPACE'
|
|
13
|
+
- 'src/**'
|
|
14
|
+
- '!src/**.md'
|
|
15
|
+
jobs:
|
|
16
|
+
test:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
20
|
+
- name: Set up JDK 8
|
|
21
|
+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
|
22
|
+
with:
|
|
23
|
+
distribution: temurin
|
|
24
|
+
java-version: '8'
|
|
25
|
+
- name: Setup Bazel
|
|
26
|
+
uses: bazelbuild/setup-bazelisk@b39c379c82683a5f25d34f0d062761f62693e0b2 # v3.0.0
|
|
27
|
+
- name: Cache Bazel outputs
|
|
28
|
+
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
|
|
29
|
+
with:
|
|
30
|
+
path: "~/.cache/bazel"
|
|
31
|
+
key: bazel
|
|
32
|
+
- name: Run Bazel test
|
|
33
|
+
run: |
|
|
34
|
+
bazel test //...
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
name: e2e
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, smart-tests] # smart-tests branch temporarily added for Smart Tests CLI development
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
env:
|
|
9
|
+
SMART_TESTS_DEBUG: 1
|
|
10
|
+
SMART_TESTS_REPORT_ERROR: 1
|
|
11
|
+
# The WORKSPACE file is disabled by default in Bazel 8.
|
|
12
|
+
# As a workaround, we configure the old version.
|
|
13
|
+
USE_BAZEL_VERSION: "7.x"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
tests:
|
|
17
|
+
runs-on: ubuntu-22.04
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
20
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
21
|
+
with:
|
|
22
|
+
repository: launchableinc/examples
|
|
23
|
+
path: examples
|
|
24
|
+
- name: Set up JDK 1.8
|
|
25
|
+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
|
|
26
|
+
with:
|
|
27
|
+
java-version: 8
|
|
28
|
+
distribution: "temurin"
|
|
29
|
+
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5
|
|
30
|
+
with:
|
|
31
|
+
go-version: 1.24
|
|
32
|
+
- name: Install uv
|
|
33
|
+
uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
|
|
34
|
+
with:
|
|
35
|
+
enable-cache: true
|
|
36
|
+
cache-dependency-glob: "uv.lock"
|
|
37
|
+
- name: Install dependencies
|
|
38
|
+
run: uv sync --dev && uv tool install .
|
|
39
|
+
# bazel
|
|
40
|
+
- name: Install Bazelisk
|
|
41
|
+
run: |
|
|
42
|
+
go install github.com/bazelbuild/bazelisk@latest
|
|
43
|
+
- name: "bazel: verify"
|
|
44
|
+
run: "smart-tests verify"
|
|
45
|
+
env:
|
|
46
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
47
|
+
- name: "bazel: Record build"
|
|
48
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=../.. --source cli=../../..'
|
|
49
|
+
env:
|
|
50
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
51
|
+
working-directory: examples/bazel/java
|
|
52
|
+
- name: "bazel: Record session"
|
|
53
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "bazel" > bazel-test-session.txt'
|
|
54
|
+
env:
|
|
55
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
56
|
+
working-directory: examples/bazel/java
|
|
57
|
+
- name: "bazel: Subset"
|
|
58
|
+
run: bazelisk query 'tests(//...)' | smart-tests subset bazel --session $(cat bazel-test-session.txt) --target 30% > subset.txt
|
|
59
|
+
env:
|
|
60
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
61
|
+
working-directory: examples/bazel/java
|
|
62
|
+
- name: "bazel: Run test"
|
|
63
|
+
run: bazelisk test $(cat subset.txt)
|
|
64
|
+
working-directory: examples/bazel/java
|
|
65
|
+
- name: "bazel: Record test results"
|
|
66
|
+
run: smart-tests record tests bazel --session $(cat bazel-test-session.txt) .
|
|
67
|
+
if: always()
|
|
68
|
+
env:
|
|
69
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
|
|
70
|
+
working-directory: examples/bazel/java
|
|
71
|
+
# go
|
|
72
|
+
- name: Install go-junit-report
|
|
73
|
+
run: |
|
|
74
|
+
go install github.com/jstemmer/go-junit-report@latest
|
|
75
|
+
working-directory: examples/go
|
|
76
|
+
- name: "go: verify"
|
|
77
|
+
run: "smart-tests verify"
|
|
78
|
+
env:
|
|
79
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
80
|
+
- name: "go: Record build"
|
|
81
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
|
|
82
|
+
env:
|
|
83
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
84
|
+
working-directory: examples/go
|
|
85
|
+
- name: "go: Record session"
|
|
86
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "go-test" > go-test-session.txt'
|
|
87
|
+
env:
|
|
88
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
89
|
+
working-directory: examples/go
|
|
90
|
+
- name: "go: Subset"
|
|
91
|
+
run: go test -list="Test|Example" ./... | smart-tests subset go-test --session $(cat go-test-session.txt) --confidence 80% > smart-tests-subset.txt
|
|
92
|
+
env:
|
|
93
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
94
|
+
working-directory: examples/go
|
|
95
|
+
- name: "go: Run test"
|
|
96
|
+
run: go test -run $(cat smart-tests-subset.txt) ./... -v 2>&1 | go-junit-report -set-exit-code > report.xml
|
|
97
|
+
working-directory: examples/go
|
|
98
|
+
- name: "go: Record test results"
|
|
99
|
+
run: smart-tests record tests go-test --session $(cat go-test-session.txt) report.xml
|
|
100
|
+
if: always()
|
|
101
|
+
env:
|
|
102
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
|
|
103
|
+
working-directory: examples/go
|
|
104
|
+
# gradle
|
|
105
|
+
- name: "gradle: verify"
|
|
106
|
+
run: "smart-tests verify"
|
|
107
|
+
env:
|
|
108
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
109
|
+
- name: "gradle: Record build"
|
|
110
|
+
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
|
|
111
|
+
env:
|
|
112
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
113
|
+
working-directory: examples/gradle
|
|
114
|
+
- name: "gradle: Record session"
|
|
115
|
+
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "gradle" > gradle-test-session.txt'
|
|
116
|
+
env:
|
|
117
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
118
|
+
working-directory: examples/gradle
|
|
119
|
+
- name: "gradle: Subset"
|
|
120
|
+
run: smart-tests subset gradle --session $(cat gradle-test-session.txt) --target 80% src/test/java > smart-tests-subset.txt
|
|
121
|
+
env:
|
|
122
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
123
|
+
working-directory: examples/gradle
|
|
124
|
+
- name: "gradle: Run test"
|
|
125
|
+
run: ./gradlew test $(cat smart-tests-subset.txt)
|
|
126
|
+
working-directory: examples/gradle
|
|
127
|
+
- name: "gradle: Record test results"
|
|
128
|
+
run: smart-tests record tests gradle --session $(cat gradle-test-session.txt) build/test-results/test
|
|
129
|
+
if: always()
|
|
130
|
+
env:
|
|
131
|
+
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
|
|
132
|
+
working-directory: examples/gradle
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Publish workflow for the Smart Tests CLI
|
|
2
|
+
# Builds and publishes packages to PyPI and Docker Hub
|
|
3
|
+
|
|
4
|
+
name: Publish
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
push:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
|
|
12
|
+
env:
|
|
13
|
+
IMAGE_NAME: cloudbees/smart-tests-cli
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
tagpr:
|
|
17
|
+
permissions:
|
|
18
|
+
actions: write
|
|
19
|
+
contents: write
|
|
20
|
+
pull-requests: write
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
outputs:
|
|
23
|
+
tag: ${{ steps.run-tagpr.outputs.tag }}
|
|
24
|
+
steps:
|
|
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
|
+
|
|
31
|
+
pypi:
|
|
32
|
+
needs: tagpr
|
|
33
|
+
if: needs.tagpr.outputs.tag != '' || github.event_name == 'workflow_dispatch'
|
|
34
|
+
|
|
35
|
+
runs-on: ubuntu-22.04
|
|
36
|
+
|
|
37
|
+
steps:
|
|
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
|
+
|
|
55
|
+
docker:
|
|
56
|
+
name: Push Docker image to Docker Hub
|
|
57
|
+
needs: tagpr
|
|
58
|
+
if: needs.tagpr.outputs.tag != '' || github.event_name == 'workflow_dispatch'
|
|
59
|
+
|
|
60
|
+
runs-on: ubuntu-22.04
|
|
61
|
+
|
|
62
|
+
permissions:
|
|
63
|
+
packages: write
|
|
64
|
+
contents: read
|
|
65
|
+
attestations: write
|
|
66
|
+
id-token: write
|
|
67
|
+
steps:
|
|
68
|
+
- name: Check out the repo
|
|
69
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
70
|
+
|
|
71
|
+
- name: Log in to Docker Hub
|
|
72
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
|
73
|
+
with:
|
|
74
|
+
username: ${{ secrets.DOCKER_USERNAME }}
|
|
75
|
+
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
76
|
+
|
|
77
|
+
- name: Set up Docker Buildx
|
|
78
|
+
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
|
79
|
+
|
|
80
|
+
- name: Build and push Docker image
|
|
81
|
+
id: push
|
|
82
|
+
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
|
83
|
+
with:
|
|
84
|
+
context: .
|
|
85
|
+
file: ./Dockerfile
|
|
86
|
+
platforms: linux/amd64,linux/arm64
|
|
87
|
+
push: true
|
|
88
|
+
tags: ${{ env.IMAGE_NAME }}:${{ needs.tagpr.outputs.tag }}
|
|
89
|
+
|
|
90
|
+
- name: Generate artifact attestation
|
|
91
|
+
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
|
|
92
|
+
with:
|
|
93
|
+
subject-name: index.docker.io/${{ env.IMAGE_NAME }}
|
|
94
|
+
subject-digest: ${{ steps.push.outputs.digest }}
|
|
95
|
+
push-to-registry: true
|
|
@@ -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,40 @@
|
|
|
1
|
+
name: Update maven_install.json
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'WORKSPACE'
|
|
6
|
+
jobs:
|
|
7
|
+
update:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v4
|
|
11
|
+
with:
|
|
12
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
13
|
+
# Bot token is needed to ensure that git-push triggers relevant workflows
|
|
14
|
+
# See https://github.com/orgs/community/discussions/27146
|
|
15
|
+
token: ${{ secrets.LAUNCHABLEINC_CI_GITHUB_TOKEN }}
|
|
16
|
+
- name: Set up JDK 17
|
|
17
|
+
uses: actions/setup-java@v4
|
|
18
|
+
with:
|
|
19
|
+
distribution: temurin
|
|
20
|
+
java-version: '17'
|
|
21
|
+
- name: Setup Bazel
|
|
22
|
+
uses: bazelbuild/setup-bazelisk@b39c379c82683a5f25d34f0d062761f62693e0b2 # v3.0.0
|
|
23
|
+
- name: Cache Bazel outputs
|
|
24
|
+
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
|
|
25
|
+
with:
|
|
26
|
+
path: "~/.cache/bazel"
|
|
27
|
+
key: bazel
|
|
28
|
+
- name: Update maven_install.json
|
|
29
|
+
run: |
|
|
30
|
+
bazel run @unpinned_maven//:pin
|
|
31
|
+
- name: Commit updated files
|
|
32
|
+
run: |
|
|
33
|
+
if ! git diff --exit-code --quiet
|
|
34
|
+
then
|
|
35
|
+
git add src/maven_install.json
|
|
36
|
+
git config --local user.email "nobody@launchableinc.com"
|
|
37
|
+
git config --local user.name "File Update GitHub Workflow"
|
|
38
|
+
git commit -m "Update maven_install.json"
|
|
39
|
+
git push
|
|
40
|
+
fi
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
98
|
+
__pypackages__/
|
|
99
|
+
|
|
100
|
+
# Celery stuff
|
|
101
|
+
celerybeat-schedule
|
|
102
|
+
celerybeat.pid
|
|
103
|
+
|
|
104
|
+
# SageMath parsed files
|
|
105
|
+
*.sage.py
|
|
106
|
+
|
|
107
|
+
# Environments
|
|
108
|
+
.env
|
|
109
|
+
.venv
|
|
110
|
+
env/
|
|
111
|
+
venv/
|
|
112
|
+
ENV/
|
|
113
|
+
env.bak/
|
|
114
|
+
venv.bak/
|
|
115
|
+
|
|
116
|
+
# Spyder project settings
|
|
117
|
+
.spyderproject
|
|
118
|
+
.spyproject
|
|
119
|
+
|
|
120
|
+
# Rope project settings
|
|
121
|
+
.ropeproject
|
|
122
|
+
|
|
123
|
+
# mkdocs documentation
|
|
124
|
+
/site
|
|
125
|
+
|
|
126
|
+
# mypy
|
|
127
|
+
.mypy_cache/
|
|
128
|
+
.dmypy.json
|
|
129
|
+
dmypy.json
|
|
130
|
+
|
|
131
|
+
# Pyre type checker
|
|
132
|
+
.pyre/
|
|
133
|
+
|
|
134
|
+
# pytype static type analyzer
|
|
135
|
+
.pytype/
|
|
136
|
+
|
|
137
|
+
# Cython debug symbols
|
|
138
|
+
cython_debug/
|
|
139
|
+
|
|
140
|
+
# Targetting multiple Python versions
|
|
141
|
+
Pipfile.lock
|
|
142
|
+
|
|
143
|
+
.vscode/
|
|
144
|
+
bazel-*
|
|
145
|
+
|
|
146
|
+
.DS_Store
|
|
147
|
+
.idea/*
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v4.0.1
|
|
4
|
+
hooks:
|
|
5
|
+
- id: end-of-file-fixer
|
|
6
|
+
|
|
7
|
+
- repo: https://github.com/PyCQA/flake8
|
|
8
|
+
rev: 7.0.0
|
|
9
|
+
hooks:
|
|
10
|
+
- id: flake8
|
|
11
|
+
args:
|
|
12
|
+
- --ignore=C901,E741,E126
|
|
13
|
+
- --max-line-length=130
|
|
14
|
+
- smart_tests/
|
|
15
|
+
- tests/
|
|
16
|
+
|
|
17
|
+
- repo: https://github.com/pycqa/isort
|
|
18
|
+
rev: 5.11.5
|
|
19
|
+
hooks:
|
|
20
|
+
- id: isort
|
|
21
|
+
args:
|
|
22
|
+
- "-l 130"
|
|
23
|
+
- --balanced
|
|
24
|
+
- smart_tests/*.py
|
|
25
|
+
- tests/*.py
|
|
26
|
+
|
|
27
|
+
- repo: https://github.com/hhatto/autopep8
|
|
28
|
+
rev: v2.3.1
|
|
29
|
+
hooks:
|
|
30
|
+
- id: autopep8
|
|
31
|
+
args:
|
|
32
|
+
- --in-place
|
|
33
|
+
- --recursive
|
|
34
|
+
- --aggressive
|
|
35
|
+
- --experimental
|
|
36
|
+
- --max-line-length=130
|
|
37
|
+
- --ignore=E126
|
|
38
|
+
- smart_tests/
|
|
39
|
+
- tests/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# config file for the tagpr in git config format
|
|
2
|
+
# The tagpr generates the initial configuration, which you can rewrite to suit your environment.
|
|
3
|
+
# CONFIGURATIONS:
|
|
4
|
+
# tagpr.releaseBranch
|
|
5
|
+
# Generally, it is "main." It is the branch for releases. The tagpr tracks this branch,
|
|
6
|
+
# creates or updates a pull request as a release candidate, or tags when they are merged.
|
|
7
|
+
#
|
|
8
|
+
# tagpr.versionFile
|
|
9
|
+
# Versioning file containing the semantic version needed to be updated at release.
|
|
10
|
+
# It will be synchronized with the "git tag".
|
|
11
|
+
# Often this is a meta-information file such as gemspec, setup.cfg, package.json, etc.
|
|
12
|
+
# Sometimes the source code file, such as version.go or Bar.pm, is used.
|
|
13
|
+
# If you do not want to use versioning files but only git tags, specify the "-" string here.
|
|
14
|
+
# You can specify multiple version files by comma separated strings.
|
|
15
|
+
#
|
|
16
|
+
# tagpr.vPrefix
|
|
17
|
+
# Flag whether or not v-prefix is added to semver when git tagging. (e.g. v1.2.3 if true)
|
|
18
|
+
# This is only a tagging convention, not how it is described in the version file.
|
|
19
|
+
#
|
|
20
|
+
# tagpr.changelog (Optional)
|
|
21
|
+
# Flag whether or not changelog is added or changed during the release.
|
|
22
|
+
#
|
|
23
|
+
# tagpr.command (Optional)
|
|
24
|
+
# Command to change files just before release.
|
|
25
|
+
#
|
|
26
|
+
# tagpr.template (Optional)
|
|
27
|
+
# Pull request template in go template format
|
|
28
|
+
#
|
|
29
|
+
# tagpr.release (Optional)
|
|
30
|
+
# GitHub Release creation behavior after tagging [true, draft, false]
|
|
31
|
+
# If this value is not set, the release is to be created.
|
|
32
|
+
#
|
|
33
|
+
# tagpr.majorLabels (Optional)
|
|
34
|
+
# Label of major update targets. Default is [major]
|
|
35
|
+
#
|
|
36
|
+
# tagpr.minorLabels (Optional)
|
|
37
|
+
# Label of minor update targets. Default is [minor]
|
|
38
|
+
#
|
|
39
|
+
[tagpr]
|
|
40
|
+
vPrefix = true
|
|
41
|
+
releaseBranch = main
|
|
42
|
+
versionFile = -
|
|
43
|
+
changelog = false
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Coding style
|
|
2
|
+
Code should follow [pep8](https://www.python.org/dev/peps/pep-0008/). To check coding style, this repo using `[flake8](https://flake8.pycqa.org/)` on Github Actions.
|
|
3
|
+
`[autopep8](https://pypi.org/project/autopep8/)` might help you fixing your code's style.
|
|
4
|
+
|
|
5
|
+
# Development
|
|
6
|
+
You can use Python's `-m` option to launch module directly.
|
|
7
|
+
```shell
|
|
8
|
+
python3 -m smart_tests record commit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
# Design Philosophy
|
|
12
|
+
- **Dependencies**: Smart Tests needs to run with varying environments of users. So when we need to
|
|
13
|
+
reduce dependencies to other packages or tools installed on the system. For example, Python packages
|
|
14
|
+
we depend on and their version constraints might conflict with what other Python packages specifies.
|
|
15
|
+
Some libraries have native components, which need to be built during `pip install` and that adds to
|
|
16
|
+
the burden, too.
|
|
17
|
+
- **Extensibility**: Test runners people use are all over the map. To provide 1st class support for those
|
|
18
|
+
while keeping the code DRY, CLI has two layers. The core layer that defines a properly abstracted
|
|
19
|
+
generic logic, and tool specific "integration" layers that glue the core layer and different tools.
|