launchable 1.90.0__tar.gz → 1.90.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- launchable-1.90.2/.bazelversion +1 -0
- {launchable-1.90.0 → launchable-1.90.2}/.github/workflows/bazel-test.yml +1 -1
- {launchable-1.90.0 → launchable-1.90.2}/.github/workflows/python-package.yml +1 -1
- {launchable-1.90.0 → launchable-1.90.2}/.github/workflows/python-publish.yml +2 -2
- {launchable-1.90.0 → launchable-1.90.2}/PKG-INFO +1 -1
- {launchable-1.90.0 → launchable-1.90.2}/Pipfile +3 -3
- {launchable-1.90.0 → launchable-1.90.2}/WORKSPACE +3 -3
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/pytest.py +25 -13
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/raw.py +11 -4
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/PKG-INFO +1 -1
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/SOURCES.txt +1 -0
- launchable-1.90.2/renovate.json +9 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/maven_install.json +11 -11
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/test_split_subset.py +7 -7
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/test_subset.py +6 -6
- launchable-1.90.2/tests/data/pytest/pytest.ini +8 -0
- launchable-1.90.2/tests/data/pytest/record_test_result.json +231 -0
- launchable-1.90.2/tests/data/pytest/report.xml +120 -0
- launchable-1.90.2/tests/data/pytest/tests/conftest.py +6 -0
- launchable-1.90.2/tests/data/pytest/tests/test_funcs1.py +20 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/tests/test_funcs2.py +5 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_raw.py +2 -3
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_robot.py +2 -2
- launchable-1.90.0/.bazelversion +0 -1
- launchable-1.90.0/renovate.json +0 -6
- launchable-1.90.0/tests/data/pytest/record_test_result.json +0 -161
- launchable-1.90.0/tests/data/pytest/report.xml +0 -24
- launchable-1.90.0/tests/data/pytest/tests/conftest.py +0 -0
- launchable-1.90.0/tests/data/pytest/tests/test_funcs1.py +0 -6
- {launchable-1.90.0 → launchable-1.90.2}/.bazelrc +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.editorconfig +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.github/release.yml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.github/workflows/e2e.yml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.github/workflows/update_maven_install_json.yml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.gitignore +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.pre-commit-config.yaml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.python-version +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/.tagpr +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/CONTRIBUTING.md +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/Dockerfile +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/LICENSE.txt +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/README.md +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/__main__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/app.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/helper.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/inspect/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/inspect/subset.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/inspect/tests.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/attachment.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/build.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/case_event.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/commit.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/session.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/record/tests.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/split_subset.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/stats/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/stats/test_sessions.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/subset.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/test_path_writer.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/commands/verify.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/jar/exe_deploy.jar +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/plugins/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/adb.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/ant.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/bazel.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/behave.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/ctest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/cts.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/cucumber.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/cypress.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/dotnet.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/file.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/go_test.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/googletest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/gradle.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/jest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/launchable.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/maven.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/minitest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/nunit.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/playwright.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/prove.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/robot.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/test_runners/rspec.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/testpath.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/authentication.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/ci_provider.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/click.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/commit_ingester.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/env_keys.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/exceptions.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/file_name_pattern.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/git_log_parser.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/glob.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/gzipgen.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/http_client.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/java.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/key_value_type.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/launchable_client.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/link.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/logger.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/no_build.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/sax.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/session.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/subprocess.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/utils/tracking.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable/version.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/dependency_links.txt +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/entry_points.txt +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/requires.txt +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/launchable.egg-info/top_level.txt +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/pyproject.toml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/setup.cfg +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/setup.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/BUILD +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/Authenticator.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/CommitGraphCollector.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/CommitIngester.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/CountingDiffFormatter.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/GitHubActionsAuthenticator.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/GitHubIdTokenAuthenticator.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/JSCommit.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/JSFileChange.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/ObjectRevFilter.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/SSLBypass.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/main/java/com/launchableinc/ingest/commits/TokenAuthenticator.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/AllTests.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/BUILD +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/CommitGraphCollectorTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/CommitIngesterTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/SSLBypassTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/src/test/java/com/launchableinc/ingest/commits/java8-compat.sh +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/test-runner/__main__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/cli_test_case.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/inspect/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/inspect/test_subset.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/inspect/test_tests.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/test_attachment.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/test_build.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/test_commit.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/test_session.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/record/test_tests.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/test_api_error.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/test_helper.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/commands/test_verify.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/adb/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/junitreport/TEST-com.launchable.HelloWorldTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/junitreport/TEST-com.launchable.library.CacheTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/junitreport/TESTS-TestSuites.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/src/com/launchable/HelloWorld.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/src/com/launchable/HelloWorldTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/src/com/launchable/library/Cache.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/src/com/launchable/library/CacheTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ant/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test1/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test2/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test3/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test4/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test5/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test6/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test7/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test8/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.cache_status +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/bazel-testlogs/src/test/java/com/ninjinkun/mylib_test9/test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/build_event.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/build_event_rest.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/record_test_with_build_event_json_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/record_test_with_multiple_build_event_json_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/bazel/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/behave/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/behave/reports/report.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/behave/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/broken_xml/broken.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/broken_xml/normal.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ctest/Testing/latest/Test.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ctest/ctest_list.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ctest/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/ctest/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cts/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cts/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cts/test_result.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/features/foo/bar.feature +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/features/foo/is_it_friday_yet.feature +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/features/foo-bar.feature +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/features/is_it_friday_yet.feature +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/record_test_json_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/report/TEST-features-foo-bar.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/report/TEST-features-foo-is_it_friday_yet.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/report/TEST-features-is_it_friday_yet.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/report/dummy.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cucumber/report/result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cypress/empty.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cypress/empty.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cypress/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cypress/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/cypress/test-result.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/dotnet/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/dotnet/test-result.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/git_log_ingest/sample.out +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/go_test/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/go_test/reportv1/reportv1.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/go_test/reportv2/reportv2.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/go_test/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/fail/output.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/fail/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/output_a.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/output_b.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/googletest/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/App2Test.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/AppTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/gradle/java/app/src/test/java/com/launchableinc/rocket_car_gradle/sub/App3Test.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/gradle/recursion/expected.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/gradle/recursion/foo/bar/reports/1.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/jest/junit.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/jest/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/jest/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/createdFile_1.lst +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/createdFile_2.lst +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/App2Test.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/java/test/src/java/com/launchableinc/rocket_car_maven/AppTest.java +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/list.lst +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/reports/TEST-1.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/reports/TEST-2.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/reports/dummy.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/subset_by_absolute_time_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/subset_by_confidence_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/subset_from_file_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/maven/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/TEST-Admin_UserTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/TEST-Admin_UserTest_ChildlenTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/TEST-UserControllerTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/TEST-UserCopyTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/TEST-UserTest.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/record_test_result_chunk1.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/record_test_result_chunk2.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/minitest/test/example_test.rb +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/list.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/nunit-reporter-bug-with-nested-type.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/output-linux.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/output-windows.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/record_test_result-linux.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/record_test_result-windows.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/src/.gitignore +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/src/Program.cs +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/src/README.md +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/src/Test.cs +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/src/calc.csproj +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/nunit/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/playwright/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/playwright/record_test_result_with_json.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/playwright/report.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/playwright/report.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/prove/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/prove/report.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/record_test_result_json.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/report.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/tests/fooo/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/tests/fooo/filenameonly_test.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/tests/fooo/func4_test.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/pytest/tests/funcs3_test.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/dryrun.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/output.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/record_test_executed_only_one_file_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/single-output.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/robot/subset_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/rspec/record_test_result.json +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/data/rspec/rspec.xml +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/helper.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/plugins/foo.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_cli_test_case.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_plugin.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_adb.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_ant.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_bazel.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_behave.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_ctest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_cts.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_cucumber.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_cypress.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_dotnet.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_go_test.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_googletest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_gradle.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_jest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_maven.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_minitest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_nunit.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_playwright.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_prove.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_pytest.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_runners/test_rspec.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_session.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_testpath.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/test_version.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/__init__.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_authentication.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_click.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_file_name_pattern.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_git_log_parser.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_glob.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_gzipgen.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_http_client.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_key_value_type.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_link.py +0 -0
- {launchable-1.90.0 → launchable-1.90.2}/tests/utils/test_logger.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7.2.0
|
|
@@ -16,7 +16,7 @@ jobs:
|
|
|
16
16
|
test:
|
|
17
17
|
runs-on: ubuntu-latest
|
|
18
18
|
steps:
|
|
19
|
-
- uses: actions/checkout@
|
|
19
|
+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
|
20
20
|
- name: Set up JDK 8
|
|
21
21
|
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
|
|
22
22
|
with:
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
python-version: [3.6, 3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
|
|
40
40
|
|
|
41
41
|
steps:
|
|
42
|
-
- uses: actions/checkout@
|
|
42
|
+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
|
43
43
|
with:
|
|
44
44
|
fetch-depth: 0
|
|
45
45
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -19,9 +19,9 @@ jobs:
|
|
|
19
19
|
outputs:
|
|
20
20
|
tag: ${{ steps.run-tagpr.outputs.tag }}
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
|
23
23
|
- id: run-tagpr
|
|
24
|
-
uses: Songmu/tagpr@
|
|
24
|
+
uses: Songmu/tagpr@0a9b8e6634db66e773516828c1359dc6e9e8b484 # v1.3.0
|
|
25
25
|
env:
|
|
26
26
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
27
27
|
|
|
@@ -15,9 +15,9 @@ wheel = "*"
|
|
|
15
15
|
# 2.9.0, < 2.10.0". ref: https://github.com/PyCQA/flake8/pull/1633
|
|
16
16
|
# The latest autopep8 specifies "pycodestyle >= 2.10.0". This conflict cannot be resolved. Pin the version to resolve this.
|
|
17
17
|
autopep8 = "<=1.7.0"
|
|
18
|
-
importlib-metadata = "<
|
|
18
|
+
importlib-metadata = "<7.2"
|
|
19
19
|
isort = "*"
|
|
20
|
-
more_itertools = "<10.
|
|
20
|
+
more_itertools = "<10.4"
|
|
21
21
|
mypy = "*"
|
|
22
22
|
pre-commit = "*"
|
|
23
23
|
responses = "*"
|
|
@@ -26,7 +26,7 @@ types-pkg_resources = "*"
|
|
|
26
26
|
types-python-dateutil = "*"
|
|
27
27
|
types-requests = "*"
|
|
28
28
|
types-tabulate = "*"
|
|
29
|
-
lxml = "<=5.
|
|
29
|
+
lxml = "<=5.2.2"
|
|
30
30
|
unittest-xml-reporting = "*"
|
|
31
31
|
|
|
32
32
|
[packages]
|
|
@@ -21,9 +21,9 @@ load("@rules_jvm_external//:specs.bzl", "maven")
|
|
|
21
21
|
maven_install(
|
|
22
22
|
artifacts = [
|
|
23
23
|
"args4j:args4j:2.33", # can't go higher so long as we stay on Java 8
|
|
24
|
-
"com.fasterxml.jackson.core:jackson-annotations:2.
|
|
25
|
-
"com.fasterxml.jackson.core:jackson-core:2.
|
|
26
|
-
"com.fasterxml.jackson.core:jackson-databind:2.
|
|
24
|
+
"com.fasterxml.jackson.core:jackson-annotations:2.17.1",
|
|
25
|
+
"com.fasterxml.jackson.core:jackson-core:2.17.1",
|
|
26
|
+
"com.fasterxml.jackson.core:jackson-databind:2.17.1",
|
|
27
27
|
"com.google.guava:guava:33.1.0-jre",
|
|
28
28
|
"org.apache.httpcomponents:httpclient:4.5.14",
|
|
29
29
|
# This is the last release that produce Java 8 class files.
|
|
@@ -5,15 +5,10 @@ import pathlib
|
|
|
5
5
|
import subprocess
|
|
6
6
|
from typing import Generator, List
|
|
7
7
|
|
|
8
|
-
from junitparser import TestCase
|
|
9
|
-
|
|
10
8
|
import click
|
|
9
|
+
from junitparser import Properties, TestCase # type: ignore
|
|
11
10
|
|
|
12
|
-
from launchable.commands.record.case_event import
|
|
13
|
-
CaseEvent,
|
|
14
|
-
CaseEventType,
|
|
15
|
-
MetadataTestCase,
|
|
16
|
-
)
|
|
11
|
+
from launchable.commands.record.case_event import CaseEvent, CaseEventType, MetadataTestCase
|
|
17
12
|
from launchable.testpath import TestPath
|
|
18
13
|
|
|
19
14
|
from . import launchable
|
|
@@ -137,14 +132,31 @@ split_subset = launchable.CommonSplitSubsetImpls(__name__, formatter=_pytest_for
|
|
|
137
132
|
def record_tests(client, json_report, source_roots):
|
|
138
133
|
|
|
139
134
|
def data_builder(case: TestCase):
|
|
135
|
+
props = case.child(Properties)
|
|
136
|
+
result = {}
|
|
137
|
+
if props is not None:
|
|
138
|
+
"""
|
|
139
|
+
Here is an example of an XML file with markers.
|
|
140
|
+
```
|
|
141
|
+
<properties>
|
|
142
|
+
<property name="name" value="parametrize" />
|
|
143
|
+
<property name="args" value="('y', [2, 3])" />
|
|
144
|
+
<property name="kwargs" value="{}" />
|
|
145
|
+
<property name="name" value="parametrize" />
|
|
146
|
+
<property name="args" value="('x', [0, 1])" />
|
|
147
|
+
<property name="kwargs" value="{}" />
|
|
148
|
+
</properties>
|
|
149
|
+
```
|
|
150
|
+
"""
|
|
151
|
+
markers = [{"name": prop.name, "value": prop.value} for prop in props]
|
|
152
|
+
result["markers"] = markers if markers else []
|
|
153
|
+
|
|
140
154
|
metadata = MetadataTestCase.fromelem(case)
|
|
141
155
|
if metadata and metadata.line is not None:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
return None
|
|
156
|
+
# Please note that line numbers start from 0.
|
|
157
|
+
# https://github.com/pytest-dev/pytest/blob/8.1.1/src/_pytest/_code/source.py#L93
|
|
158
|
+
result["lineNumber"] = metadata.line + 1
|
|
159
|
+
return result
|
|
148
160
|
|
|
149
161
|
ext = "json" if json_report else "xml"
|
|
150
162
|
for root in source_roots:
|
|
@@ -179,13 +179,20 @@ def record_tests(client, test_result_files):
|
|
|
179
179
|
if test_path:
|
|
180
180
|
test_path_components = parse_test_path(test_path)
|
|
181
181
|
status = case['status']
|
|
182
|
-
duration_secs = case
|
|
183
|
-
|
|
182
|
+
duration_secs = case.get('duration', 0)
|
|
183
|
+
if isinstance(duration_secs, str):
|
|
184
|
+
try:
|
|
185
|
+
duration_secs = float(duration_secs)
|
|
186
|
+
except ValueError:
|
|
187
|
+
raise ValueError("The duration of {} in {} isn't a valid format (was {}). Make sure set a valid duration".format(test_path_components, test_result_file, duration_secs)) # noqa
|
|
188
|
+
|
|
189
|
+
created_at = case.get('createdAt', default_created_at)
|
|
184
190
|
|
|
185
191
|
if status not in CaseEvent.STATUS_MAP:
|
|
186
192
|
raise ValueError(
|
|
187
193
|
"The status of {} should be one of {} (was {})".format(test_path_components,
|
|
188
194
|
list(CaseEvent.STATUS_MAP.keys()), status))
|
|
195
|
+
|
|
189
196
|
if duration_secs < 0:
|
|
190
197
|
raise ValueError("The duration of {} should be positive (was {})".format(test_path_components, duration_secs))
|
|
191
198
|
dateutil.parser.parse(created_at)
|
|
@@ -195,8 +202,8 @@ def record_tests(client, test_result_files):
|
|
|
195
202
|
test_path=test_path_components,
|
|
196
203
|
duration_secs=duration_secs,
|
|
197
204
|
status=CaseEvent.STATUS_MAP[status],
|
|
198
|
-
stdout=case
|
|
199
|
-
stderr=case
|
|
205
|
+
stdout=case.get('stdout', ''),
|
|
206
|
+
stderr=case.get('stderr', ''),
|
|
200
207
|
timestamp=created_at,
|
|
201
208
|
data=metadata)
|
|
202
209
|
|
|
@@ -268,6 +268,7 @@ tests/data/playwright/report.json
|
|
|
268
268
|
tests/data/playwright/report.xml
|
|
269
269
|
tests/data/prove/record_test_result.json
|
|
270
270
|
tests/data/prove/report.xml
|
|
271
|
+
tests/data/pytest/pytest.ini
|
|
271
272
|
tests/data/pytest/record_test_result.json
|
|
272
273
|
tests/data/pytest/record_test_result_json.json
|
|
273
274
|
tests/data/pytest/report.json
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
|
|
3
|
-
"__INPUT_ARTIFACTS_HASH":
|
|
4
|
-
"__RESOLVED_ARTIFACTS_HASH":
|
|
3
|
+
"__INPUT_ARTIFACTS_HASH": 518001275,
|
|
4
|
+
"__RESOLVED_ARTIFACTS_HASH": 1246364229,
|
|
5
5
|
"artifacts": {
|
|
6
6
|
"args4j:args4j": {
|
|
7
7
|
"shasums": {
|
|
@@ -26,24 +26,24 @@
|
|
|
26
26
|
},
|
|
27
27
|
"com.fasterxml.jackson.core:jackson-annotations": {
|
|
28
28
|
"shasums": {
|
|
29
|
-
"jar": "
|
|
30
|
-
"sources": "
|
|
29
|
+
"jar": "fccad82e13172c0e4384db71577219c9b8631c0820f4b18daaa57016fb661c76",
|
|
30
|
+
"sources": "21fac7bb75d7023f330b21df9b96c6f448740c84249e3ab3a3f1d6adac1f3d10"
|
|
31
31
|
},
|
|
32
|
-
"version": "2.
|
|
32
|
+
"version": "2.17.1"
|
|
33
33
|
},
|
|
34
34
|
"com.fasterxml.jackson.core:jackson-core": {
|
|
35
35
|
"shasums": {
|
|
36
|
-
"jar": "
|
|
37
|
-
"sources": "
|
|
36
|
+
"jar": "ddb26c8a1f1a84535e8213c48b35b253370434e3287b3cf15777856fc4e58ce6",
|
|
37
|
+
"sources": "c2c97a708be197aae5fee64dcc8b5e8a09c76c79a44c0e8e5b48b235084ec395"
|
|
38
38
|
},
|
|
39
|
-
"version": "2.
|
|
39
|
+
"version": "2.17.1"
|
|
40
40
|
},
|
|
41
41
|
"com.fasterxml.jackson.core:jackson-databind": {
|
|
42
42
|
"shasums": {
|
|
43
|
-
"jar": "
|
|
44
|
-
"sources": "
|
|
43
|
+
"jar": "b6ca2f7d5b1ab245cec5495ec339773d2d90554c48592590673fb18f4400a948",
|
|
44
|
+
"sources": "4ff287ea4cb7030793be989007aa9b4bf22f88b3722a96cdec54fa9867bcc0be"
|
|
45
45
|
},
|
|
46
|
-
"version": "2.
|
|
46
|
+
"version": "2.17.1"
|
|
47
47
|
},
|
|
48
48
|
"com.google.auto.value:auto-value-annotations": {
|
|
49
49
|
"shasums": {
|
|
@@ -188,27 +188,27 @@ class SplitSubsetTest(CliTestCase):
|
|
|
188
188
|
"--split-by-groups-with-rest", "--split-by-groups-output-dir", tmpdir, "file")
|
|
189
189
|
|
|
190
190
|
self.assert_success(result)
|
|
191
|
-
with open("
|
|
191
|
+
with open(os.path.join(tmpdir, "subset-e2e.txt")) as f:
|
|
192
192
|
self.assertEqual(f.read(), "e2e-aaa.py\ne2e-bbb.py")
|
|
193
193
|
|
|
194
|
-
with open("
|
|
194
|
+
with open(os.path.join(tmpdir, "rest-e2e.txt")) as f:
|
|
195
195
|
self.assertEqual(f.read(), "e2e-ccc.py\ne2e-ddd.py")
|
|
196
196
|
|
|
197
197
|
self.assertFalse(os.path.exists("{}/subset-unit-test.txt".format(tmpdir)))
|
|
198
198
|
|
|
199
|
-
with open("
|
|
199
|
+
with open(os.path.join(tmpdir, "rest-unit-test.txt")) as f:
|
|
200
200
|
self.assertEqual(f.read(), "unit-test-111.py\nunit-test-222.py")
|
|
201
201
|
|
|
202
|
-
with open("
|
|
202
|
+
with open(os.path.join(tmpdir, "subset-{}.txt".format(SPLIT_BY_GROUPS_NO_GROUP_NAME))) as f:
|
|
203
203
|
self.assertEqual(f.read(), "aaa.py\nbbb.py")
|
|
204
204
|
|
|
205
|
-
with open("
|
|
205
|
+
with open(os.path.join(tmpdir, "rest-{}.txt".format(SPLIT_BY_GROUPS_NO_GROUP_NAME))) as f:
|
|
206
206
|
self.assertEqual(f.read(), "111.py\n222.py")
|
|
207
207
|
|
|
208
|
-
with open(
|
|
208
|
+
with open(os.path.join(tmpdir, SPLIT_BY_GROUP_SUBSET_GROUPS_FILE_NAME)) as f:
|
|
209
209
|
self.assertEqual(f.read(), "e2e")
|
|
210
210
|
|
|
211
|
-
with open(
|
|
211
|
+
with open(os.path.join(tmpdir, SPLIT_BY_GROUP_REST_GROUPS_FILE_NAME)) as f:
|
|
212
212
|
self.assertEqual(f.read(), "unit-test")
|
|
213
213
|
|
|
214
214
|
@responses.activate
|
|
@@ -250,8 +250,8 @@ class SubsetTest(CliTestCase):
|
|
|
250
250
|
payload = json.loads(gzip.decompress(responses.calls[0].request.body).decode())
|
|
251
251
|
self.assertEqual(payload.get('dropFlakinessThreshold'), 0.05)
|
|
252
252
|
|
|
253
|
-
@
|
|
254
|
-
@
|
|
253
|
+
@responses.activate
|
|
254
|
+
@mock.patch.dict(os.environ, {"LAUNCHABLE_TOKEN": CliTestCase.launchable_token})
|
|
255
255
|
def test_subset_with_get_tests_from_previous_full_runs(self):
|
|
256
256
|
# check error when input candidates are empty without --get-tests-from-previous-sessions option
|
|
257
257
|
result = self.cli("subset", "--target", "30%", "--session", self.session, "file")
|
|
@@ -303,8 +303,8 @@ class SubsetTest(CliTestCase):
|
|
|
303
303
|
rest.close()
|
|
304
304
|
os.unlink(rest.name)
|
|
305
305
|
|
|
306
|
-
@
|
|
307
|
-
@
|
|
306
|
+
@responses.activate
|
|
307
|
+
@mock.patch.dict(os.environ, {"LAUNCHABLE_TOKEN": CliTestCase.launchable_token})
|
|
308
308
|
def test_subset_with_output_exclusion_rules(self):
|
|
309
309
|
pipe = "test_aaa.py\ntest_111.py\ntest_bbb.py\ntest_222.py\ntest_ccc.py\ntest_333.py\n"
|
|
310
310
|
responses.replace(
|
|
@@ -419,8 +419,8 @@ class SubsetTest(CliTestCase):
|
|
|
419
419
|
rest.close()
|
|
420
420
|
os.unlink(rest.name)
|
|
421
421
|
|
|
422
|
-
@
|
|
423
|
-
@
|
|
422
|
+
@responses.activate
|
|
423
|
+
@mock.patch.dict(os.environ, {"LAUNCHABLE_TOKEN": CliTestCase.launchable_token})
|
|
424
424
|
def test_subset_with_observation_and_output_exclusion_rules(self):
|
|
425
425
|
pipe = "test_aaa.py\ntest_111.py\ntest_bbb.py\ntest_222.py\ntest_ccc.py\ntest_333.py\n"
|
|
426
426
|
responses.replace(
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
{
|
|
2
|
+
"events": [
|
|
3
|
+
{
|
|
4
|
+
"type": "case",
|
|
5
|
+
"testPath": [
|
|
6
|
+
{ "type": "file", "name": "tests/fooo/filenameonly_test.py" },
|
|
7
|
+
{ "type": "class", "name": "tests.fooo.filenameonly_test" },
|
|
8
|
+
{ "type": "testcase", "name": "test_x" }
|
|
9
|
+
],
|
|
10
|
+
"duration": 0.0,
|
|
11
|
+
"status": 1,
|
|
12
|
+
"stdout": "",
|
|
13
|
+
"stderr": "",
|
|
14
|
+
"data": { "lineNumber": 1 }
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "case",
|
|
18
|
+
"testPath": [
|
|
19
|
+
{ "type": "file", "name": "tests/fooo/func4_test.py" },
|
|
20
|
+
{ "type": "class", "name": "tests.fooo.func4_test" },
|
|
21
|
+
{ "type": "testcase", "name": "test_func6" }
|
|
22
|
+
],
|
|
23
|
+
"duration": 0.0,
|
|
24
|
+
"status": 1,
|
|
25
|
+
"stdout": "",
|
|
26
|
+
"stderr": "",
|
|
27
|
+
"data": { "lineNumber": 1 }
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "case",
|
|
31
|
+
"testPath": [
|
|
32
|
+
{ "type": "file", "name": "tests/funcs3_test.py" },
|
|
33
|
+
{ "type": "class", "name": "tests.funcs3_test" },
|
|
34
|
+
{ "type": "testcase", "name": "test_func4" }
|
|
35
|
+
],
|
|
36
|
+
"duration": 0.0,
|
|
37
|
+
"status": 1,
|
|
38
|
+
"stdout": "",
|
|
39
|
+
"stderr": "",
|
|
40
|
+
"data": { "lineNumber": 1 }
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "case",
|
|
44
|
+
"testPath": [
|
|
45
|
+
{ "type": "file", "name": "tests/funcs3_test.py" },
|
|
46
|
+
{ "type": "class", "name": "tests.funcs3_test" },
|
|
47
|
+
{ "type": "testcase", "name": "test_func5" }
|
|
48
|
+
],
|
|
49
|
+
"duration": 0.0,
|
|
50
|
+
"status": 0,
|
|
51
|
+
"stdout": "",
|
|
52
|
+
"stderr": "def test_func5():\n > assert 1 == False # noqa: E712\n E assert 1 == False\n\n tests/funcs3_test.py:6: AssertionError",
|
|
53
|
+
"data": { "lineNumber": 5 }
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "case",
|
|
57
|
+
"testPath": [
|
|
58
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
59
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
60
|
+
{ "type": "testcase", "name": "test_func1" }
|
|
61
|
+
],
|
|
62
|
+
"duration": 0.0,
|
|
63
|
+
"status": 1,
|
|
64
|
+
"stdout": "",
|
|
65
|
+
"stderr": "",
|
|
66
|
+
"data": {
|
|
67
|
+
"markers": [
|
|
68
|
+
{ "name": "name", "value": "foo" },
|
|
69
|
+
{ "name": "args", "value": "()" },
|
|
70
|
+
{ "name": "kwargs", "value": "{}" }
|
|
71
|
+
],
|
|
72
|
+
"lineNumber": 3
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "case",
|
|
77
|
+
"testPath": [
|
|
78
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
79
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
80
|
+
{ "type": "testcase", "name": "test_func2" }
|
|
81
|
+
],
|
|
82
|
+
"duration": 0.0,
|
|
83
|
+
"status": 0,
|
|
84
|
+
"stdout": "",
|
|
85
|
+
"stderr": "@pytest.mark.bar\n def test_func2():\n > assert 1 == False # noqa: E712\n E assert 1 == False\n\n tests/test_funcs1.py:9: AssertionError",
|
|
86
|
+
"data": {
|
|
87
|
+
"markers": [
|
|
88
|
+
{ "name": "name", "value": "bar" },
|
|
89
|
+
{ "name": "args", "value": "()" },
|
|
90
|
+
{ "name": "kwargs", "value": "{}" }
|
|
91
|
+
],
|
|
92
|
+
"lineNumber": 7
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "case",
|
|
97
|
+
"testPath": [
|
|
98
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
99
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
100
|
+
{ "type": "testcase", "name": "test_foo[2-0]" }
|
|
101
|
+
],
|
|
102
|
+
"duration": 0.0,
|
|
103
|
+
"status": 0,
|
|
104
|
+
"stdout": "",
|
|
105
|
+
"stderr": "x = 0, y = 2\n\n @pytest.mark.parametrize(\"x\", [0, 1])\n @pytest.mark.parametrize(\"y\", [2, 3])\n def test_foo(x, y):\n > assert x == 1\n E assert 0 == 1\n\n tests/test_funcs1.py:15: AssertionError",
|
|
106
|
+
"data": {
|
|
107
|
+
"markers": [
|
|
108
|
+
{ "name": "name", "value": "parametrize" },
|
|
109
|
+
{ "name": "args", "value": "('y', [2, 3])" },
|
|
110
|
+
{ "name": "kwargs", "value": "{}" },
|
|
111
|
+
{ "name": "name", "value": "parametrize" },
|
|
112
|
+
{ "name": "args", "value": "('x', [0, 1])" },
|
|
113
|
+
{ "name": "kwargs", "value": "{}" }
|
|
114
|
+
],
|
|
115
|
+
"lineNumber": 12
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "case",
|
|
120
|
+
"testPath": [
|
|
121
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
122
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
123
|
+
{ "type": "testcase", "name": "test_foo[2-1]" }
|
|
124
|
+
],
|
|
125
|
+
"duration": 0.0,
|
|
126
|
+
"status": 1,
|
|
127
|
+
"stdout": "",
|
|
128
|
+
"stderr": "",
|
|
129
|
+
"data": {
|
|
130
|
+
"markers": [
|
|
131
|
+
{ "name": "name", "value": "parametrize" },
|
|
132
|
+
{ "name": "args", "value": "('y', [2, 3])" },
|
|
133
|
+
{ "name": "kwargs", "value": "{}" },
|
|
134
|
+
{ "name": "name", "value": "parametrize" },
|
|
135
|
+
{ "name": "args", "value": "('x', [0, 1])" },
|
|
136
|
+
{ "name": "kwargs", "value": "{}" }
|
|
137
|
+
],
|
|
138
|
+
"lineNumber": 12
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"type": "case",
|
|
143
|
+
"testPath": [
|
|
144
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
145
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
146
|
+
{ "type": "testcase", "name": "test_foo[3-0]" }
|
|
147
|
+
],
|
|
148
|
+
"duration": 0.0,
|
|
149
|
+
"status": 0,
|
|
150
|
+
"stdout": "",
|
|
151
|
+
"stderr": "x = 0, y = 3\n\n @pytest.mark.parametrize(\"x\", [0, 1])\n @pytest.mark.parametrize(\"y\", [2, 3])\n def test_foo(x, y):\n > assert x == 1\n E assert 0 == 1\n\n tests/test_funcs1.py:15: AssertionError",
|
|
152
|
+
"data": {
|
|
153
|
+
"markers": [
|
|
154
|
+
{ "name": "name", "value": "parametrize" },
|
|
155
|
+
{ "name": "args", "value": "('y', [2, 3])" },
|
|
156
|
+
{ "name": "kwargs", "value": "{}" },
|
|
157
|
+
{ "name": "name", "value": "parametrize" },
|
|
158
|
+
{ "name": "args", "value": "('x', [0, 1])" },
|
|
159
|
+
{ "name": "kwargs", "value": "{}" }
|
|
160
|
+
],
|
|
161
|
+
"lineNumber": 12
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"type": "case",
|
|
166
|
+
"testPath": [
|
|
167
|
+
{ "type": "file", "name": "tests/test_funcs1.py" },
|
|
168
|
+
{ "type": "class", "name": "tests.test_funcs1" },
|
|
169
|
+
{ "type": "testcase", "name": "test_foo[3-1]" }
|
|
170
|
+
],
|
|
171
|
+
"duration": 0.0,
|
|
172
|
+
"status": 1,
|
|
173
|
+
"stdout": "",
|
|
174
|
+
"stderr": "",
|
|
175
|
+
"data": {
|
|
176
|
+
"markers": [
|
|
177
|
+
{ "name": "name", "value": "parametrize" },
|
|
178
|
+
{ "name": "args", "value": "('y', [2, 3])" },
|
|
179
|
+
{ "name": "kwargs", "value": "{}" },
|
|
180
|
+
{ "name": "name", "value": "parametrize" },
|
|
181
|
+
{ "name": "args", "value": "('x', [0, 1])" },
|
|
182
|
+
{ "name": "kwargs", "value": "{}" }
|
|
183
|
+
],
|
|
184
|
+
"lineNumber": 12
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"type": "case",
|
|
189
|
+
"testPath": [
|
|
190
|
+
{ "type": "file", "name": "tests/test_funcs2.py" },
|
|
191
|
+
{ "type": "class", "name": "tests.test_funcs2" },
|
|
192
|
+
{ "type": "testcase", "name": "test_func3" }
|
|
193
|
+
],
|
|
194
|
+
"duration": 0.0,
|
|
195
|
+
"status": 1,
|
|
196
|
+
"stdout": "",
|
|
197
|
+
"stderr": "",
|
|
198
|
+
"data": {
|
|
199
|
+
"markers": [
|
|
200
|
+
{ "name": "name", "value": "foo" },
|
|
201
|
+
{ "name": "args", "value": "()" },
|
|
202
|
+
{ "name": "kwargs", "value": "{}" }
|
|
203
|
+
],
|
|
204
|
+
"lineNumber": 3
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"type": "case",
|
|
209
|
+
"testPath": [
|
|
210
|
+
{ "type": "file", "name": "tests/test_funcs2.py" },
|
|
211
|
+
{ "type": "class", "name": "tests.test_funcs2" },
|
|
212
|
+
{ "type": "testcase", "name": "test_func4" }
|
|
213
|
+
],
|
|
214
|
+
"duration": 0.0,
|
|
215
|
+
"status": 1,
|
|
216
|
+
"stdout": "",
|
|
217
|
+
"stderr": "",
|
|
218
|
+
"data": {
|
|
219
|
+
"markers": [
|
|
220
|
+
{ "name": "name", "value": "bar" },
|
|
221
|
+
{ "name": "args", "value": "()" },
|
|
222
|
+
{ "name": "kwargs", "value": "{}" }
|
|
223
|
+
],
|
|
224
|
+
"lineNumber": 8
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"testRunner": "pytest",
|
|
229
|
+
"group": "",
|
|
230
|
+
"noBuild": false
|
|
231
|
+
}
|