libv8 8.4.255.0
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.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.gitmodules +3 -0
- data/.rspec +3 -0
- data/.travis.yml +45 -0
- data/CHANGELOG.md +111 -0
- data/Gemfile +4 -0
- data/README.md +152 -0
- data/Rakefile +125 -0
- data/appveyor.yml.disabled +36 -0
- data/ext/libv8/arch.rb +20 -0
- data/ext/libv8/builder.rb +106 -0
- data/ext/libv8/extconf.rb +7 -0
- data/ext/libv8/location.rb +89 -0
- data/ext/libv8/paths.rb +28 -0
- data/lib/libv8.rb +9 -0
- data/lib/libv8/version.rb +3 -0
- data/libv8.gemspec +30 -0
- data/scaleway.png +0 -0
- data/spec/location_spec.rb +69 -0
- data/spec/spec_helper.rb +4 -0
- data/thefrontside.png +0 -0
- data/vendor/depot_tools/.cipd_impl.ps1 +129 -0
- data/vendor/depot_tools/.gitattributes +55 -0
- data/vendor/depot_tools/.gitignore +92 -0
- data/vendor/depot_tools/.style.yapf +4 -0
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +7 -0
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LICENSE +27 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +39 -0
- data/vendor/depot_tools/PRESUBMIT.py +150 -0
- data/vendor/depot_tools/README.gclient.md +67 -0
- data/vendor/depot_tools/README.git-cl.md +99 -0
- data/vendor/depot_tools/README.md +78 -0
- data/vendor/depot_tools/WATCHLISTS +26 -0
- data/vendor/depot_tools/auth.py +163 -0
- data/vendor/depot_tools/autoninja +36 -0
- data/vendor/depot_tools/autoninja.bat +33 -0
- data/vendor/depot_tools/autoninja.py +148 -0
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/README.md +155 -0
- data/vendor/depot_tools/bootstrap/bootstrap.py +356 -0
- data/vendor/depot_tools/bootstrap/git-bash.template.sh +12 -0
- data/vendor/depot_tools/bootstrap/git.template.bat +5 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/profile.d.python.sh +20 -0
- data/vendor/depot_tools/bootstrap/python27.bat +46 -0
- data/vendor/depot_tools/bootstrap/python3.bat +46 -0
- data/vendor/depot_tools/bootstrap/win_tools.bat +79 -0
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/breakpad.py +12 -0
- data/vendor/depot_tools/cbuildbot +1 -0
- data/vendor/depot_tools/chrome_set_ver +1 -0
- data/vendor/depot_tools/cipd +247 -0
- data/vendor/depot_tools/cipd.bat +67 -0
- data/vendor/depot_tools/cipd_bin_setup.bat +6 -0
- data/vendor/depot_tools/cipd_bin_setup.sh +22 -0
- data/vendor/depot_tools/cipd_client_version +1 -0
- data/vendor/depot_tools/cipd_client_version.digests +22 -0
- data/vendor/depot_tools/cipd_manifest.txt +63 -0
- data/vendor/depot_tools/cipd_manifest.versions +438 -0
- data/vendor/depot_tools/cit +8 -0
- data/vendor/depot_tools/cit.bat +12 -0
- data/vendor/depot_tools/cit.py +167 -0
- data/vendor/depot_tools/clang-format +8 -0
- data/vendor/depot_tools/clang-format.bat +12 -0
- data/vendor/depot_tools/clang_format.py +79 -0
- data/vendor/depot_tools/clang_format_merge_driver +8 -0
- data/vendor/depot_tools/clang_format_merge_driver.bat +12 -0
- data/vendor/depot_tools/clang_format_merge_driver.py +69 -0
- data/vendor/depot_tools/codereview.settings +6 -0
- data/vendor/depot_tools/compile_single_file +8 -0
- data/vendor/depot_tools/compile_single_file.bat +11 -0
- data/vendor/depot_tools/compile_single_file.py +79 -0
- data/vendor/depot_tools/cpplint.bat +11 -0
- data/vendor/depot_tools/cpplint.py +6097 -0
- data/vendor/depot_tools/cpplint_chromium.py +50 -0
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -0
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +55 -0
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage +8 -0
- data/vendor/depot_tools/download_from_google_storage.bat +12 -0
- data/vendor/depot_tools/download_from_google_storage.py +634 -0
- data/vendor/depot_tools/ensure_bootstrap +53 -0
- data/vendor/depot_tools/fetch +21 -0
- data/vendor/depot_tools/fetch.bat +28 -0
- data/vendor/depot_tools/fetch.py +319 -0
- data/vendor/depot_tools/fetch_configs/android.py +34 -0
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/breakpad.py +44 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +66 -0
- data/vendor/depot_tools/fetch_configs/config_util.py +52 -0
- data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
- data/vendor/depot_tools/fetch_configs/dart.py +45 -0
- data/vendor/depot_tools/fetch_configs/depot_tools.py +44 -0
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/goma_client.py +41 -0
- data/vendor/depot_tools/fetch_configs/gyp.py +41 -0
- data/vendor/depot_tools/fetch_configs/infra.py +40 -0
- data/vendor/depot_tools/fetch_configs/infra_internal.py +45 -0
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/ios.py +34 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +39 -0
- data/vendor/depot_tools/fetch_configs/nacl.py +48 -0
- data/vendor/depot_tools/fetch_configs/naclports.py +47 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
- data/vendor/depot_tools/fetch_configs/skia.py +41 -0
- data/vendor/depot_tools/fetch_configs/skia_buildbot.py +41 -0
- data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
- data/vendor/depot_tools/fetch_configs/v8.py +44 -0
- data/vendor/depot_tools/fetch_configs/webrtc.py +52 -0
- data/vendor/depot_tools/fetch_configs/webrtc_android.py +34 -0
- data/vendor/depot_tools/fetch_configs/webrtc_ios.py +34 -0
- data/vendor/depot_tools/fix_encoding.py +385 -0
- data/vendor/depot_tools/gclient +38 -0
- data/vendor/depot_tools/gclient-new-workdir.py +124 -0
- data/vendor/depot_tools/gclient.bat +32 -0
- data/vendor/depot_tools/gclient.py +3198 -0
- data/vendor/depot_tools/gclient_completion.sh +76 -0
- data/vendor/depot_tools/gclient_eval.py +891 -0
- data/vendor/depot_tools/gclient_paths.py +152 -0
- data/vendor/depot_tools/gclient_scm.py +1615 -0
- data/vendor/depot_tools/gclient_utils.py +1280 -0
- data/vendor/depot_tools/gerrit_client.py +151 -0
- data/vendor/depot_tools/gerrit_util.py +996 -0
- data/vendor/depot_tools/git-cache +6 -0
- data/vendor/depot_tools/git-cl +6 -0
- data/vendor/depot_tools/git-crrev-parse +53 -0
- data/vendor/depot_tools/git-drover +6 -0
- data/vendor/depot_tools/git-find-releases +6 -0
- data/vendor/depot_tools/git-footers +6 -0
- data/vendor/depot_tools/git-freeze +8 -0
- data/vendor/depot_tools/git-gs +9 -0
- data/vendor/depot_tools/git-hyper-blame +6 -0
- data/vendor/depot_tools/git-map +6 -0
- data/vendor/depot_tools/git-map-branches +6 -0
- data/vendor/depot_tools/git-mark-merge-base +6 -0
- data/vendor/depot_tools/git-nav-downstream +6 -0
- data/vendor/depot_tools/git-nav-upstream +6 -0
- data/vendor/depot_tools/git-new-branch +6 -0
- data/vendor/depot_tools/git-number +6 -0
- data/vendor/depot_tools/git-rebase-update +6 -0
- data/vendor/depot_tools/git-rename-branch +6 -0
- data/vendor/depot_tools/git-reparent-branch +6 -0
- data/vendor/depot_tools/git-retry +8 -0
- data/vendor/depot_tools/git-runhooks +23 -0
- data/vendor/depot_tools/git-squash-branch +6 -0
- data/vendor/depot_tools/git-templates/description +3 -0
- data/vendor/depot_tools/git-templates/hooks/applypatch-msg +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-checkout +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-merge +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-update +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-auto-gc +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-rebase +4 -0
- data/vendor/depot_tools/git-templates/hooks/prepare-commit-msg +4 -0
- data/vendor/depot_tools/git-templates/info/exclude +6 -0
- data/vendor/depot_tools/git-thaw +13 -0
- data/vendor/depot_tools/git-upstream-diff +9 -0
- data/vendor/depot_tools/git_cache.py +786 -0
- data/vendor/depot_tools/git_cl.py +5158 -0
- data/vendor/depot_tools/git_cl_completion.sh +48 -0
- data/vendor/depot_tools/git_common.py +1101 -0
- data/vendor/depot_tools/git_dates.py +62 -0
- data/vendor/depot_tools/git_drover.py +469 -0
- data/vendor/depot_tools/git_find_releases.py +67 -0
- data/vendor/depot_tools/git_footers.py +261 -0
- data/vendor/depot_tools/git_freezer.py +40 -0
- data/vendor/depot_tools/git_hyper_blame.py +391 -0
- data/vendor/depot_tools/git_map.py +166 -0
- data/vendor/depot_tools/git_map_branches.py +354 -0
- data/vendor/depot_tools/git_mark_merge_base.py +73 -0
- data/vendor/depot_tools/git_nav_downstream.py +69 -0
- data/vendor/depot_tools/git_new_branch.py +82 -0
- data/vendor/depot_tools/git_number.py +301 -0
- data/vendor/depot_tools/git_rebase_update.py +351 -0
- data/vendor/depot_tools/git_rename_branch.py +55 -0
- data/vendor/depot_tools/git_reparent_branch.py +101 -0
- data/vendor/depot_tools/git_retry.py +181 -0
- data/vendor/depot_tools/git_squash_branch.py +28 -0
- data/vendor/depot_tools/git_upstream_diff.py +64 -0
- data/vendor/depot_tools/gn +8 -0
- data/vendor/depot_tools/gn.bat +12 -0
- data/vendor/depot_tools/gn.py +78 -0
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +190 -0
- data/vendor/depot_tools/gsutil.py.bat +23 -0
- data/vendor/depot_tools/gsutil.vpython +120 -0
- data/vendor/depot_tools/infra/README.md +1 -0
- data/vendor/depot_tools/infra/config/OWNERS +7 -0
- data/vendor/depot_tools/infra/config/README.md +1 -0
- data/vendor/depot_tools/infra/config/recipes.cfg +26 -0
- data/vendor/depot_tools/led +12 -0
- data/vendor/depot_tools/led.bat +7 -0
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +13 -0
- data/vendor/depot_tools/luci-auth.bat +8 -0
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/mac_toolchain +12 -0
- data/vendor/depot_tools/man/html/depot_tools.html +934 -0
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +1593 -0
- data/vendor/depot_tools/man/html/git-cl.html +1033 -0
- data/vendor/depot_tools/man/html/git-drover.html +1048 -0
- data/vendor/depot_tools/man/html/git-footers.html +878 -0
- data/vendor/depot_tools/man/html/git-freeze.html +859 -0
- data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +904 -0
- data/vendor/depot_tools/man/html/git-map.html +887 -0
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +826 -0
- data/vendor/depot_tools/man/html/git-nav-downstream.html +844 -0
- data/vendor/depot_tools/man/html/git-nav-upstream.html +853 -0
- data/vendor/depot_tools/man/html/git-new-branch.html +932 -0
- data/vendor/depot_tools/man/html/git-rebase-update.html +961 -0
- data/vendor/depot_tools/man/html/git-rename-branch.html +794 -0
- data/vendor/depot_tools/man/html/git-reparent-branch.html +847 -0
- data/vendor/depot_tools/man/html/git-retry.html +858 -0
- data/vendor/depot_tools/man/html/git-squash-branch.html +881 -0
- data/vendor/depot_tools/man/html/git-thaw.html +794 -0
- data/vendor/depot_tools/man/html/git-upstream-diff.html +923 -0
- data/vendor/depot_tools/man/man1/git-cl.1 +198 -0
- data/vendor/depot_tools/man/man1/git-drover.1 +330 -0
- data/vendor/depot_tools/man/man1/git-footers.1 +144 -0
- data/vendor/depot_tools/man/man1/git-freeze.1 +113 -0
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
- data/vendor/depot_tools/man/man1/git-map-branches.1 +210 -0
- data/vendor/depot_tools/man/man1/git-map.1 +179 -0
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +69 -0
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +112 -0
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +122 -0
- data/vendor/depot_tools/man/man1/git-new-branch.1 +176 -0
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +177 -0
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +53 -0
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +93 -0
- data/vendor/depot_tools/man/man1/git-retry.1 +108 -0
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +129 -0
- data/vendor/depot_tools/man/man1/git-thaw.1 +54 -0
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +153 -0
- data/vendor/depot_tools/man/man7/depot_tools.7 +139 -0
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +1061 -0
- data/vendor/depot_tools/man/push_to_gs.sh +4 -0
- data/vendor/depot_tools/man/src/.gitignore +5 -0
- data/vendor/depot_tools/man/src/_aliases.txt +5 -0
- data/vendor/depot_tools/man/src/_footer.txt +8 -0
- data/vendor/depot_tools/man/src/_git-cl_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-drover_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-footers_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-freeze_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-map-branches_desc.helper.txt +4 -0
- data/vendor/depot_tools/man/src/_git-map_desc.helper.txt +3 -0
- data/vendor/depot_tools/man/src/_git-mark-merge-base_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-downstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-upstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-new-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rebase-update_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rename-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-reparent-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-retry_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-squash-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-thaw_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-upstream-diff_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_helper_prefix.txt +1 -0
- data/vendor/depot_tools/man/src/asciidoc-override.css +7 -0
- data/vendor/depot_tools/man/src/common_demo_functions.sh +84 -0
- data/vendor/depot_tools/man/src/demo_repo.sh +43 -0
- data/vendor/depot_tools/man/src/depot_tools.txt +28 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.demo.walkthrough.sh +155 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +432 -0
- data/vendor/depot_tools/man/src/filter_demo_output.py +141 -0
- data/vendor/depot_tools/man/src/git-cl.txt +119 -0
- data/vendor/depot_tools/man/src/git-drover.demo.1.sh +22 -0
- data/vendor/depot_tools/man/src/git-drover.demo.2.sh +23 -0
- data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
- data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
- data/vendor/depot_tools/man/src/git-drover.demo.common.sh +19 -0
- data/vendor/depot_tools/man/src/git-drover.txt +102 -0
- data/vendor/depot_tools/man/src/git-footers.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-footers.txt +71 -0
- data/vendor/depot_tools/man/src/git-freeze.demo.1.sh +23 -0
- data/vendor/depot_tools/man/src/git-freeze.txt +54 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +8 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +64 -0
- data/vendor/depot_tools/man/src/git-map.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-map.txt +67 -0
- data/vendor/depot_tools/man/src/git-mark-merge-base.txt +46 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.txt +40 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.txt +39 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-new-branch.txt +82 -0
- data/vendor/depot_tools/man/src/git-rebase-update.txt +141 -0
- data/vendor/depot_tools/man/src/git-rename-branch.txt +28 -0
- data/vendor/depot_tools/man/src/git-reparent-branch.txt +61 -0
- data/vendor/depot_tools/man/src/git-retry.txt +67 -0
- data/vendor/depot_tools/man/src/git-squash-branch.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-squash-branch.txt +59 -0
- data/vendor/depot_tools/man/src/git-thaw.txt +29 -0
- data/vendor/depot_tools/man/src/git-upstream-diff.txt +107 -0
- data/vendor/depot_tools/man/src/make_docs.sh +260 -0
- data/vendor/depot_tools/man/src/prep_demo_repo.sh +103 -0
- data/vendor/depot_tools/metrics.README.md +101 -0
- data/vendor/depot_tools/metrics.py +297 -0
- data/vendor/depot_tools/metrics_utils.py +293 -0
- data/vendor/depot_tools/my_activity.py +971 -0
- data/vendor/depot_tools/ninja +44 -0
- data/vendor/depot_tools/ninja-linux32 +0 -0
- data/vendor/depot_tools/ninja-linux64 +0 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninja.exe +0 -0
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +233 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +125 -0
- data/vendor/depot_tools/owners.py +641 -0
- data/vendor/depot_tools/owners_finder.py +385 -0
- data/vendor/depot_tools/post_build_ninja_summary.py +350 -0
- data/vendor/depot_tools/presubmit_canned_checks.py +1655 -0
- data/vendor/depot_tools/presubmit_support.py +1923 -0
- data/vendor/depot_tools/profile.xml +8 -0
- data/vendor/depot_tools/prpc +13 -0
- data/vendor/depot_tools/prpc.bat +8 -0
- data/vendor/depot_tools/pylint +9 -0
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/pylint.bat +12 -0
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +349 -0
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +60 -0
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +4 -0
- data/vendor/depot_tools/recipes/README.recipes.md +1079 -0
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +38 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +516 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +118 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +194 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +210 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +214 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +212 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +210 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +209 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +193 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +308 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/__init__.py +0 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +1258 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +455 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +411 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +315 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.py +187 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.py +59 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +75 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +428 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +462 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +240 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +36 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/__init__.py +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +178 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +284 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +73 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/test_api.py +53 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +11 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +405 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +216 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +164 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +239 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +290 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +111 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +221 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +170 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/resources/git_setup.py +52 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/test_api.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +50 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/config.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +105 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +47 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +257 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +596 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/test_api.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/__init__.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +36 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +140 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +264 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +57 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +108 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +21 -0
- data/vendor/depot_tools/recipes/recipes.py +249 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +175 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +56 -0
- data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +13 -0
- data/vendor/depot_tools/repo +1194 -0
- data/vendor/depot_tools/roll-dep +21 -0
- data/vendor/depot_tools/roll-dep.bat +21 -0
- data/vendor/depot_tools/roll_dep.py +282 -0
- data/vendor/depot_tools/scm.py +415 -0
- data/vendor/depot_tools/setup_color.py +130 -0
- data/vendor/depot_tools/split_cl.py +263 -0
- data/vendor/depot_tools/subcommand.py +261 -0
- data/vendor/depot_tools/subprocess2.py +258 -0
- data/vendor/depot_tools/third_party/__init__.py +5 -0
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +27 -0
- data/vendor/depot_tools/third_party/colorama/README.chromium +12 -0
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +6 -0
- data/vendor/depot_tools/third_party/colorama/ansi.py +102 -0
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +257 -0
- data/vendor/depot_tools/third_party/colorama/initialise.py +80 -0
- data/vendor/depot_tools/third_party/colorama/win32.py +152 -0
- data/vendor/depot_tools/third_party/colorama/winterm.py +169 -0
- data/vendor/depot_tools/third_party/coverage/AUTHORS.txt +43 -0
- data/vendor/depot_tools/third_party/coverage/PKG-INFO +41 -0
- data/vendor/depot_tools/third_party/coverage/README.chromium +13 -0
- data/vendor/depot_tools/third_party/coverage/__init__.py +120 -0
- data/vendor/depot_tools/third_party/coverage/__main__.py +4 -0
- data/vendor/depot_tools/third_party/coverage/annotate.py +101 -0
- data/vendor/depot_tools/third_party/coverage/backward.py +184 -0
- data/vendor/depot_tools/third_party/coverage/bytecode.py +75 -0
- data/vendor/depot_tools/third_party/coverage/cmdline.py +740 -0
- data/vendor/depot_tools/third_party/coverage/codeunit.py +145 -0
- data/vendor/depot_tools/third_party/coverage/collector.py +353 -0
- data/vendor/depot_tools/third_party/coverage/config.py +213 -0
- data/vendor/depot_tools/third_party/coverage/control.py +776 -0
- data/vendor/depot_tools/third_party/coverage/data.py +278 -0
- data/vendor/depot_tools/third_party/coverage/debug.py +54 -0
- data/vendor/depot_tools/third_party/coverage/execfile.py +171 -0
- data/vendor/depot_tools/third_party/coverage/files.py +309 -0
- data/vendor/depot_tools/third_party/coverage/fullcoverage/encodings.py +57 -0
- data/vendor/depot_tools/third_party/coverage/html.py +387 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/coverage_html.js +376 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/index.html +104 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery-1.4.3.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.hotkeys.js +99 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.isonscreen.js +53 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.tablesorter.min.js +2 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_closed.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_open.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/pyfile.html +90 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/style.css +300 -0
- data/vendor/depot_tools/third_party/coverage/misc.py +163 -0
- data/vendor/depot_tools/third_party/coverage/parser.py +666 -0
- data/vendor/depot_tools/third_party/coverage/phystokens.py +208 -0
- data/vendor/depot_tools/third_party/coverage/report.py +92 -0
- data/vendor/depot_tools/third_party/coverage/results.py +286 -0
- data/vendor/depot_tools/third_party/coverage/summary.py +86 -0
- data/vendor/depot_tools/third_party/coverage/templite.py +166 -0
- data/vendor/depot_tools/third_party/coverage/version.py +9 -0
- data/vendor/depot_tools/third_party/coverage/xmlreport.py +155 -0
- data/vendor/depot_tools/third_party/httplib2/LICENSE +1339 -0
- data/vendor/depot_tools/third_party/httplib2/README.chromium +15 -0
- data/vendor/depot_tools/third_party/httplib2/__init__.py +1780 -0
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +2196 -0
- data/vendor/depot_tools/third_party/httplib2/iri2uri.py +110 -0
- data/vendor/depot_tools/third_party/httplib2/socks.py +448 -0
- data/vendor/depot_tools/third_party/repo/COPYING +202 -0
- data/vendor/depot_tools/third_party/repo/README.chromium +4 -0
- data/vendor/depot_tools/third_party/repo/__init__.py +0 -0
- data/vendor/depot_tools/third_party/repo/progress.py +117 -0
- data/vendor/depot_tools/third_party/retry_decorator/LICENSE.google +30 -0
- data/vendor/depot_tools/third_party/retry_decorator/__init__.py +0 -0
- data/vendor/depot_tools/third_party/retry_decorator/decorators.py +45 -0
- data/vendor/depot_tools/third_party/schema/.editorconfig +15 -0
- data/vendor/depot_tools/third_party/schema/.gitignore +174 -0
- data/vendor/depot_tools/third_party/schema/.travis.yml +37 -0
- data/vendor/depot_tools/third_party/schema/LICENSE-MIT +19 -0
- data/vendor/depot_tools/third_party/schema/MANIFEST.in +1 -0
- data/vendor/depot_tools/third_party/schema/README.chromium +12 -0
- data/vendor/depot_tools/third_party/schema/README.rst +382 -0
- data/vendor/depot_tools/third_party/schema/__init__.py +1 -0
- data/vendor/depot_tools/third_party/schema/schema.py +338 -0
- data/vendor/depot_tools/third_party/schema/setup.cfg +5 -0
- data/vendor/depot_tools/third_party/schema/setup.py +30 -0
- data/vendor/depot_tools/third_party/schema/test_schema.py +556 -0
- data/vendor/depot_tools/third_party/schema/tox.ini +33 -0
- data/vendor/depot_tools/third_party/six/LICENSE.txt +18 -0
- data/vendor/depot_tools/third_party/six/README.chromium +10 -0
- data/vendor/depot_tools/third_party/six/__init__.py +762 -0
- data/vendor/depot_tools/update_depot_tools +138 -0
- data/vendor/depot_tools/update_depot_tools.bat +65 -0
- data/vendor/depot_tools/update_depot_tools_toggle.py +38 -0
- data/vendor/depot_tools/upload_metrics.py +26 -0
- data/vendor/depot_tools/upload_to_google_storage.py +306 -0
- data/vendor/depot_tools/vpython +42 -0
- data/vendor/depot_tools/vpython.bat +7 -0
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +141 -0
- data/vendor/depot_tools/weekly +54 -0
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/OWNERS +2 -0
- data/vendor/depot_tools/win_toolchain/README.md +74 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +599 -0
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +524 -0
- data/vendor/depot_tools/wtf +81 -0
- data/vendor/depot_tools/yapf +21 -0
- data/vendor/depot_tools/yapf.bat +12 -0
- data/vendor/depot_tools/zsh-goodies/README +6 -0
- data/vendor/depot_tools/zsh-goodies/_gclient +14 -0
- metadata +729 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"""Add things to old Pythons so I can pretend they are newer."""
|
|
2
|
+
|
|
3
|
+
# This file does lots of tricky stuff, so disable a bunch of lintisms.
|
|
4
|
+
# pylint: disable=F0401,W0611,W0622
|
|
5
|
+
# F0401: Unable to import blah
|
|
6
|
+
# W0611: Unused import blah
|
|
7
|
+
# W0622: Redefining built-in blah
|
|
8
|
+
|
|
9
|
+
import os, re, sys
|
|
10
|
+
|
|
11
|
+
# Python 2.3 doesn't have `set`
|
|
12
|
+
try:
|
|
13
|
+
set = set # new in 2.4
|
|
14
|
+
except NameError:
|
|
15
|
+
from sets import Set as set
|
|
16
|
+
|
|
17
|
+
# Python 2.3 doesn't have `sorted`.
|
|
18
|
+
try:
|
|
19
|
+
sorted = sorted
|
|
20
|
+
except NameError:
|
|
21
|
+
def sorted(iterable):
|
|
22
|
+
"""A 2.3-compatible implementation of `sorted`."""
|
|
23
|
+
lst = list(iterable)
|
|
24
|
+
lst.sort()
|
|
25
|
+
return lst
|
|
26
|
+
|
|
27
|
+
# Python 2.3 doesn't have `reversed`.
|
|
28
|
+
try:
|
|
29
|
+
reversed = reversed
|
|
30
|
+
except NameError:
|
|
31
|
+
def reversed(iterable):
|
|
32
|
+
"""A 2.3-compatible implementation of `reversed`."""
|
|
33
|
+
lst = list(iterable)
|
|
34
|
+
return lst[::-1]
|
|
35
|
+
|
|
36
|
+
# rpartition is new in 2.5
|
|
37
|
+
try:
|
|
38
|
+
"".rpartition
|
|
39
|
+
except AttributeError:
|
|
40
|
+
def rpartition(s, sep):
|
|
41
|
+
"""Implement s.rpartition(sep) for old Pythons."""
|
|
42
|
+
i = s.rfind(sep)
|
|
43
|
+
if i == -1:
|
|
44
|
+
return ('', '', s)
|
|
45
|
+
else:
|
|
46
|
+
return (s[:i], sep, s[i+len(sep):])
|
|
47
|
+
else:
|
|
48
|
+
def rpartition(s, sep):
|
|
49
|
+
"""A common interface for new Pythons."""
|
|
50
|
+
return s.rpartition(sep)
|
|
51
|
+
|
|
52
|
+
# Pythons 2 and 3 differ on where to get StringIO
|
|
53
|
+
try:
|
|
54
|
+
from cStringIO import StringIO
|
|
55
|
+
BytesIO = StringIO
|
|
56
|
+
except ImportError:
|
|
57
|
+
from io import StringIO, BytesIO
|
|
58
|
+
|
|
59
|
+
# What's a string called?
|
|
60
|
+
try:
|
|
61
|
+
string_class = basestring
|
|
62
|
+
except NameError:
|
|
63
|
+
string_class = str
|
|
64
|
+
|
|
65
|
+
# Where do pickles come from?
|
|
66
|
+
try:
|
|
67
|
+
import cPickle as pickle
|
|
68
|
+
except ImportError:
|
|
69
|
+
import pickle
|
|
70
|
+
|
|
71
|
+
# range or xrange?
|
|
72
|
+
try:
|
|
73
|
+
range = xrange
|
|
74
|
+
except NameError:
|
|
75
|
+
range = range
|
|
76
|
+
|
|
77
|
+
# A function to iterate listlessly over a dict's items.
|
|
78
|
+
try:
|
|
79
|
+
{}.iteritems
|
|
80
|
+
except AttributeError:
|
|
81
|
+
def iitems(d):
|
|
82
|
+
"""Produce the items from dict `d`."""
|
|
83
|
+
return d.items()
|
|
84
|
+
else:
|
|
85
|
+
def iitems(d):
|
|
86
|
+
"""Produce the items from dict `d`."""
|
|
87
|
+
return d.iteritems()
|
|
88
|
+
|
|
89
|
+
# Exec is a statement in Py2, a function in Py3
|
|
90
|
+
if sys.version_info >= (3, 0):
|
|
91
|
+
def exec_code_object(code, global_map):
|
|
92
|
+
"""A wrapper around exec()."""
|
|
93
|
+
exec(code, global_map)
|
|
94
|
+
else:
|
|
95
|
+
# OK, this is pretty gross. In Py2, exec was a statement, but that will
|
|
96
|
+
# be a syntax error if we try to put it in a Py3 file, even if it is never
|
|
97
|
+
# executed. So hide it inside an evaluated string literal instead.
|
|
98
|
+
eval(
|
|
99
|
+
compile(
|
|
100
|
+
"def exec_code_object(code, global_map):\n"
|
|
101
|
+
" exec code in global_map\n",
|
|
102
|
+
"<exec_function>", "exec"
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# Reading Python source and interpreting the coding comment is a big deal.
|
|
107
|
+
if sys.version_info >= (3, 0):
|
|
108
|
+
# Python 3.2 provides `tokenize.open`, the best way to open source files.
|
|
109
|
+
import tokenize
|
|
110
|
+
try:
|
|
111
|
+
open_source = tokenize.open # pylint: disable=E1101
|
|
112
|
+
except AttributeError:
|
|
113
|
+
from io import TextIOWrapper
|
|
114
|
+
detect_encoding = tokenize.detect_encoding # pylint: disable=E1101
|
|
115
|
+
# Copied from the 3.2 stdlib:
|
|
116
|
+
def open_source(fname):
|
|
117
|
+
"""Open a file in read only mode using the encoding detected by
|
|
118
|
+
detect_encoding().
|
|
119
|
+
"""
|
|
120
|
+
buffer = open(fname, 'rb')
|
|
121
|
+
encoding, _ = detect_encoding(buffer.readline)
|
|
122
|
+
buffer.seek(0)
|
|
123
|
+
text = TextIOWrapper(buffer, encoding, line_buffering=True)
|
|
124
|
+
text.mode = 'r'
|
|
125
|
+
return text
|
|
126
|
+
else:
|
|
127
|
+
def open_source(fname):
|
|
128
|
+
"""Open a source file the best way."""
|
|
129
|
+
return open(fname, "rU")
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# Python 3.x is picky about bytes and strings, so provide methods to
|
|
133
|
+
# get them right, and make them no-ops in 2.x
|
|
134
|
+
if sys.version_info >= (3, 0):
|
|
135
|
+
def to_bytes(s):
|
|
136
|
+
"""Convert string `s` to bytes."""
|
|
137
|
+
return s.encode('utf8')
|
|
138
|
+
|
|
139
|
+
def to_string(b):
|
|
140
|
+
"""Convert bytes `b` to a string."""
|
|
141
|
+
return b.decode('utf8')
|
|
142
|
+
|
|
143
|
+
def binary_bytes(byte_values):
|
|
144
|
+
"""Produce a byte string with the ints from `byte_values`."""
|
|
145
|
+
return bytes(byte_values)
|
|
146
|
+
|
|
147
|
+
def byte_to_int(byte_value):
|
|
148
|
+
"""Turn an element of a bytes object into an int."""
|
|
149
|
+
return byte_value
|
|
150
|
+
|
|
151
|
+
def bytes_to_ints(bytes_value):
|
|
152
|
+
"""Turn a bytes object into a sequence of ints."""
|
|
153
|
+
# In Py3, iterating bytes gives ints.
|
|
154
|
+
return bytes_value
|
|
155
|
+
|
|
156
|
+
else:
|
|
157
|
+
def to_bytes(s):
|
|
158
|
+
"""Convert string `s` to bytes (no-op in 2.x)."""
|
|
159
|
+
return s
|
|
160
|
+
|
|
161
|
+
def to_string(b):
|
|
162
|
+
"""Convert bytes `b` to a string (no-op in 2.x)."""
|
|
163
|
+
return b
|
|
164
|
+
|
|
165
|
+
def binary_bytes(byte_values):
|
|
166
|
+
"""Produce a byte string with the ints from `byte_values`."""
|
|
167
|
+
return "".join([chr(b) for b in byte_values])
|
|
168
|
+
|
|
169
|
+
def byte_to_int(byte_value):
|
|
170
|
+
"""Turn an element of a bytes object into an int."""
|
|
171
|
+
return ord(byte_value)
|
|
172
|
+
|
|
173
|
+
def bytes_to_ints(bytes_value):
|
|
174
|
+
"""Turn a bytes object into a sequence of ints."""
|
|
175
|
+
for byte in bytes_value:
|
|
176
|
+
yield ord(byte)
|
|
177
|
+
|
|
178
|
+
# Md5 is available in different places.
|
|
179
|
+
try:
|
|
180
|
+
import hashlib
|
|
181
|
+
md5 = hashlib.md5
|
|
182
|
+
except ImportError:
|
|
183
|
+
import md5
|
|
184
|
+
md5 = md5.new
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Bytecode manipulation for coverage.py"""
|
|
2
|
+
|
|
3
|
+
import opcode, types
|
|
4
|
+
|
|
5
|
+
from coverage.backward import byte_to_int
|
|
6
|
+
|
|
7
|
+
class ByteCode(object):
|
|
8
|
+
"""A single bytecode."""
|
|
9
|
+
def __init__(self):
|
|
10
|
+
# The offset of this bytecode in the code object.
|
|
11
|
+
self.offset = -1
|
|
12
|
+
|
|
13
|
+
# The opcode, defined in the `opcode` module.
|
|
14
|
+
self.op = -1
|
|
15
|
+
|
|
16
|
+
# The argument, a small integer, whose meaning depends on the opcode.
|
|
17
|
+
self.arg = -1
|
|
18
|
+
|
|
19
|
+
# The offset in the code object of the next bytecode.
|
|
20
|
+
self.next_offset = -1
|
|
21
|
+
|
|
22
|
+
# The offset to jump to.
|
|
23
|
+
self.jump_to = -1
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ByteCodes(object):
|
|
27
|
+
"""Iterator over byte codes in `code`.
|
|
28
|
+
|
|
29
|
+
Returns `ByteCode` objects.
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
# pylint: disable=R0924
|
|
33
|
+
def __init__(self, code):
|
|
34
|
+
self.code = code
|
|
35
|
+
|
|
36
|
+
def __getitem__(self, i):
|
|
37
|
+
return byte_to_int(self.code[i])
|
|
38
|
+
|
|
39
|
+
def __iter__(self):
|
|
40
|
+
offset = 0
|
|
41
|
+
while offset < len(self.code):
|
|
42
|
+
bc = ByteCode()
|
|
43
|
+
bc.op = self[offset]
|
|
44
|
+
bc.offset = offset
|
|
45
|
+
|
|
46
|
+
next_offset = offset+1
|
|
47
|
+
if bc.op >= opcode.HAVE_ARGUMENT:
|
|
48
|
+
bc.arg = self[offset+1] + 256*self[offset+2]
|
|
49
|
+
next_offset += 2
|
|
50
|
+
|
|
51
|
+
label = -1
|
|
52
|
+
if bc.op in opcode.hasjrel:
|
|
53
|
+
label = next_offset + bc.arg
|
|
54
|
+
elif bc.op in opcode.hasjabs:
|
|
55
|
+
label = bc.arg
|
|
56
|
+
bc.jump_to = label
|
|
57
|
+
|
|
58
|
+
bc.next_offset = offset = next_offset
|
|
59
|
+
yield bc
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class CodeObjects(object):
|
|
63
|
+
"""Iterate over all the code objects in `code`."""
|
|
64
|
+
def __init__(self, code):
|
|
65
|
+
self.stack = [code]
|
|
66
|
+
|
|
67
|
+
def __iter__(self):
|
|
68
|
+
while self.stack:
|
|
69
|
+
# We're going to return the code object on the stack, but first
|
|
70
|
+
# push its children for later returning.
|
|
71
|
+
code = self.stack.pop()
|
|
72
|
+
for c in code.co_consts:
|
|
73
|
+
if isinstance(c, types.CodeType):
|
|
74
|
+
self.stack.append(c)
|
|
75
|
+
yield code
|
|
@@ -0,0 +1,740 @@
|
|
|
1
|
+
"""Command-line support for Coverage."""
|
|
2
|
+
|
|
3
|
+
import optparse, os, sys, traceback
|
|
4
|
+
|
|
5
|
+
from coverage.backward import sorted # pylint: disable=W0622
|
|
6
|
+
from coverage.execfile import run_python_file, run_python_module
|
|
7
|
+
from coverage.misc import CoverageException, ExceptionDuringRun, NoSource
|
|
8
|
+
from coverage.debug import info_formatter
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Opts(object):
|
|
12
|
+
"""A namespace class for individual options we'll build parsers from."""
|
|
13
|
+
|
|
14
|
+
append = optparse.make_option(
|
|
15
|
+
'-a', '--append', action='store_false', dest="erase_first",
|
|
16
|
+
help="Append coverage data to .coverage, otherwise it is started "
|
|
17
|
+
"clean with each run."
|
|
18
|
+
)
|
|
19
|
+
branch = optparse.make_option(
|
|
20
|
+
'', '--branch', action='store_true',
|
|
21
|
+
help="Measure branch coverage in addition to statement coverage."
|
|
22
|
+
)
|
|
23
|
+
debug = optparse.make_option(
|
|
24
|
+
'', '--debug', action='store', metavar="OPTS",
|
|
25
|
+
help="Debug options, separated by commas"
|
|
26
|
+
)
|
|
27
|
+
directory = optparse.make_option(
|
|
28
|
+
'-d', '--directory', action='store', metavar="DIR",
|
|
29
|
+
help="Write the output files to DIR."
|
|
30
|
+
)
|
|
31
|
+
fail_under = optparse.make_option(
|
|
32
|
+
'', '--fail-under', action='store', metavar="MIN", type="int",
|
|
33
|
+
help="Exit with a status of 2 if the total coverage is less than MIN."
|
|
34
|
+
)
|
|
35
|
+
help = optparse.make_option(
|
|
36
|
+
'-h', '--help', action='store_true',
|
|
37
|
+
help="Get help on this command."
|
|
38
|
+
)
|
|
39
|
+
ignore_errors = optparse.make_option(
|
|
40
|
+
'-i', '--ignore-errors', action='store_true',
|
|
41
|
+
help="Ignore errors while reading source files."
|
|
42
|
+
)
|
|
43
|
+
include = optparse.make_option(
|
|
44
|
+
'', '--include', action='store',
|
|
45
|
+
metavar="PAT1,PAT2,...",
|
|
46
|
+
help="Include files only when their filename path matches one of "
|
|
47
|
+
"these patterns. Usually needs quoting on the command line."
|
|
48
|
+
)
|
|
49
|
+
pylib = optparse.make_option(
|
|
50
|
+
'-L', '--pylib', action='store_true',
|
|
51
|
+
help="Measure coverage even inside the Python installed library, "
|
|
52
|
+
"which isn't done by default."
|
|
53
|
+
)
|
|
54
|
+
show_missing = optparse.make_option(
|
|
55
|
+
'-m', '--show-missing', action='store_true',
|
|
56
|
+
help="Show line numbers of statements in each module that weren't "
|
|
57
|
+
"executed."
|
|
58
|
+
)
|
|
59
|
+
old_omit = optparse.make_option(
|
|
60
|
+
'-o', '--omit', action='store',
|
|
61
|
+
metavar="PAT1,PAT2,...",
|
|
62
|
+
help="Omit files when their filename matches one of these patterns. "
|
|
63
|
+
"Usually needs quoting on the command line."
|
|
64
|
+
)
|
|
65
|
+
omit = optparse.make_option(
|
|
66
|
+
'', '--omit', action='store',
|
|
67
|
+
metavar="PAT1,PAT2,...",
|
|
68
|
+
help="Omit files when their filename matches one of these patterns. "
|
|
69
|
+
"Usually needs quoting on the command line."
|
|
70
|
+
)
|
|
71
|
+
output_xml = optparse.make_option(
|
|
72
|
+
'-o', '', action='store', dest="outfile",
|
|
73
|
+
metavar="OUTFILE",
|
|
74
|
+
help="Write the XML report to this file. Defaults to 'coverage.xml'"
|
|
75
|
+
)
|
|
76
|
+
parallel_mode = optparse.make_option(
|
|
77
|
+
'-p', '--parallel-mode', action='store_true',
|
|
78
|
+
help="Append the machine name, process id and random number to the "
|
|
79
|
+
".coverage data file name to simplify collecting data from "
|
|
80
|
+
"many processes."
|
|
81
|
+
)
|
|
82
|
+
module = optparse.make_option(
|
|
83
|
+
'-m', '--module', action='store_true',
|
|
84
|
+
help="<pyfile> is an importable Python module, not a script path, "
|
|
85
|
+
"to be run as 'python -m' would run it."
|
|
86
|
+
)
|
|
87
|
+
rcfile = optparse.make_option(
|
|
88
|
+
'', '--rcfile', action='store',
|
|
89
|
+
help="Specify configuration file. Defaults to '.coveragerc'"
|
|
90
|
+
)
|
|
91
|
+
source = optparse.make_option(
|
|
92
|
+
'', '--source', action='store', metavar="SRC1,SRC2,...",
|
|
93
|
+
help="A list of packages or directories of code to be measured."
|
|
94
|
+
)
|
|
95
|
+
timid = optparse.make_option(
|
|
96
|
+
'', '--timid', action='store_true',
|
|
97
|
+
help="Use a simpler but slower trace method. Try this if you get "
|
|
98
|
+
"seemingly impossible results!"
|
|
99
|
+
)
|
|
100
|
+
title = optparse.make_option(
|
|
101
|
+
'', '--title', action='store', metavar="TITLE",
|
|
102
|
+
help="A text string to use as the title on the HTML."
|
|
103
|
+
)
|
|
104
|
+
version = optparse.make_option(
|
|
105
|
+
'', '--version', action='store_true',
|
|
106
|
+
help="Display version information and exit."
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class CoverageOptionParser(optparse.OptionParser, object):
|
|
111
|
+
"""Base OptionParser for coverage.
|
|
112
|
+
|
|
113
|
+
Problems don't exit the program.
|
|
114
|
+
Defaults are initialized for all options.
|
|
115
|
+
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
def __init__(self, *args, **kwargs):
|
|
119
|
+
super(CoverageOptionParser, self).__init__(
|
|
120
|
+
add_help_option=False, *args, **kwargs
|
|
121
|
+
)
|
|
122
|
+
self.set_defaults(
|
|
123
|
+
actions=[],
|
|
124
|
+
branch=None,
|
|
125
|
+
debug=None,
|
|
126
|
+
directory=None,
|
|
127
|
+
fail_under=None,
|
|
128
|
+
help=None,
|
|
129
|
+
ignore_errors=None,
|
|
130
|
+
include=None,
|
|
131
|
+
omit=None,
|
|
132
|
+
parallel_mode=None,
|
|
133
|
+
module=None,
|
|
134
|
+
pylib=None,
|
|
135
|
+
rcfile=True,
|
|
136
|
+
show_missing=None,
|
|
137
|
+
source=None,
|
|
138
|
+
timid=None,
|
|
139
|
+
title=None,
|
|
140
|
+
erase_first=None,
|
|
141
|
+
version=None,
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
self.disable_interspersed_args()
|
|
145
|
+
self.help_fn = self.help_noop
|
|
146
|
+
|
|
147
|
+
def help_noop(self, error=None, topic=None, parser=None):
|
|
148
|
+
"""No-op help function."""
|
|
149
|
+
pass
|
|
150
|
+
|
|
151
|
+
class OptionParserError(Exception):
|
|
152
|
+
"""Used to stop the optparse error handler ending the process."""
|
|
153
|
+
pass
|
|
154
|
+
|
|
155
|
+
def parse_args(self, args=None, options=None):
|
|
156
|
+
"""Call optparse.parse_args, but return a triple:
|
|
157
|
+
|
|
158
|
+
(ok, options, args)
|
|
159
|
+
|
|
160
|
+
"""
|
|
161
|
+
try:
|
|
162
|
+
options, args = \
|
|
163
|
+
super(CoverageOptionParser, self).parse_args(args, options)
|
|
164
|
+
except self.OptionParserError:
|
|
165
|
+
return False, None, None
|
|
166
|
+
return True, options, args
|
|
167
|
+
|
|
168
|
+
def error(self, msg):
|
|
169
|
+
"""Override optparse.error so sys.exit doesn't get called."""
|
|
170
|
+
self.help_fn(msg)
|
|
171
|
+
raise self.OptionParserError
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class ClassicOptionParser(CoverageOptionParser):
|
|
175
|
+
"""Command-line parser for coverage.py classic arguments."""
|
|
176
|
+
|
|
177
|
+
def __init__(self):
|
|
178
|
+
super(ClassicOptionParser, self).__init__()
|
|
179
|
+
|
|
180
|
+
self.add_action('-a', '--annotate', 'annotate')
|
|
181
|
+
self.add_action('-b', '--html', 'html')
|
|
182
|
+
self.add_action('-c', '--combine', 'combine')
|
|
183
|
+
self.add_action('-e', '--erase', 'erase')
|
|
184
|
+
self.add_action('-r', '--report', 'report')
|
|
185
|
+
self.add_action('-x', '--execute', 'execute')
|
|
186
|
+
|
|
187
|
+
self.add_options([
|
|
188
|
+
Opts.directory,
|
|
189
|
+
Opts.help,
|
|
190
|
+
Opts.ignore_errors,
|
|
191
|
+
Opts.pylib,
|
|
192
|
+
Opts.show_missing,
|
|
193
|
+
Opts.old_omit,
|
|
194
|
+
Opts.parallel_mode,
|
|
195
|
+
Opts.timid,
|
|
196
|
+
Opts.version,
|
|
197
|
+
])
|
|
198
|
+
|
|
199
|
+
def add_action(self, dash, dashdash, action_code):
|
|
200
|
+
"""Add a specialized option that is the action to execute."""
|
|
201
|
+
option = self.add_option(dash, dashdash, action='callback',
|
|
202
|
+
callback=self._append_action
|
|
203
|
+
)
|
|
204
|
+
option.action_code = action_code
|
|
205
|
+
|
|
206
|
+
def _append_action(self, option, opt_unused, value_unused, parser):
|
|
207
|
+
"""Callback for an option that adds to the `actions` list."""
|
|
208
|
+
parser.values.actions.append(option.action_code)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class CmdOptionParser(CoverageOptionParser):
|
|
212
|
+
"""Parse one of the new-style commands for coverage.py."""
|
|
213
|
+
|
|
214
|
+
def __init__(self, action, options=None, defaults=None, usage=None,
|
|
215
|
+
cmd=None, description=None
|
|
216
|
+
):
|
|
217
|
+
"""Create an OptionParser for a coverage command.
|
|
218
|
+
|
|
219
|
+
`action` is the slug to put into `options.actions`.
|
|
220
|
+
`options` is a list of Option's for the command.
|
|
221
|
+
`defaults` is a dict of default value for options.
|
|
222
|
+
`usage` is the usage string to display in help.
|
|
223
|
+
`cmd` is the command name, if different than `action`.
|
|
224
|
+
`description` is the description of the command, for the help text.
|
|
225
|
+
|
|
226
|
+
"""
|
|
227
|
+
if usage:
|
|
228
|
+
usage = "%prog " + usage
|
|
229
|
+
super(CmdOptionParser, self).__init__(
|
|
230
|
+
prog="coverage %s" % (cmd or action),
|
|
231
|
+
usage=usage,
|
|
232
|
+
description=description,
|
|
233
|
+
)
|
|
234
|
+
self.set_defaults(actions=[action], **(defaults or {}))
|
|
235
|
+
if options:
|
|
236
|
+
self.add_options(options)
|
|
237
|
+
self.cmd = cmd or action
|
|
238
|
+
|
|
239
|
+
def __eq__(self, other):
|
|
240
|
+
# A convenience equality, so that I can put strings in unit test
|
|
241
|
+
# results, and they will compare equal to objects.
|
|
242
|
+
return (other == "<CmdOptionParser:%s>" % self.cmd)
|
|
243
|
+
|
|
244
|
+
GLOBAL_ARGS = [
|
|
245
|
+
Opts.rcfile,
|
|
246
|
+
Opts.help,
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
CMDS = {
|
|
250
|
+
'annotate': CmdOptionParser("annotate",
|
|
251
|
+
[
|
|
252
|
+
Opts.directory,
|
|
253
|
+
Opts.ignore_errors,
|
|
254
|
+
Opts.omit,
|
|
255
|
+
Opts.include,
|
|
256
|
+
] + GLOBAL_ARGS,
|
|
257
|
+
usage = "[options] [modules]",
|
|
258
|
+
description = "Make annotated copies of the given files, marking "
|
|
259
|
+
"statements that are executed with > and statements that are "
|
|
260
|
+
"missed with !."
|
|
261
|
+
),
|
|
262
|
+
|
|
263
|
+
'combine': CmdOptionParser("combine", GLOBAL_ARGS,
|
|
264
|
+
usage = " ",
|
|
265
|
+
description = "Combine data from multiple coverage files collected "
|
|
266
|
+
"with 'run -p'. The combined results are written to a single "
|
|
267
|
+
"file representing the union of the data."
|
|
268
|
+
),
|
|
269
|
+
|
|
270
|
+
'debug': CmdOptionParser("debug", GLOBAL_ARGS,
|
|
271
|
+
usage = "<topic>",
|
|
272
|
+
description = "Display information on the internals of coverage.py, "
|
|
273
|
+
"for diagnosing problems. "
|
|
274
|
+
"Topics are 'data' to show a summary of the collected data, "
|
|
275
|
+
"or 'sys' to show installation information."
|
|
276
|
+
),
|
|
277
|
+
|
|
278
|
+
'erase': CmdOptionParser("erase", GLOBAL_ARGS,
|
|
279
|
+
usage = " ",
|
|
280
|
+
description = "Erase previously collected coverage data."
|
|
281
|
+
),
|
|
282
|
+
|
|
283
|
+
'help': CmdOptionParser("help", GLOBAL_ARGS,
|
|
284
|
+
usage = "[command]",
|
|
285
|
+
description = "Describe how to use coverage.py"
|
|
286
|
+
),
|
|
287
|
+
|
|
288
|
+
'html': CmdOptionParser("html",
|
|
289
|
+
[
|
|
290
|
+
Opts.directory,
|
|
291
|
+
Opts.fail_under,
|
|
292
|
+
Opts.ignore_errors,
|
|
293
|
+
Opts.omit,
|
|
294
|
+
Opts.include,
|
|
295
|
+
Opts.title,
|
|
296
|
+
] + GLOBAL_ARGS,
|
|
297
|
+
usage = "[options] [modules]",
|
|
298
|
+
description = "Create an HTML report of the coverage of the files. "
|
|
299
|
+
"Each file gets its own page, with the source decorated to show "
|
|
300
|
+
"executed, excluded, and missed lines."
|
|
301
|
+
),
|
|
302
|
+
|
|
303
|
+
'report': CmdOptionParser("report",
|
|
304
|
+
[
|
|
305
|
+
Opts.fail_under,
|
|
306
|
+
Opts.ignore_errors,
|
|
307
|
+
Opts.omit,
|
|
308
|
+
Opts.include,
|
|
309
|
+
Opts.show_missing,
|
|
310
|
+
] + GLOBAL_ARGS,
|
|
311
|
+
usage = "[options] [modules]",
|
|
312
|
+
description = "Report coverage statistics on modules."
|
|
313
|
+
),
|
|
314
|
+
|
|
315
|
+
'run': CmdOptionParser("execute",
|
|
316
|
+
[
|
|
317
|
+
Opts.append,
|
|
318
|
+
Opts.branch,
|
|
319
|
+
Opts.debug,
|
|
320
|
+
Opts.pylib,
|
|
321
|
+
Opts.parallel_mode,
|
|
322
|
+
Opts.module,
|
|
323
|
+
Opts.timid,
|
|
324
|
+
Opts.source,
|
|
325
|
+
Opts.omit,
|
|
326
|
+
Opts.include,
|
|
327
|
+
] + GLOBAL_ARGS,
|
|
328
|
+
defaults = {'erase_first': True},
|
|
329
|
+
cmd = "run",
|
|
330
|
+
usage = "[options] <pyfile> [program options]",
|
|
331
|
+
description = "Run a Python program, measuring code execution."
|
|
332
|
+
),
|
|
333
|
+
|
|
334
|
+
'xml': CmdOptionParser("xml",
|
|
335
|
+
[
|
|
336
|
+
Opts.fail_under,
|
|
337
|
+
Opts.ignore_errors,
|
|
338
|
+
Opts.omit,
|
|
339
|
+
Opts.include,
|
|
340
|
+
Opts.output_xml,
|
|
341
|
+
] + GLOBAL_ARGS,
|
|
342
|
+
cmd = "xml",
|
|
343
|
+
usage = "[options] [modules]",
|
|
344
|
+
description = "Generate an XML report of coverage results."
|
|
345
|
+
),
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
OK, ERR, FAIL_UNDER = 0, 1, 2
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
class CoverageScript(object):
|
|
353
|
+
"""The command-line interface to Coverage."""
|
|
354
|
+
|
|
355
|
+
def __init__(self, _covpkg=None, _run_python_file=None,
|
|
356
|
+
_run_python_module=None, _help_fn=None):
|
|
357
|
+
# _covpkg is for dependency injection, so we can test this code.
|
|
358
|
+
if _covpkg:
|
|
359
|
+
self.covpkg = _covpkg
|
|
360
|
+
else:
|
|
361
|
+
import coverage
|
|
362
|
+
self.covpkg = coverage
|
|
363
|
+
|
|
364
|
+
# For dependency injection:
|
|
365
|
+
self.run_python_file = _run_python_file or run_python_file
|
|
366
|
+
self.run_python_module = _run_python_module or run_python_module
|
|
367
|
+
self.help_fn = _help_fn or self.help
|
|
368
|
+
self.classic = False
|
|
369
|
+
|
|
370
|
+
self.coverage = None
|
|
371
|
+
|
|
372
|
+
def command_line(self, argv):
|
|
373
|
+
"""The bulk of the command line interface to Coverage.
|
|
374
|
+
|
|
375
|
+
`argv` is the argument list to process.
|
|
376
|
+
|
|
377
|
+
Returns 0 if all is well, 1 if something went wrong.
|
|
378
|
+
|
|
379
|
+
"""
|
|
380
|
+
# Collect the command-line options.
|
|
381
|
+
if not argv:
|
|
382
|
+
self.help_fn(topic='minimum_help')
|
|
383
|
+
return OK
|
|
384
|
+
|
|
385
|
+
# The command syntax we parse depends on the first argument. Classic
|
|
386
|
+
# syntax always starts with an option.
|
|
387
|
+
self.classic = argv[0].startswith('-')
|
|
388
|
+
if self.classic:
|
|
389
|
+
parser = ClassicOptionParser()
|
|
390
|
+
else:
|
|
391
|
+
parser = CMDS.get(argv[0])
|
|
392
|
+
if not parser:
|
|
393
|
+
self.help_fn("Unknown command: '%s'" % argv[0])
|
|
394
|
+
return ERR
|
|
395
|
+
argv = argv[1:]
|
|
396
|
+
|
|
397
|
+
parser.help_fn = self.help_fn
|
|
398
|
+
ok, options, args = parser.parse_args(argv)
|
|
399
|
+
if not ok:
|
|
400
|
+
return ERR
|
|
401
|
+
|
|
402
|
+
# Handle help and version.
|
|
403
|
+
if self.do_help(options, args, parser):
|
|
404
|
+
return OK
|
|
405
|
+
|
|
406
|
+
# Check for conflicts and problems in the options.
|
|
407
|
+
if not self.args_ok(options, args):
|
|
408
|
+
return ERR
|
|
409
|
+
|
|
410
|
+
# Listify the list options.
|
|
411
|
+
source = unshell_list(options.source)
|
|
412
|
+
omit = unshell_list(options.omit)
|
|
413
|
+
include = unshell_list(options.include)
|
|
414
|
+
debug = unshell_list(options.debug)
|
|
415
|
+
|
|
416
|
+
# Do something.
|
|
417
|
+
self.coverage = self.covpkg.coverage(
|
|
418
|
+
data_suffix = options.parallel_mode,
|
|
419
|
+
cover_pylib = options.pylib,
|
|
420
|
+
timid = options.timid,
|
|
421
|
+
branch = options.branch,
|
|
422
|
+
config_file = options.rcfile,
|
|
423
|
+
source = source,
|
|
424
|
+
omit = omit,
|
|
425
|
+
include = include,
|
|
426
|
+
debug = debug,
|
|
427
|
+
)
|
|
428
|
+
|
|
429
|
+
if 'debug' in options.actions:
|
|
430
|
+
return self.do_debug(args)
|
|
431
|
+
|
|
432
|
+
if 'erase' in options.actions or options.erase_first:
|
|
433
|
+
self.coverage.erase()
|
|
434
|
+
else:
|
|
435
|
+
self.coverage.load()
|
|
436
|
+
|
|
437
|
+
if 'execute' in options.actions:
|
|
438
|
+
self.do_execute(options, args)
|
|
439
|
+
|
|
440
|
+
if 'combine' in options.actions:
|
|
441
|
+
self.coverage.combine()
|
|
442
|
+
self.coverage.save()
|
|
443
|
+
|
|
444
|
+
# Remaining actions are reporting, with some common options.
|
|
445
|
+
report_args = dict(
|
|
446
|
+
morfs = args,
|
|
447
|
+
ignore_errors = options.ignore_errors,
|
|
448
|
+
omit = omit,
|
|
449
|
+
include = include,
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
if 'report' in options.actions:
|
|
453
|
+
total = self.coverage.report(
|
|
454
|
+
show_missing=options.show_missing, **report_args)
|
|
455
|
+
if 'annotate' in options.actions:
|
|
456
|
+
self.coverage.annotate(
|
|
457
|
+
directory=options.directory, **report_args)
|
|
458
|
+
if 'html' in options.actions:
|
|
459
|
+
total = self.coverage.html_report(
|
|
460
|
+
directory=options.directory, title=options.title,
|
|
461
|
+
**report_args)
|
|
462
|
+
if 'xml' in options.actions:
|
|
463
|
+
outfile = options.outfile
|
|
464
|
+
total = self.coverage.xml_report(outfile=outfile, **report_args)
|
|
465
|
+
|
|
466
|
+
if options.fail_under is not None:
|
|
467
|
+
if total >= options.fail_under:
|
|
468
|
+
return OK
|
|
469
|
+
else:
|
|
470
|
+
return FAIL_UNDER
|
|
471
|
+
else:
|
|
472
|
+
return OK
|
|
473
|
+
|
|
474
|
+
def help(self, error=None, topic=None, parser=None):
|
|
475
|
+
"""Display an error message, or the named topic."""
|
|
476
|
+
assert error or topic or parser
|
|
477
|
+
if error:
|
|
478
|
+
print(error)
|
|
479
|
+
print("Use 'coverage help' for help.")
|
|
480
|
+
elif parser:
|
|
481
|
+
print(parser.format_help().strip())
|
|
482
|
+
else:
|
|
483
|
+
help_msg = HELP_TOPICS.get(topic, '').strip()
|
|
484
|
+
if help_msg:
|
|
485
|
+
print(help_msg % self.covpkg.__dict__)
|
|
486
|
+
else:
|
|
487
|
+
print("Don't know topic %r" % topic)
|
|
488
|
+
|
|
489
|
+
def do_help(self, options, args, parser):
|
|
490
|
+
"""Deal with help requests.
|
|
491
|
+
|
|
492
|
+
Return True if it handled the request, False if not.
|
|
493
|
+
|
|
494
|
+
"""
|
|
495
|
+
# Handle help.
|
|
496
|
+
if options.help:
|
|
497
|
+
if self.classic:
|
|
498
|
+
self.help_fn(topic='help')
|
|
499
|
+
else:
|
|
500
|
+
self.help_fn(parser=parser)
|
|
501
|
+
return True
|
|
502
|
+
|
|
503
|
+
if "help" in options.actions:
|
|
504
|
+
if args:
|
|
505
|
+
for a in args:
|
|
506
|
+
parser = CMDS.get(a)
|
|
507
|
+
if parser:
|
|
508
|
+
self.help_fn(parser=parser)
|
|
509
|
+
else:
|
|
510
|
+
self.help_fn(topic=a)
|
|
511
|
+
else:
|
|
512
|
+
self.help_fn(topic='help')
|
|
513
|
+
return True
|
|
514
|
+
|
|
515
|
+
# Handle version.
|
|
516
|
+
if options.version:
|
|
517
|
+
self.help_fn(topic='version')
|
|
518
|
+
return True
|
|
519
|
+
|
|
520
|
+
return False
|
|
521
|
+
|
|
522
|
+
def args_ok(self, options, args):
|
|
523
|
+
"""Check for conflicts and problems in the options.
|
|
524
|
+
|
|
525
|
+
Returns True if everything is ok, or False if not.
|
|
526
|
+
|
|
527
|
+
"""
|
|
528
|
+
for i in ['erase', 'execute']:
|
|
529
|
+
for j in ['annotate', 'html', 'report', 'combine']:
|
|
530
|
+
if (i in options.actions) and (j in options.actions):
|
|
531
|
+
self.help_fn("You can't specify the '%s' and '%s' "
|
|
532
|
+
"options at the same time." % (i, j))
|
|
533
|
+
return False
|
|
534
|
+
|
|
535
|
+
if not options.actions:
|
|
536
|
+
self.help_fn(
|
|
537
|
+
"You must specify at least one of -e, -x, -c, -r, -a, or -b."
|
|
538
|
+
)
|
|
539
|
+
return False
|
|
540
|
+
args_allowed = (
|
|
541
|
+
'execute' in options.actions or
|
|
542
|
+
'annotate' in options.actions or
|
|
543
|
+
'html' in options.actions or
|
|
544
|
+
'debug' in options.actions or
|
|
545
|
+
'report' in options.actions or
|
|
546
|
+
'xml' in options.actions
|
|
547
|
+
)
|
|
548
|
+
if not args_allowed and args:
|
|
549
|
+
self.help_fn("Unexpected arguments: %s" % " ".join(args))
|
|
550
|
+
return False
|
|
551
|
+
|
|
552
|
+
if 'execute' in options.actions and not args:
|
|
553
|
+
self.help_fn("Nothing to do.")
|
|
554
|
+
return False
|
|
555
|
+
|
|
556
|
+
return True
|
|
557
|
+
|
|
558
|
+
def do_execute(self, options, args):
|
|
559
|
+
"""Implementation of 'coverage run'."""
|
|
560
|
+
|
|
561
|
+
# Set the first path element properly.
|
|
562
|
+
old_path0 = sys.path[0]
|
|
563
|
+
|
|
564
|
+
# Run the script.
|
|
565
|
+
self.coverage.start()
|
|
566
|
+
code_ran = True
|
|
567
|
+
try:
|
|
568
|
+
try:
|
|
569
|
+
if options.module:
|
|
570
|
+
sys.path[0] = ''
|
|
571
|
+
self.run_python_module(args[0], args)
|
|
572
|
+
else:
|
|
573
|
+
filename = args[0]
|
|
574
|
+
sys.path[0] = os.path.abspath(os.path.dirname(filename))
|
|
575
|
+
self.run_python_file(filename, args)
|
|
576
|
+
except NoSource:
|
|
577
|
+
code_ran = False
|
|
578
|
+
raise
|
|
579
|
+
finally:
|
|
580
|
+
self.coverage.stop()
|
|
581
|
+
if code_ran:
|
|
582
|
+
self.coverage.save()
|
|
583
|
+
|
|
584
|
+
# Restore the old path
|
|
585
|
+
sys.path[0] = old_path0
|
|
586
|
+
|
|
587
|
+
def do_debug(self, args):
|
|
588
|
+
"""Implementation of 'coverage debug'."""
|
|
589
|
+
|
|
590
|
+
if not args:
|
|
591
|
+
self.help_fn("What information would you like: data, sys?")
|
|
592
|
+
return ERR
|
|
593
|
+
for info in args:
|
|
594
|
+
if info == 'sys':
|
|
595
|
+
print("-- sys ----------------------------------------")
|
|
596
|
+
for line in info_formatter(self.coverage.sysinfo()):
|
|
597
|
+
print(" %s" % line)
|
|
598
|
+
elif info == 'data':
|
|
599
|
+
print("-- data ---------------------------------------")
|
|
600
|
+
self.coverage.load()
|
|
601
|
+
print("path: %s" % self.coverage.data.filename)
|
|
602
|
+
print("has_arcs: %r" % self.coverage.data.has_arcs())
|
|
603
|
+
summary = self.coverage.data.summary(fullpath=True)
|
|
604
|
+
if summary:
|
|
605
|
+
filenames = sorted(summary.keys())
|
|
606
|
+
print("\n%d files:" % len(filenames))
|
|
607
|
+
for f in filenames:
|
|
608
|
+
print("%s: %d lines" % (f, summary[f]))
|
|
609
|
+
else:
|
|
610
|
+
print("No data collected")
|
|
611
|
+
else:
|
|
612
|
+
self.help_fn("Don't know what you mean by %r" % info)
|
|
613
|
+
return ERR
|
|
614
|
+
return OK
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
def unshell_list(s):
|
|
618
|
+
"""Turn a command-line argument into a list."""
|
|
619
|
+
if not s:
|
|
620
|
+
return None
|
|
621
|
+
if sys.platform == 'win32':
|
|
622
|
+
# When running coverage as coverage.exe, some of the behavior
|
|
623
|
+
# of the shell is emulated: wildcards are expanded into a list of
|
|
624
|
+
# filenames. So you have to single-quote patterns on the command
|
|
625
|
+
# line, but (not) helpfully, the single quotes are included in the
|
|
626
|
+
# argument, so we have to strip them off here.
|
|
627
|
+
s = s.strip("'")
|
|
628
|
+
return s.split(',')
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
HELP_TOPICS = {
|
|
632
|
+
# -------------------------
|
|
633
|
+
'classic':
|
|
634
|
+
r"""Coverage.py version %(__version__)s
|
|
635
|
+
Measure, collect, and report on code coverage in Python programs.
|
|
636
|
+
|
|
637
|
+
Usage:
|
|
638
|
+
|
|
639
|
+
coverage -x [-p] [-L] [--timid] MODULE.py [ARG1 ARG2 ...]
|
|
640
|
+
Execute the module, passing the given command-line arguments, collecting
|
|
641
|
+
coverage data. With the -p option, include the machine name and process
|
|
642
|
+
id in the .coverage file name. With -L, measure coverage even inside the
|
|
643
|
+
Python installed library, which isn't done by default. With --timid, use a
|
|
644
|
+
simpler but slower trace method.
|
|
645
|
+
|
|
646
|
+
coverage -e
|
|
647
|
+
Erase collected coverage data.
|
|
648
|
+
|
|
649
|
+
coverage -c
|
|
650
|
+
Combine data from multiple coverage files (as created by -p option above)
|
|
651
|
+
and store it into a single file representing the union of the coverage.
|
|
652
|
+
|
|
653
|
+
coverage -r [-m] [-i] [-o DIR,...] [FILE1 FILE2 ...]
|
|
654
|
+
Report on the statement coverage for the given files. With the -m
|
|
655
|
+
option, show line numbers of the statements that weren't executed.
|
|
656
|
+
|
|
657
|
+
coverage -b -d DIR [-i] [-o DIR,...] [FILE1 FILE2 ...]
|
|
658
|
+
Create an HTML report of the coverage of the given files. Each file gets
|
|
659
|
+
its own page, with the file listing decorated to show executed, excluded,
|
|
660
|
+
and missed lines.
|
|
661
|
+
|
|
662
|
+
coverage -a [-d DIR] [-i] [-o DIR,...] [FILE1 FILE2 ...]
|
|
663
|
+
Make annotated copies of the given files, marking statements that
|
|
664
|
+
are executed with > and statements that are missed with !.
|
|
665
|
+
|
|
666
|
+
-d DIR
|
|
667
|
+
Write output files for -b or -a to this directory.
|
|
668
|
+
|
|
669
|
+
-i Ignore errors while reporting or annotating.
|
|
670
|
+
|
|
671
|
+
-o DIR,...
|
|
672
|
+
Omit reporting or annotating files when their filename path starts with
|
|
673
|
+
a directory listed in the omit list.
|
|
674
|
+
e.g. coverage -i -r -o c:\python25,lib\enthought\traits
|
|
675
|
+
|
|
676
|
+
Coverage data is saved in the file .coverage by default. Set the
|
|
677
|
+
COVERAGE_FILE environment variable to save it somewhere else.
|
|
678
|
+
""",
|
|
679
|
+
# -------------------------
|
|
680
|
+
'help': """\
|
|
681
|
+
Coverage.py, version %(__version__)s
|
|
682
|
+
Measure, collect, and report on code coverage in Python programs.
|
|
683
|
+
|
|
684
|
+
usage: coverage <command> [options] [args]
|
|
685
|
+
|
|
686
|
+
Commands:
|
|
687
|
+
annotate Annotate source files with execution information.
|
|
688
|
+
combine Combine a number of data files.
|
|
689
|
+
erase Erase previously collected coverage data.
|
|
690
|
+
help Get help on using coverage.py.
|
|
691
|
+
html Create an HTML report.
|
|
692
|
+
report Report coverage stats on modules.
|
|
693
|
+
run Run a Python program and measure code execution.
|
|
694
|
+
xml Create an XML report of coverage results.
|
|
695
|
+
|
|
696
|
+
Use "coverage help <command>" for detailed help on any command.
|
|
697
|
+
Use "coverage help classic" for help on older command syntax.
|
|
698
|
+
For more information, see %(__url__)s
|
|
699
|
+
""",
|
|
700
|
+
# -------------------------
|
|
701
|
+
'minimum_help': """\
|
|
702
|
+
Code coverage for Python. Use 'coverage help' for help.
|
|
703
|
+
""",
|
|
704
|
+
# -------------------------
|
|
705
|
+
'version': """\
|
|
706
|
+
Coverage.py, version %(__version__)s. %(__url__)s
|
|
707
|
+
""",
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
def main(argv=None):
|
|
712
|
+
"""The main entry point to Coverage.
|
|
713
|
+
|
|
714
|
+
This is installed as the script entry point.
|
|
715
|
+
|
|
716
|
+
"""
|
|
717
|
+
if argv is None:
|
|
718
|
+
argv = sys.argv[1:]
|
|
719
|
+
try:
|
|
720
|
+
status = CoverageScript().command_line(argv)
|
|
721
|
+
except ExceptionDuringRun:
|
|
722
|
+
# An exception was caught while running the product code. The
|
|
723
|
+
# sys.exc_info() return tuple is packed into an ExceptionDuringRun
|
|
724
|
+
# exception.
|
|
725
|
+
_, err, _ = sys.exc_info()
|
|
726
|
+
traceback.print_exception(*err.args)
|
|
727
|
+
status = ERR
|
|
728
|
+
except CoverageException:
|
|
729
|
+
# A controlled error inside coverage.py: print the message to the user.
|
|
730
|
+
_, err, _ = sys.exc_info()
|
|
731
|
+
print(err)
|
|
732
|
+
status = ERR
|
|
733
|
+
except SystemExit:
|
|
734
|
+
# The user called `sys.exit()`. Exit with their argument, if any.
|
|
735
|
+
_, err, _ = sys.exc_info()
|
|
736
|
+
if err.args:
|
|
737
|
+
status = err.args[0]
|
|
738
|
+
else:
|
|
739
|
+
status = None
|
|
740
|
+
return status
|