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,208 @@
|
|
|
1
|
+
"""Better tokenizing for coverage.py."""
|
|
2
|
+
|
|
3
|
+
import codecs, keyword, re, sys, token, tokenize
|
|
4
|
+
from coverage.backward import StringIO # pylint: disable=W0622
|
|
5
|
+
|
|
6
|
+
def phys_tokens(toks):
|
|
7
|
+
"""Return all physical tokens, even line continuations.
|
|
8
|
+
|
|
9
|
+
tokenize.generate_tokens() doesn't return a token for the backslash that
|
|
10
|
+
continues lines. This wrapper provides those tokens so that we can
|
|
11
|
+
re-create a faithful representation of the original source.
|
|
12
|
+
|
|
13
|
+
Returns the same values as generate_tokens()
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
last_line = None
|
|
17
|
+
last_lineno = -1
|
|
18
|
+
last_ttype = None
|
|
19
|
+
for ttype, ttext, (slineno, scol), (elineno, ecol), ltext in toks:
|
|
20
|
+
if last_lineno != elineno:
|
|
21
|
+
if last_line and last_line[-2:] == "\\\n":
|
|
22
|
+
# We are at the beginning of a new line, and the last line
|
|
23
|
+
# ended with a backslash. We probably have to inject a
|
|
24
|
+
# backslash token into the stream. Unfortunately, there's more
|
|
25
|
+
# to figure out. This code::
|
|
26
|
+
#
|
|
27
|
+
# usage = """\
|
|
28
|
+
# HEY THERE
|
|
29
|
+
# """
|
|
30
|
+
#
|
|
31
|
+
# triggers this condition, but the token text is::
|
|
32
|
+
#
|
|
33
|
+
# '"""\\\nHEY THERE\n"""'
|
|
34
|
+
#
|
|
35
|
+
# so we need to figure out if the backslash is already in the
|
|
36
|
+
# string token or not.
|
|
37
|
+
inject_backslash = True
|
|
38
|
+
if last_ttype == tokenize.COMMENT:
|
|
39
|
+
# Comments like this \
|
|
40
|
+
# should never result in a new token.
|
|
41
|
+
inject_backslash = False
|
|
42
|
+
elif ttype == token.STRING:
|
|
43
|
+
if "\n" in ttext and ttext.split('\n', 1)[0][-1] == '\\':
|
|
44
|
+
# It's a multiline string and the first line ends with
|
|
45
|
+
# a backslash, so we don't need to inject another.
|
|
46
|
+
inject_backslash = False
|
|
47
|
+
if inject_backslash:
|
|
48
|
+
# Figure out what column the backslash is in.
|
|
49
|
+
ccol = len(last_line.split("\n")[-2]) - 1
|
|
50
|
+
# Yield the token, with a fake token type.
|
|
51
|
+
yield (
|
|
52
|
+
99999, "\\\n",
|
|
53
|
+
(slineno, ccol), (slineno, ccol+2),
|
|
54
|
+
last_line
|
|
55
|
+
)
|
|
56
|
+
last_line = ltext
|
|
57
|
+
last_ttype = ttype
|
|
58
|
+
yield ttype, ttext, (slineno, scol), (elineno, ecol), ltext
|
|
59
|
+
last_lineno = elineno
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def source_token_lines(source):
|
|
63
|
+
"""Generate a series of lines, one for each line in `source`.
|
|
64
|
+
|
|
65
|
+
Each line is a list of pairs, each pair is a token::
|
|
66
|
+
|
|
67
|
+
[('key', 'def'), ('ws', ' '), ('nam', 'hello'), ('op', '('), ... ]
|
|
68
|
+
|
|
69
|
+
Each pair has a token class, and the token text.
|
|
70
|
+
|
|
71
|
+
If you concatenate all the token texts, and then join them with newlines,
|
|
72
|
+
you should have your original `source` back, with two differences:
|
|
73
|
+
trailing whitespace is not preserved, and a final line with no newline
|
|
74
|
+
is indistinguishable from a final line with a newline.
|
|
75
|
+
|
|
76
|
+
"""
|
|
77
|
+
ws_tokens = [token.INDENT, token.DEDENT, token.NEWLINE, tokenize.NL]
|
|
78
|
+
line = []
|
|
79
|
+
col = 0
|
|
80
|
+
source = source.expandtabs(8).replace('\r\n', '\n')
|
|
81
|
+
tokgen = tokenize.generate_tokens(StringIO(source).readline)
|
|
82
|
+
for ttype, ttext, (_, scol), (_, ecol), _ in phys_tokens(tokgen):
|
|
83
|
+
mark_start = True
|
|
84
|
+
for part in re.split('(\n)', ttext):
|
|
85
|
+
if part == '\n':
|
|
86
|
+
yield line
|
|
87
|
+
line = []
|
|
88
|
+
col = 0
|
|
89
|
+
mark_end = False
|
|
90
|
+
elif part == '':
|
|
91
|
+
mark_end = False
|
|
92
|
+
elif ttype in ws_tokens:
|
|
93
|
+
mark_end = False
|
|
94
|
+
else:
|
|
95
|
+
if mark_start and scol > col:
|
|
96
|
+
line.append(("ws", " " * (scol - col)))
|
|
97
|
+
mark_start = False
|
|
98
|
+
tok_class = tokenize.tok_name.get(ttype, 'xx').lower()[:3]
|
|
99
|
+
if ttype == token.NAME and keyword.iskeyword(ttext):
|
|
100
|
+
tok_class = "key"
|
|
101
|
+
line.append((tok_class, part))
|
|
102
|
+
mark_end = True
|
|
103
|
+
scol = 0
|
|
104
|
+
if mark_end:
|
|
105
|
+
col = ecol
|
|
106
|
+
|
|
107
|
+
if line:
|
|
108
|
+
yield line
|
|
109
|
+
|
|
110
|
+
def source_encoding(source):
|
|
111
|
+
"""Determine the encoding for `source` (a string), according to PEP 263.
|
|
112
|
+
|
|
113
|
+
Returns a string, the name of the encoding.
|
|
114
|
+
|
|
115
|
+
"""
|
|
116
|
+
# Note: this function should never be called on Python 3, since py3 has
|
|
117
|
+
# built-in tools to do this.
|
|
118
|
+
assert sys.version_info < (3, 0)
|
|
119
|
+
|
|
120
|
+
# This is mostly code adapted from Py3.2's tokenize module.
|
|
121
|
+
|
|
122
|
+
cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)")
|
|
123
|
+
|
|
124
|
+
# Do this so the detect_encode code we copied will work.
|
|
125
|
+
readline = iter(source.splitlines(True)).next
|
|
126
|
+
|
|
127
|
+
def _get_normal_name(orig_enc):
|
|
128
|
+
"""Imitates get_normal_name in tokenizer.c."""
|
|
129
|
+
# Only care about the first 12 characters.
|
|
130
|
+
enc = orig_enc[:12].lower().replace("_", "-")
|
|
131
|
+
if re.match(r"^utf-8($|-)", enc):
|
|
132
|
+
return "utf-8"
|
|
133
|
+
if re.match(r"^(latin-1|iso-8859-1|iso-latin-1)($|-)", enc):
|
|
134
|
+
return "iso-8859-1"
|
|
135
|
+
return orig_enc
|
|
136
|
+
|
|
137
|
+
# From detect_encode():
|
|
138
|
+
# It detects the encoding from the presence of a utf-8 bom or an encoding
|
|
139
|
+
# cookie as specified in pep-0263. If both a bom and a cookie are present,
|
|
140
|
+
# but disagree, a SyntaxError will be raised. If the encoding cookie is an
|
|
141
|
+
# invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found,
|
|
142
|
+
# 'utf-8-sig' is returned.
|
|
143
|
+
|
|
144
|
+
# If no encoding is specified, then the default will be returned. The
|
|
145
|
+
# default varied with version.
|
|
146
|
+
|
|
147
|
+
if sys.version_info <= (2, 4):
|
|
148
|
+
default = 'iso-8859-1'
|
|
149
|
+
else:
|
|
150
|
+
default = 'ascii'
|
|
151
|
+
|
|
152
|
+
bom_found = False
|
|
153
|
+
encoding = None
|
|
154
|
+
|
|
155
|
+
def read_or_stop():
|
|
156
|
+
"""Get the next source line, or ''."""
|
|
157
|
+
try:
|
|
158
|
+
return readline()
|
|
159
|
+
except StopIteration:
|
|
160
|
+
return ''
|
|
161
|
+
|
|
162
|
+
def find_cookie(line):
|
|
163
|
+
"""Find an encoding cookie in `line`."""
|
|
164
|
+
try:
|
|
165
|
+
line_string = line.decode('ascii')
|
|
166
|
+
except UnicodeDecodeError:
|
|
167
|
+
return None
|
|
168
|
+
|
|
169
|
+
matches = cookie_re.findall(line_string)
|
|
170
|
+
if not matches:
|
|
171
|
+
return None
|
|
172
|
+
encoding = _get_normal_name(matches[0])
|
|
173
|
+
try:
|
|
174
|
+
codec = codecs.lookup(encoding)
|
|
175
|
+
except LookupError:
|
|
176
|
+
# This behaviour mimics the Python interpreter
|
|
177
|
+
raise SyntaxError("unknown encoding: " + encoding)
|
|
178
|
+
|
|
179
|
+
if bom_found:
|
|
180
|
+
# codecs in 2.3 were raw tuples of functions, assume the best.
|
|
181
|
+
codec_name = getattr(codec, 'name', encoding)
|
|
182
|
+
if codec_name != 'utf-8':
|
|
183
|
+
# This behaviour mimics the Python interpreter
|
|
184
|
+
raise SyntaxError('encoding problem: utf-8')
|
|
185
|
+
encoding += '-sig'
|
|
186
|
+
return encoding
|
|
187
|
+
|
|
188
|
+
first = read_or_stop()
|
|
189
|
+
if first.startswith(codecs.BOM_UTF8):
|
|
190
|
+
bom_found = True
|
|
191
|
+
first = first[3:]
|
|
192
|
+
default = 'utf-8-sig'
|
|
193
|
+
if not first:
|
|
194
|
+
return default
|
|
195
|
+
|
|
196
|
+
encoding = find_cookie(first)
|
|
197
|
+
if encoding:
|
|
198
|
+
return encoding
|
|
199
|
+
|
|
200
|
+
second = read_or_stop()
|
|
201
|
+
if not second:
|
|
202
|
+
return default
|
|
203
|
+
|
|
204
|
+
encoding = find_cookie(second)
|
|
205
|
+
if encoding:
|
|
206
|
+
return encoding
|
|
207
|
+
|
|
208
|
+
return default
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Reporter foundation for Coverage."""
|
|
2
|
+
|
|
3
|
+
import fnmatch, os
|
|
4
|
+
from coverage.codeunit import code_unit_factory
|
|
5
|
+
from coverage.files import prep_patterns
|
|
6
|
+
from coverage.misc import CoverageException, NoSource, NotPython
|
|
7
|
+
|
|
8
|
+
class Reporter(object):
|
|
9
|
+
"""A base class for all reporters."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, coverage, config):
|
|
12
|
+
"""Create a reporter.
|
|
13
|
+
|
|
14
|
+
`coverage` is the coverage instance. `config` is an instance of
|
|
15
|
+
CoverageConfig, for controlling all sorts of behavior.
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
self.coverage = coverage
|
|
19
|
+
self.config = config
|
|
20
|
+
|
|
21
|
+
# The code units to report on. Set by find_code_units.
|
|
22
|
+
self.code_units = []
|
|
23
|
+
|
|
24
|
+
# The directory into which to place the report, used by some derived
|
|
25
|
+
# classes.
|
|
26
|
+
self.directory = None
|
|
27
|
+
|
|
28
|
+
def find_code_units(self, morfs):
|
|
29
|
+
"""Find the code units we'll report on.
|
|
30
|
+
|
|
31
|
+
`morfs` is a list of modules or filenames.
|
|
32
|
+
|
|
33
|
+
"""
|
|
34
|
+
morfs = morfs or self.coverage.data.measured_files()
|
|
35
|
+
file_locator = self.coverage.file_locator
|
|
36
|
+
self.code_units = code_unit_factory(morfs, file_locator)
|
|
37
|
+
|
|
38
|
+
if self.config.include:
|
|
39
|
+
patterns = prep_patterns(self.config.include)
|
|
40
|
+
filtered = []
|
|
41
|
+
for cu in self.code_units:
|
|
42
|
+
for pattern in patterns:
|
|
43
|
+
if fnmatch.fnmatch(cu.filename, pattern):
|
|
44
|
+
filtered.append(cu)
|
|
45
|
+
break
|
|
46
|
+
self.code_units = filtered
|
|
47
|
+
|
|
48
|
+
if self.config.omit:
|
|
49
|
+
patterns = prep_patterns(self.config.omit)
|
|
50
|
+
filtered = []
|
|
51
|
+
for cu in self.code_units:
|
|
52
|
+
for pattern in patterns:
|
|
53
|
+
if fnmatch.fnmatch(cu.filename, pattern):
|
|
54
|
+
break
|
|
55
|
+
else:
|
|
56
|
+
filtered.append(cu)
|
|
57
|
+
self.code_units = filtered
|
|
58
|
+
|
|
59
|
+
self.code_units.sort()
|
|
60
|
+
|
|
61
|
+
def report_files(self, report_fn, morfs, directory=None):
|
|
62
|
+
"""Run a reporting function on a number of morfs.
|
|
63
|
+
|
|
64
|
+
`report_fn` is called for each relative morf in `morfs`. It is called
|
|
65
|
+
as::
|
|
66
|
+
|
|
67
|
+
report_fn(code_unit, analysis)
|
|
68
|
+
|
|
69
|
+
where `code_unit` is the `CodeUnit` for the morf, and `analysis` is
|
|
70
|
+
the `Analysis` for the morf.
|
|
71
|
+
|
|
72
|
+
"""
|
|
73
|
+
self.find_code_units(morfs)
|
|
74
|
+
|
|
75
|
+
if not self.code_units:
|
|
76
|
+
raise CoverageException("No data to report.")
|
|
77
|
+
|
|
78
|
+
self.directory = directory
|
|
79
|
+
if self.directory and not os.path.exists(self.directory):
|
|
80
|
+
os.makedirs(self.directory)
|
|
81
|
+
|
|
82
|
+
for cu in self.code_units:
|
|
83
|
+
try:
|
|
84
|
+
report_fn(cu, self.coverage._analyze(cu))
|
|
85
|
+
except NoSource:
|
|
86
|
+
if not self.config.ignore_errors:
|
|
87
|
+
raise
|
|
88
|
+
except NotPython:
|
|
89
|
+
# Only report errors for .py files, and only if we didn't
|
|
90
|
+
# explicitly suppress those errors.
|
|
91
|
+
if cu.should_be_python() and not self.config.ignore_errors:
|
|
92
|
+
raise
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"""Results of coverage measurement."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from coverage.backward import iitems, set, sorted # pylint: disable=W0622
|
|
6
|
+
from coverage.misc import format_lines, join_regex, NoSource
|
|
7
|
+
from coverage.parser import CodeParser
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Analysis(object):
|
|
11
|
+
"""The results of analyzing a code unit."""
|
|
12
|
+
|
|
13
|
+
def __init__(self, cov, code_unit):
|
|
14
|
+
self.coverage = cov
|
|
15
|
+
self.code_unit = code_unit
|
|
16
|
+
|
|
17
|
+
self.filename = self.code_unit.filename
|
|
18
|
+
actual_filename, source = self.find_source(self.filename)
|
|
19
|
+
|
|
20
|
+
self.parser = CodeParser(
|
|
21
|
+
text=source, filename=actual_filename,
|
|
22
|
+
exclude=self.coverage._exclude_regex('exclude')
|
|
23
|
+
)
|
|
24
|
+
self.statements, self.excluded = self.parser.parse_source()
|
|
25
|
+
|
|
26
|
+
# Identify missing statements.
|
|
27
|
+
executed = self.coverage.data.executed_lines(self.filename)
|
|
28
|
+
exec1 = self.parser.first_lines(executed)
|
|
29
|
+
self.missing = sorted(set(self.statements) - set(exec1))
|
|
30
|
+
|
|
31
|
+
if self.coverage.data.has_arcs():
|
|
32
|
+
self.no_branch = self.parser.lines_matching(
|
|
33
|
+
join_regex(self.coverage.config.partial_list),
|
|
34
|
+
join_regex(self.coverage.config.partial_always_list)
|
|
35
|
+
)
|
|
36
|
+
n_branches = self.total_branches()
|
|
37
|
+
mba = self.missing_branch_arcs()
|
|
38
|
+
n_partial_branches = sum(
|
|
39
|
+
[len(v) for k,v in iitems(mba) if k not in self.missing]
|
|
40
|
+
)
|
|
41
|
+
n_missing_branches = sum([len(v) for k,v in iitems(mba)])
|
|
42
|
+
else:
|
|
43
|
+
n_branches = n_partial_branches = n_missing_branches = 0
|
|
44
|
+
self.no_branch = set()
|
|
45
|
+
|
|
46
|
+
self.numbers = Numbers(
|
|
47
|
+
n_files=1,
|
|
48
|
+
n_statements=len(self.statements),
|
|
49
|
+
n_excluded=len(self.excluded),
|
|
50
|
+
n_missing=len(self.missing),
|
|
51
|
+
n_branches=n_branches,
|
|
52
|
+
n_partial_branches=n_partial_branches,
|
|
53
|
+
n_missing_branches=n_missing_branches,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
def find_source(self, filename):
|
|
57
|
+
"""Find the source for `filename`.
|
|
58
|
+
|
|
59
|
+
Returns two values: the actual filename, and the source.
|
|
60
|
+
|
|
61
|
+
The source returned depends on which of these cases holds:
|
|
62
|
+
|
|
63
|
+
* The filename seems to be a non-source file: returns None
|
|
64
|
+
|
|
65
|
+
* The filename is a source file, and actually exists: returns None.
|
|
66
|
+
|
|
67
|
+
* The filename is a source file, and is in a zip file or egg:
|
|
68
|
+
returns the source.
|
|
69
|
+
|
|
70
|
+
* The filename is a source file, but couldn't be found: raises
|
|
71
|
+
`NoSource`.
|
|
72
|
+
|
|
73
|
+
"""
|
|
74
|
+
source = None
|
|
75
|
+
|
|
76
|
+
base, ext = os.path.splitext(filename)
|
|
77
|
+
TRY_EXTS = {
|
|
78
|
+
'.py': ['.py', '.pyw'],
|
|
79
|
+
'.pyw': ['.pyw'],
|
|
80
|
+
}
|
|
81
|
+
try_exts = TRY_EXTS.get(ext)
|
|
82
|
+
if not try_exts:
|
|
83
|
+
return filename, None
|
|
84
|
+
|
|
85
|
+
for try_ext in try_exts:
|
|
86
|
+
try_filename = base + try_ext
|
|
87
|
+
if os.path.exists(try_filename):
|
|
88
|
+
return try_filename, None
|
|
89
|
+
source = self.coverage.file_locator.get_zip_data(try_filename)
|
|
90
|
+
if source:
|
|
91
|
+
return try_filename, source
|
|
92
|
+
raise NoSource("No source for code: '%s'" % filename)
|
|
93
|
+
|
|
94
|
+
def missing_formatted(self):
|
|
95
|
+
"""The missing line numbers, formatted nicely.
|
|
96
|
+
|
|
97
|
+
Returns a string like "1-2, 5-11, 13-14".
|
|
98
|
+
|
|
99
|
+
"""
|
|
100
|
+
return format_lines(self.statements, self.missing)
|
|
101
|
+
|
|
102
|
+
def has_arcs(self):
|
|
103
|
+
"""Were arcs measured in this result?"""
|
|
104
|
+
return self.coverage.data.has_arcs()
|
|
105
|
+
|
|
106
|
+
def arc_possibilities(self):
|
|
107
|
+
"""Returns a sorted list of the arcs in the code."""
|
|
108
|
+
arcs = self.parser.arcs()
|
|
109
|
+
return arcs
|
|
110
|
+
|
|
111
|
+
def arcs_executed(self):
|
|
112
|
+
"""Returns a sorted list of the arcs actually executed in the code."""
|
|
113
|
+
executed = self.coverage.data.executed_arcs(self.filename)
|
|
114
|
+
m2fl = self.parser.first_line
|
|
115
|
+
executed = [(m2fl(l1), m2fl(l2)) for (l1,l2) in executed]
|
|
116
|
+
return sorted(executed)
|
|
117
|
+
|
|
118
|
+
def arcs_missing(self):
|
|
119
|
+
"""Returns a sorted list of the arcs in the code not executed."""
|
|
120
|
+
possible = self.arc_possibilities()
|
|
121
|
+
executed = self.arcs_executed()
|
|
122
|
+
missing = [
|
|
123
|
+
p for p in possible
|
|
124
|
+
if p not in executed
|
|
125
|
+
and p[0] not in self.no_branch
|
|
126
|
+
]
|
|
127
|
+
return sorted(missing)
|
|
128
|
+
|
|
129
|
+
def arcs_unpredicted(self):
|
|
130
|
+
"""Returns a sorted list of the executed arcs missing from the code."""
|
|
131
|
+
possible = self.arc_possibilities()
|
|
132
|
+
executed = self.arcs_executed()
|
|
133
|
+
# Exclude arcs here which connect a line to itself. They can occur
|
|
134
|
+
# in executed data in some cases. This is where they can cause
|
|
135
|
+
# trouble, and here is where it's the least burden to remove them.
|
|
136
|
+
unpredicted = [
|
|
137
|
+
e for e in executed
|
|
138
|
+
if e not in possible
|
|
139
|
+
and e[0] != e[1]
|
|
140
|
+
]
|
|
141
|
+
return sorted(unpredicted)
|
|
142
|
+
|
|
143
|
+
def branch_lines(self):
|
|
144
|
+
"""Returns a list of line numbers that have more than one exit."""
|
|
145
|
+
exit_counts = self.parser.exit_counts()
|
|
146
|
+
return [l1 for l1,count in iitems(exit_counts) if count > 1]
|
|
147
|
+
|
|
148
|
+
def total_branches(self):
|
|
149
|
+
"""How many total branches are there?"""
|
|
150
|
+
exit_counts = self.parser.exit_counts()
|
|
151
|
+
return sum([count for count in exit_counts.values() if count > 1])
|
|
152
|
+
|
|
153
|
+
def missing_branch_arcs(self):
|
|
154
|
+
"""Return arcs that weren't executed from branch lines.
|
|
155
|
+
|
|
156
|
+
Returns {l1:[l2a,l2b,...], ...}
|
|
157
|
+
|
|
158
|
+
"""
|
|
159
|
+
missing = self.arcs_missing()
|
|
160
|
+
branch_lines = set(self.branch_lines())
|
|
161
|
+
mba = {}
|
|
162
|
+
for l1, l2 in missing:
|
|
163
|
+
if l1 in branch_lines:
|
|
164
|
+
if l1 not in mba:
|
|
165
|
+
mba[l1] = []
|
|
166
|
+
mba[l1].append(l2)
|
|
167
|
+
return mba
|
|
168
|
+
|
|
169
|
+
def branch_stats(self):
|
|
170
|
+
"""Get stats about branches.
|
|
171
|
+
|
|
172
|
+
Returns a dict mapping line numbers to a tuple:
|
|
173
|
+
(total_exits, taken_exits).
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
exit_counts = self.parser.exit_counts()
|
|
177
|
+
missing_arcs = self.missing_branch_arcs()
|
|
178
|
+
stats = {}
|
|
179
|
+
for lnum in self.branch_lines():
|
|
180
|
+
exits = exit_counts[lnum]
|
|
181
|
+
try:
|
|
182
|
+
missing = len(missing_arcs[lnum])
|
|
183
|
+
except KeyError:
|
|
184
|
+
missing = 0
|
|
185
|
+
stats[lnum] = (exits, exits - missing)
|
|
186
|
+
return stats
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class Numbers(object):
|
|
190
|
+
"""The numerical results of measuring coverage.
|
|
191
|
+
|
|
192
|
+
This holds the basic statistics from `Analysis`, and is used to roll
|
|
193
|
+
up statistics across files.
|
|
194
|
+
|
|
195
|
+
"""
|
|
196
|
+
# A global to determine the precision on coverage percentages, the number
|
|
197
|
+
# of decimal places.
|
|
198
|
+
_precision = 0
|
|
199
|
+
_near0 = 1.0 # These will change when _precision is changed.
|
|
200
|
+
_near100 = 99.0
|
|
201
|
+
|
|
202
|
+
def __init__(self, n_files=0, n_statements=0, n_excluded=0, n_missing=0,
|
|
203
|
+
n_branches=0, n_partial_branches=0, n_missing_branches=0
|
|
204
|
+
):
|
|
205
|
+
self.n_files = n_files
|
|
206
|
+
self.n_statements = n_statements
|
|
207
|
+
self.n_excluded = n_excluded
|
|
208
|
+
self.n_missing = n_missing
|
|
209
|
+
self.n_branches = n_branches
|
|
210
|
+
self.n_partial_branches = n_partial_branches
|
|
211
|
+
self.n_missing_branches = n_missing_branches
|
|
212
|
+
|
|
213
|
+
def set_precision(cls, precision):
|
|
214
|
+
"""Set the number of decimal places used to report percentages."""
|
|
215
|
+
assert 0 <= precision < 10
|
|
216
|
+
cls._precision = precision
|
|
217
|
+
cls._near0 = 1.0 / 10**precision
|
|
218
|
+
cls._near100 = 100.0 - cls._near0
|
|
219
|
+
set_precision = classmethod(set_precision)
|
|
220
|
+
|
|
221
|
+
def _get_n_executed(self):
|
|
222
|
+
"""Returns the number of executed statements."""
|
|
223
|
+
return self.n_statements - self.n_missing
|
|
224
|
+
n_executed = property(_get_n_executed)
|
|
225
|
+
|
|
226
|
+
def _get_n_executed_branches(self):
|
|
227
|
+
"""Returns the number of executed branches."""
|
|
228
|
+
return self.n_branches - self.n_missing_branches
|
|
229
|
+
n_executed_branches = property(_get_n_executed_branches)
|
|
230
|
+
|
|
231
|
+
def _get_pc_covered(self):
|
|
232
|
+
"""Returns a single percentage value for coverage."""
|
|
233
|
+
if self.n_statements > 0:
|
|
234
|
+
pc_cov = (100.0 * (self.n_executed + self.n_executed_branches) /
|
|
235
|
+
(self.n_statements + self.n_branches))
|
|
236
|
+
else:
|
|
237
|
+
pc_cov = 100.0
|
|
238
|
+
return pc_cov
|
|
239
|
+
pc_covered = property(_get_pc_covered)
|
|
240
|
+
|
|
241
|
+
def _get_pc_covered_str(self):
|
|
242
|
+
"""Returns the percent covered, as a string, without a percent sign.
|
|
243
|
+
|
|
244
|
+
Note that "0" is only returned when the value is truly zero, and "100"
|
|
245
|
+
is only returned when the value is truly 100. Rounding can never
|
|
246
|
+
result in either "0" or "100".
|
|
247
|
+
|
|
248
|
+
"""
|
|
249
|
+
pc = self.pc_covered
|
|
250
|
+
if 0 < pc < self._near0:
|
|
251
|
+
pc = self._near0
|
|
252
|
+
elif self._near100 < pc < 100:
|
|
253
|
+
pc = self._near100
|
|
254
|
+
else:
|
|
255
|
+
pc = round(pc, self._precision)
|
|
256
|
+
return "%.*f" % (self._precision, pc)
|
|
257
|
+
pc_covered_str = property(_get_pc_covered_str)
|
|
258
|
+
|
|
259
|
+
def pc_str_width(cls):
|
|
260
|
+
"""How many characters wide can pc_covered_str be?"""
|
|
261
|
+
width = 3 # "100"
|
|
262
|
+
if cls._precision > 0:
|
|
263
|
+
width += 1 + cls._precision
|
|
264
|
+
return width
|
|
265
|
+
pc_str_width = classmethod(pc_str_width)
|
|
266
|
+
|
|
267
|
+
def __add__(self, other):
|
|
268
|
+
nums = Numbers()
|
|
269
|
+
nums.n_files = self.n_files + other.n_files
|
|
270
|
+
nums.n_statements = self.n_statements + other.n_statements
|
|
271
|
+
nums.n_excluded = self.n_excluded + other.n_excluded
|
|
272
|
+
nums.n_missing = self.n_missing + other.n_missing
|
|
273
|
+
nums.n_branches = self.n_branches + other.n_branches
|
|
274
|
+
nums.n_partial_branches = (
|
|
275
|
+
self.n_partial_branches + other.n_partial_branches
|
|
276
|
+
)
|
|
277
|
+
nums.n_missing_branches = (
|
|
278
|
+
self.n_missing_branches + other.n_missing_branches
|
|
279
|
+
)
|
|
280
|
+
return nums
|
|
281
|
+
|
|
282
|
+
def __radd__(self, other):
|
|
283
|
+
# Implementing 0+Numbers allows us to sum() a list of Numbers.
|
|
284
|
+
if other == 0:
|
|
285
|
+
return self
|
|
286
|
+
return NotImplemented
|