libv8 6.7.288.46.1 → 7.3.492.27.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/ext/libv8/builder.rb +6 -2
- data/lib/libv8/version.rb +1 -1
- data/vendor/depot_tools/.gitattributes +1 -0
- data/vendor/depot_tools/.gitignore +7 -0
- data/vendor/depot_tools/CROS_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +12 -1
- data/vendor/depot_tools/PRESUBMIT.py +16 -9
- data/vendor/depot_tools/README.md +9 -2
- data/vendor/depot_tools/autoninja +14 -6
- data/vendor/depot_tools/autoninja.bat +11 -1
- data/vendor/depot_tools/autoninja.py +40 -18
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
- data/vendor/depot_tools/buildbucket.py +57 -4
- data/vendor/depot_tools/cipd +157 -44
- data/vendor/depot_tools/cipd.bat +51 -14
- data/vendor/depot_tools/cipd.ps1 +104 -42
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +21 -0
- data/vendor/depot_tools/cipd_manifest.txt +19 -6
- data/vendor/depot_tools/cipd_manifest.versions +318 -0
- data/vendor/depot_tools/clang_format.py +4 -4
- data/vendor/depot_tools/cpplint.py +44 -199
- data/vendor/depot_tools/dart_format.py +2 -2
- data/vendor/depot_tools/detect_host_arch.py +8 -3
- data/vendor/depot_tools/download_from_google_storage.py +47 -39
- data/vendor/depot_tools/fetch.py +30 -18
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
- data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fix_encoding.py +3 -3
- data/vendor/depot_tools/gclient +1 -1
- data/vendor/depot_tools/gclient.py +415 -198
- data/vendor/depot_tools/gclient_eval.py +220 -171
- data/vendor/depot_tools/gclient_paths.py +142 -0
- data/vendor/depot_tools/gclient_scm.py +200 -51
- data/vendor/depot_tools/gclient_utils.py +88 -191
- data/vendor/depot_tools/gerrit_client.py +13 -0
- data/vendor/depot_tools/gerrit_util.py +158 -23
- data/vendor/depot_tools/git-nav-upstream +1 -1
- data/vendor/depot_tools/git_cache.py +77 -24
- data/vendor/depot_tools/git_cl.py +705 -1099
- data/vendor/depot_tools/git_common.py +9 -6
- data/vendor/depot_tools/git_map_branches.py +19 -2
- data/vendor/depot_tools/git_nav_downstream.py +3 -4
- data/vendor/depot_tools/git_rebase_update.py +14 -0
- data/vendor/depot_tools/git_reparent_branch.py +8 -2
- data/vendor/depot_tools/gn.py +38 -3
- data/vendor/depot_tools/gsutil.py +8 -3
- data/vendor/depot_tools/gsutil.py.bat +15 -0
- data/vendor/depot_tools/gsutil.vpython +16 -0
- data/vendor/depot_tools/infra/config/OWNERS +0 -1
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
- data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
- data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
- data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
- data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
- data/vendor/depot_tools/metrics.README.md +98 -0
- data/vendor/depot_tools/metrics.py +296 -0
- data/vendor/depot_tools/metrics_utils.py +303 -0
- data/vendor/depot_tools/my_activity.py +91 -29
- data/vendor/depot_tools/ninja +1 -1
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +232 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
- data/vendor/depot_tools/owners.py +30 -13
- data/vendor/depot_tools/owners_finder.py +5 -2
- data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
- data/vendor/depot_tools/presubmit_support.py +18 -41
- data/vendor/depot_tools/pylintrc +23 -19
- data/vendor/depot_tools/recipes/OWNERS +2 -0
- data/vendor/depot_tools/recipes/README.recipes.md +344 -151
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -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 +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
- data/vendor/depot_tools/recipes/recipes.py +37 -27
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
- data/vendor/depot_tools/repo +34 -8
- data/vendor/depot_tools/roll_dep.py +52 -49
- data/vendor/depot_tools/scm.py +38 -23
- data/vendor/depot_tools/setup_color.py +4 -2
- data/vendor/depot_tools/split_cl.py +32 -4
- data/vendor/depot_tools/subprocess2.py +22 -4
- data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
- data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
- data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
- data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
- data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
- data/vendor/depot_tools/third_party/pylint/config.py +739 -76
- data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
- data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
- data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
- data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
- data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
- data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
- data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
- data/vendor/depot_tools/third_party/repo/progress.py +42 -0
- data/vendor/depot_tools/update_depot_tools +1 -1
- data/vendor/depot_tools/upload_metrics.py +25 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
- data/vendor/depot_tools/yapf +1 -1
- data/vendor/depot_tools/yapf.bat +1 -1
- metadata +92 -77
- data/vendor/depot_tools/git-crsync +0 -3
- data/vendor/depot_tools/infra/config/cq.cfg +0 -32
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
- data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
- data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
- data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
- data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
- data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
- data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
- data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
- data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
- data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
- data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
- data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
- data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
- data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
- data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
- data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
- data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
- data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
- data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
- data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
- data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
- data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
- data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
- data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
- data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
- data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
- data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
- data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
- data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
- data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
- data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
- data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
- data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
- data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
- data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
- data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
- data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
- data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
- data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
- data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
- data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
- data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
- data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -26,7 +26,8 @@ class OwnersFinder(object):
|
|
26
26
|
fopen, os_path,
|
27
27
|
email_postfix='@chromium.org',
|
28
28
|
disable_color=False,
|
29
|
-
override_files=None
|
29
|
+
override_files=None,
|
30
|
+
ignore_author=False):
|
30
31
|
self.email_postfix = email_postfix
|
31
32
|
|
32
33
|
if os.name == 'nt' or disable_color:
|
@@ -46,7 +47,7 @@ class OwnersFinder(object):
|
|
46
47
|
filtered_files = files
|
47
48
|
|
48
49
|
reviewers = list(reviewers)
|
49
|
-
if author:
|
50
|
+
if author and not ignore_author:
|
50
51
|
reviewers.append(author)
|
51
52
|
|
52
53
|
# Eliminate files that existing reviewers can review.
|
@@ -62,6 +63,8 @@ class OwnersFinder(object):
|
|
62
63
|
self.db.load_data_needed_for(files)
|
63
64
|
|
64
65
|
self.all_possible_owners = self.db.all_possible_owners(files, None)
|
66
|
+
if author and author in self.all_possible_owners:
|
67
|
+
del self.all_possible_owners[author]
|
65
68
|
|
66
69
|
self.owners_to_files = {}
|
67
70
|
self._map_owners_to_files(files)
|
@@ -248,15 +248,38 @@ def _ReportErrorFileAndLine(filename, line_num, dummy_line):
|
|
248
248
|
return '%s:%s' % (filename, line_num)
|
249
249
|
|
250
250
|
|
251
|
-
def
|
252
|
-
|
251
|
+
def _GenerateAffectedFileExtList(input_api, source_file_filter):
|
252
|
+
"""Generate a list of (file, extension) tuples from affected files.
|
253
|
+
|
254
|
+
The result can be fed to _FindNewViolationsOfRule() directly, or
|
255
|
+
could be filtered before doing that.
|
256
|
+
|
257
|
+
Args:
|
258
|
+
input_api: object to enumerate the affected files.
|
259
|
+
source_file_filter: a filter to be passed to the input api.
|
260
|
+
Yields:
|
261
|
+
A list of (file, extension) tuples, where |file| is an affected
|
262
|
+
file, and |extension| its file path extension.
|
263
|
+
"""
|
264
|
+
for f in input_api.AffectedFiles(
|
265
|
+
include_deletes=False, file_filter=source_file_filter):
|
266
|
+
extension = str(f.LocalPath()).rsplit('.', 1)[-1]
|
267
|
+
yield (f, extension)
|
268
|
+
|
269
|
+
|
270
|
+
def _FindNewViolationsOfRuleForList(callable_rule,
|
271
|
+
file_ext_list,
|
272
|
+
error_formatter=_ReportErrorFileAndLine):
|
253
273
|
"""Find all newly introduced violations of a per-line rule (a callable).
|
254
274
|
|
275
|
+
Prefer calling _FindNewViolationsOfRule() instead of this function, unless
|
276
|
+
the list of affected files need to be filtered in a special way.
|
277
|
+
|
255
278
|
Arguments:
|
256
279
|
callable_rule: a callable taking a file extension and line of input and
|
257
280
|
returning True if the rule is satisfied and False if there was a problem.
|
258
|
-
|
259
|
-
|
281
|
+
file_ext_list: a list of input (file, extension) tuples, as returned by
|
282
|
+
_GenerateAffectedFileExtList().
|
260
283
|
error_formatter: a callable taking (filename, line_number, line) and
|
261
284
|
returning a formatted error string.
|
262
285
|
|
@@ -264,13 +287,11 @@ def _FindNewViolationsOfRule(callable_rule, input_api, source_file_filter=None,
|
|
264
287
|
A list of the newly-introduced violations reported by the rule.
|
265
288
|
"""
|
266
289
|
errors = []
|
267
|
-
for f in
|
268
|
-
file_filter=source_file_filter):
|
290
|
+
for f, extension in file_ext_list:
|
269
291
|
# For speed, we do two passes, checking first the full file. Shelling out
|
270
292
|
# to the SCM to determine the changed region can be quite expensive on
|
271
293
|
# Win32. Assuming that most files will be kept problem-free, we can
|
272
294
|
# skip the SCM operations most of the time.
|
273
|
-
extension = str(f.LocalPath()).rsplit('.', 1)[-1]
|
274
295
|
if all(callable_rule(extension, line) for line in f.NewContents()):
|
275
296
|
continue # No violation found in full text: can skip considering diff.
|
276
297
|
|
@@ -281,6 +302,28 @@ def _FindNewViolationsOfRule(callable_rule, input_api, source_file_filter=None,
|
|
281
302
|
return errors
|
282
303
|
|
283
304
|
|
305
|
+
def _FindNewViolationsOfRule(callable_rule,
|
306
|
+
input_api,
|
307
|
+
source_file_filter=None,
|
308
|
+
error_formatter=_ReportErrorFileAndLine):
|
309
|
+
"""Find all newly introduced violations of a per-line rule (a callable).
|
310
|
+
|
311
|
+
Arguments:
|
312
|
+
callable_rule: a callable taking a file extension and line of input and
|
313
|
+
returning True if the rule is satisfied and False if there was a problem.
|
314
|
+
input_api: object to enumerate the affected files.
|
315
|
+
source_file_filter: a filter to be passed to the input api.
|
316
|
+
error_formatter: a callable taking (filename, line_number, line) and
|
317
|
+
returning a formatted error string.
|
318
|
+
|
319
|
+
Returns:
|
320
|
+
A list of the newly-introduced violations reported by the rule.
|
321
|
+
"""
|
322
|
+
return _FindNewViolationsOfRuleForList(
|
323
|
+
callable_rule, _GenerateAffectedFileExtList(
|
324
|
+
input_api, source_file_filter), error_formatter)
|
325
|
+
|
326
|
+
|
284
327
|
def CheckChangeHasNoTabs(input_api, output_api, source_file_filter=None):
|
285
328
|
"""Checks that there are no tab characters in any of the text files to be
|
286
329
|
submitted.
|
@@ -385,11 +428,6 @@ def CheckLongLines(input_api, output_api, maxlen, source_file_filter=None):
|
|
385
428
|
if any((url in line) for url in ('file://', 'http://', 'https://')):
|
386
429
|
return True
|
387
430
|
|
388
|
-
# If 'line-too-long' is explicitly suppressed for the line, any length is
|
389
|
-
# acceptable.
|
390
|
-
if 'pylint: disable=line-too-long' in line and file_extension == 'py':
|
391
|
-
return True
|
392
|
-
|
393
431
|
if line_len > extra_maxlen:
|
394
432
|
return False
|
395
433
|
|
@@ -402,12 +440,64 @@ def CheckLongLines(input_api, output_api, maxlen, source_file_filter=None):
|
|
402
440
|
return input_api.re.match(
|
403
441
|
r'.*[A-Za-z][A-Za-z_0-9]{%d,}.*' % long_symbol, line)
|
404
442
|
|
443
|
+
def is_global_pylint_directive(line, pos):
|
444
|
+
"""True iff the pylint directive starting at line[pos] is global."""
|
445
|
+
# Any character before |pos| that is not whitespace or '#' indidcates
|
446
|
+
# this is a local directive.
|
447
|
+
return not any([c not in " \t#" for c in line[:pos]])
|
448
|
+
|
449
|
+
def check_python_long_lines(affected_files, error_formatter):
|
450
|
+
errors = []
|
451
|
+
global_check_enabled = True
|
452
|
+
|
453
|
+
for f in affected_files:
|
454
|
+
file_path = f.LocalPath()
|
455
|
+
for idx, line in enumerate(f.NewContents()):
|
456
|
+
line_num = idx + 1
|
457
|
+
line_is_short = no_long_lines(PY_FILE_EXTS[0], line)
|
458
|
+
|
459
|
+
pos = line.find('pylint: disable=line-too-long')
|
460
|
+
if pos >= 0:
|
461
|
+
if is_global_pylint_directive(line, pos):
|
462
|
+
global_check_enabled = False # Global disable
|
463
|
+
else:
|
464
|
+
continue # Local disable.
|
465
|
+
|
466
|
+
do_check = global_check_enabled
|
467
|
+
|
468
|
+
pos = line.find('pylint: enable=line-too-long')
|
469
|
+
if pos >= 0:
|
470
|
+
if is_global_pylint_directive(line, pos):
|
471
|
+
global_check_enabled = True # Global enable
|
472
|
+
do_check = True # Ensure it applies to current line as well.
|
473
|
+
else:
|
474
|
+
do_check = True # Local enable
|
475
|
+
|
476
|
+
if do_check and not line_is_short:
|
477
|
+
errors.append(error_formatter(file_path, line_num, line))
|
478
|
+
|
479
|
+
return errors
|
480
|
+
|
405
481
|
def format_error(filename, line_num, line):
|
406
482
|
return '%s, line %s, %s chars' % (filename, line_num, len(line))
|
407
483
|
|
408
|
-
|
409
|
-
|
410
|
-
|
484
|
+
file_ext_list = list(
|
485
|
+
_GenerateAffectedFileExtList(input_api, source_file_filter))
|
486
|
+
|
487
|
+
errors = []
|
488
|
+
|
489
|
+
# For non-Python files, a simple line-based rule check is enough.
|
490
|
+
non_py_file_ext_list = [x for x in file_ext_list if x[1] not in PY_FILE_EXTS]
|
491
|
+
if non_py_file_ext_list:
|
492
|
+
errors += _FindNewViolationsOfRuleForList(
|
493
|
+
no_long_lines, non_py_file_ext_list, error_formatter=format_error)
|
494
|
+
|
495
|
+
# However, Python files need more sophisticated checks that need parsing
|
496
|
+
# the whole source file.
|
497
|
+
py_file_list = [x[0] for x in file_ext_list if x[1] in PY_FILE_EXTS]
|
498
|
+
if py_file_list:
|
499
|
+
errors += check_python_long_lines(
|
500
|
+
py_file_list, error_formatter=format_error)
|
411
501
|
if errors:
|
412
502
|
msg = 'Found lines longer than %s characters (first 5 shown).' % maxlen
|
413
503
|
return [output_api.PresubmitPromptWarning(msg, items=errors[:5])]
|
@@ -840,7 +930,9 @@ def CheckOwnersFormat(input_api, output_api):
|
|
840
930
|
if not affected_files:
|
841
931
|
return []
|
842
932
|
try:
|
843
|
-
input_api.owners_db
|
933
|
+
owners_db = input_api.owners_db
|
934
|
+
owners_db.override_files = {}
|
935
|
+
owners_db.load_data_needed_for(affected_files)
|
844
936
|
return []
|
845
937
|
except Exception as e:
|
846
938
|
return [output_api.PresubmitError(
|
@@ -892,8 +984,8 @@ def CheckOwners(input_api, output_api, source_file_filter=None):
|
|
892
984
|
output_fn('Missing %s for these files:\n %s' %
|
893
985
|
(needed, '\n '.join(sorted(missing_files))))]
|
894
986
|
if input_api.tbr and affects_owners:
|
895
|
-
output_list.append(output_fn('
|
896
|
-
'
|
987
|
+
output_list.append(output_fn('The CL affects an OWNERS file, so TBR will '
|
988
|
+
'be ignored.'))
|
897
989
|
if not input_api.is_committing:
|
898
990
|
suggested_owners = owners_db.reviewers_for(missing_files, owner_email)
|
899
991
|
owners_with_comments = []
|
@@ -1060,18 +1152,27 @@ def PanProjectChecks(input_api, output_api,
|
|
1060
1152
|
return results
|
1061
1153
|
|
1062
1154
|
|
1063
|
-
def CheckPatchFormatted(
|
1064
|
-
|
1065
|
-
|
1155
|
+
def CheckPatchFormatted(input_api,
|
1156
|
+
output_api,
|
1157
|
+
bypass_warnings=True,
|
1158
|
+
check_js=False,
|
1159
|
+
check_python=None,
|
1160
|
+
result_factory=None):
|
1066
1161
|
result_factory = result_factory or output_api.PresubmitPromptWarning
|
1067
1162
|
import git_cl
|
1068
1163
|
|
1069
1164
|
display_args = []
|
1070
1165
|
if check_js:
|
1071
1166
|
display_args.append('--js')
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1167
|
+
|
1168
|
+
# Explicitly setting check_python to will enable/disable python formatting
|
1169
|
+
# on all files. Leaving it as None will enable checking patch formatting
|
1170
|
+
# on files that have a .style.yapf file in a parent directory.
|
1171
|
+
if check_python is not None:
|
1172
|
+
if check_python:
|
1173
|
+
display_args.append('--python')
|
1174
|
+
else:
|
1175
|
+
display_args.append('--no-python')
|
1075
1176
|
|
1076
1177
|
cmd = ['-C', input_api.change.RepositoryRoot(),
|
1077
1178
|
'cl', 'format', '--dry-run', '--presubmit'] + display_args
|
@@ -1084,8 +1185,11 @@ def CheckPatchFormatted(
|
|
1084
1185
|
# contains the PRESUBMIT.py.
|
1085
1186
|
if presubmit_subdir:
|
1086
1187
|
cmd.append(input_api.PresubmitLocalPath())
|
1087
|
-
code, _ = git_cl.RunGitWithCode(cmd, suppress_stderr=
|
1088
|
-
|
1188
|
+
code, _ = git_cl.RunGitWithCode(cmd, suppress_stderr=bypass_warnings)
|
1189
|
+
# bypass_warnings? Only fail with code 2.
|
1190
|
+
# As this is just a warning, ignore all other errors if the user
|
1191
|
+
# happens to have a broken clang-format, doesn't use git, etc etc.
|
1192
|
+
if code == 2 or (code and not bypass_warnings):
|
1089
1193
|
if presubmit_subdir:
|
1090
1194
|
short_path = presubmit_subdir
|
1091
1195
|
else:
|
@@ -1095,8 +1199,6 @@ def CheckPatchFormatted(
|
|
1095
1199
|
'The %s directory requires source formatting. '
|
1096
1200
|
'Please run: git cl format %s' %
|
1097
1201
|
(short_path, ' '.join(display_args)))]
|
1098
|
-
# As this is just a warning, ignore all other errors if the user
|
1099
|
-
# happens to have a broken clang-format, doesn't use git, etc etc.
|
1100
1202
|
return []
|
1101
1203
|
|
1102
1204
|
|
@@ -1181,6 +1283,29 @@ def CheckCIPDPackages(input_api, output_api, platforms, packages):
|
|
1181
1283
|
return CheckCIPDManifest(input_api, output_api, content='\n'.join(manifest))
|
1182
1284
|
|
1183
1285
|
|
1286
|
+
def CheckCIPDClientDigests(input_api, output_api, client_version_file):
|
1287
|
+
"""Verifies that *.digests file was correctly regenerated.
|
1288
|
+
|
1289
|
+
<client_version_file>.digests file contains pinned hashes of the CIPD client.
|
1290
|
+
It is consulted during CIPD client bootstrap and self-update. It should be
|
1291
|
+
regenerated each time CIPD client version file changes.
|
1292
|
+
|
1293
|
+
Args:
|
1294
|
+
client_version_file (str): Path to a text file with CIPD client version.
|
1295
|
+
"""
|
1296
|
+
cmd = [
|
1297
|
+
'cipd' if not input_api.is_windows else 'cipd.bat',
|
1298
|
+
'selfupdate-roll', '-check', '-version-file', client_version_file,
|
1299
|
+
]
|
1300
|
+
if input_api.verbose:
|
1301
|
+
cmd += ['-log-level', 'debug']
|
1302
|
+
return input_api.Command(
|
1303
|
+
'Check CIPD client_version_file.digests file',
|
1304
|
+
cmd,
|
1305
|
+
{'shell': True} if input_api.is_windows else {}, # to resolve cipd.bat
|
1306
|
+
output_api.PresubmitError)
|
1307
|
+
|
1308
|
+
|
1184
1309
|
def CheckVPythonSpec(input_api, output_api, file_filter=None):
|
1185
1310
|
"""Validates any changed .vpython files with vpython verification tool.
|
1186
1311
|
|
@@ -1277,7 +1402,7 @@ def CheckChangedLUCIConfigs(input_api, output_api):
|
|
1277
1402
|
('%s/' % cs['location']) == loc_pref
|
1278
1403
|
}
|
1279
1404
|
cs_to_files = collections.defaultdict(list)
|
1280
|
-
for f in input_api.AffectedFiles():
|
1405
|
+
for f in input_api.AffectedFiles(include_deletes=False):
|
1281
1406
|
# windows
|
1282
1407
|
file_path = f.LocalPath().replace(_os.sep, '/')
|
1283
1408
|
logging.debug('Affected file path: %s', file_path)
|
@@ -1307,3 +1432,37 @@ def CheckChangedLUCIConfigs(input_api, output_api):
|
|
1307
1432
|
out_f = output_api.PresubmitNotifyResult
|
1308
1433
|
outputs.append(out_f('Config validation: %s' % msg['text']))
|
1309
1434
|
return outputs
|
1435
|
+
|
1436
|
+
|
1437
|
+
def CheckLucicfgGenOutput(input_api, output_api, entry_script):
|
1438
|
+
"""Verifies configs produced by `lucicfg` are up-to-date and pass validation.
|
1439
|
+
|
1440
|
+
Runs the check unconditionally, regardless of what files are modified. Examine
|
1441
|
+
input_api.AffectedFiles() yourself before using CheckLucicfgGenOutput if this
|
1442
|
+
is a concern.
|
1443
|
+
|
1444
|
+
Assumes `lucicfg` binary is in PATH and the user is logged in.
|
1445
|
+
|
1446
|
+
Args:
|
1447
|
+
entry_script: path to the entry-point *.star script responsible for
|
1448
|
+
generating a single config set. Either absolute or relative to the
|
1449
|
+
currently running PRESUBMIT.py script.
|
1450
|
+
|
1451
|
+
Returns:
|
1452
|
+
A list of input_api.Command objects containing verification commands.
|
1453
|
+
"""
|
1454
|
+
return [
|
1455
|
+
input_api.Command(
|
1456
|
+
'lucicfg validate "%s"' % entry_script,
|
1457
|
+
[
|
1458
|
+
'lucicfg' if not input_api.is_windows else 'lucicfg.bat',
|
1459
|
+
'validate', entry_script,
|
1460
|
+
'-log-level', 'debug' if input_api.verbose else 'warning',
|
1461
|
+
],
|
1462
|
+
{
|
1463
|
+
'stderr': input_api.subprocess.STDOUT,
|
1464
|
+
'shell': input_api.is_windows, # to resolve *.bat
|
1465
|
+
'cwd': input_api.PresubmitLocalPath(),
|
1466
|
+
},
|
1467
|
+
output_api.PresubmitError)
|
1468
|
+
]
|
@@ -13,10 +13,10 @@ __version__ = '1.8.0'
|
|
13
13
|
# change). We should add it as our presubmit scripts start feeling slow.
|
14
14
|
|
15
15
|
import ast # Exposed through the API.
|
16
|
-
import
|
16
|
+
import contextlib
|
17
17
|
import cPickle # Exposed through the API.
|
18
|
+
import cpplint
|
18
19
|
import cStringIO # Exposed through the API.
|
19
|
-
import contextlib
|
20
20
|
import fnmatch # Exposed through the API.
|
21
21
|
import glob
|
22
22
|
import inspect
|
@@ -44,6 +44,7 @@ from warnings import warn
|
|
44
44
|
|
45
45
|
# Local imports.
|
46
46
|
import fix_encoding
|
47
|
+
import gclient_paths # Exposed through the API
|
47
48
|
import gclient_utils
|
48
49
|
import git_footers
|
49
50
|
import gerrit_util
|
@@ -437,39 +438,6 @@ class OutputApi(object):
|
|
437
438
|
return self.PresubmitNotifyResult(*args, **kwargs)
|
438
439
|
return self.PresubmitPromptWarning(*args, **kwargs)
|
439
440
|
|
440
|
-
def EnsureCQIncludeTrybotsAreAdded(self, cl, bots_to_include, message):
|
441
|
-
"""Helper for any PostUploadHook wishing to add CQ_INCLUDE_TRYBOTS.
|
442
|
-
|
443
|
-
Merges the bots_to_include into the current CQ_INCLUDE_TRYBOTS list,
|
444
|
-
keeping it alphabetically sorted. Returns the results that should be
|
445
|
-
returned from the PostUploadHook.
|
446
|
-
|
447
|
-
Args:
|
448
|
-
cl: The git_cl.Changelist object.
|
449
|
-
bots_to_include: A list of strings of bots to include, in the form
|
450
|
-
"master:slave".
|
451
|
-
message: A message to be printed in the case that
|
452
|
-
CQ_INCLUDE_TRYBOTS was updated.
|
453
|
-
"""
|
454
|
-
description = cl.GetDescription(force=True)
|
455
|
-
trybot_footers = git_footers.parse_footers(description).get(
|
456
|
-
git_footers.normalize_name('Cq-Include-Trybots'), [])
|
457
|
-
prior_bots = []
|
458
|
-
for f in trybot_footers:
|
459
|
-
prior_bots += [b.strip() for b in f.split(';') if b.strip()]
|
460
|
-
|
461
|
-
if set(prior_bots) >= set(bots_to_include):
|
462
|
-
return []
|
463
|
-
all_bots = ';'.join(sorted(set(prior_bots) | set(bots_to_include)))
|
464
|
-
|
465
|
-
description = git_footers.remove_footer(description, 'Cq-Include-Trybots')
|
466
|
-
description = git_footers.add_footer(
|
467
|
-
description, 'Cq-Include-Trybots', all_bots,
|
468
|
-
before_keys=['Change-Id'])
|
469
|
-
|
470
|
-
cl.UpdateDescription(description, force=True)
|
471
|
-
return [self.PresubmitNotifyResult(message)]
|
472
|
-
|
473
441
|
|
474
442
|
class InputApi(object):
|
475
443
|
"""An instance of this object is passed to presubmit scripts so they can
|
@@ -549,15 +517,19 @@ class InputApi(object):
|
|
549
517
|
self.cpplint = cpplint
|
550
518
|
self.cStringIO = cStringIO
|
551
519
|
self.fnmatch = fnmatch
|
520
|
+
self.gclient_paths = gclient_paths
|
521
|
+
# TODO(yyanagisawa): stop exposing this when python3 become default.
|
522
|
+
# Since python3's tempfile has TemporaryDirectory, we do not need this.
|
523
|
+
self.temporary_directory = gclient_utils.temporary_directory
|
552
524
|
self.glob = glob.glob
|
553
525
|
self.json = json
|
554
526
|
self.logging = logging.getLogger('PRESUBMIT')
|
527
|
+
self.marshal = marshal
|
555
528
|
self.os_listdir = os.listdir
|
556
|
-
self.os_walk = os.walk
|
557
529
|
self.os_path = os.path
|
558
530
|
self.os_stat = os.stat
|
531
|
+
self.os_walk = os.walk
|
559
532
|
self.pickle = pickle
|
560
|
-
self.marshal = marshal
|
561
533
|
self.re = re
|
562
534
|
self.subprocess = subprocess
|
563
535
|
self.tempfile = tempfile
|
@@ -761,6 +733,7 @@ class InputApi(object):
|
|
761
733
|
# will run all tests once all PRESUBMIT files are processed.
|
762
734
|
tests = []
|
763
735
|
msgs = []
|
736
|
+
parallel = parallel and self.parallel
|
764
737
|
for t in tests_mix:
|
765
738
|
if isinstance(t, OutputApi.PresubmitResult) and t:
|
766
739
|
msgs.append(t)
|
@@ -772,7 +745,7 @@ class InputApi(object):
|
|
772
745
|
if not t.kwargs.get('cwd'):
|
773
746
|
t.kwargs['cwd'] = self.PresubmitLocalPath()
|
774
747
|
self.thread_pool.AddTests(tests, parallel)
|
775
|
-
if not
|
748
|
+
if not parallel:
|
776
749
|
msgs.extend(self.thread_pool.RunAsync())
|
777
750
|
return msgs
|
778
751
|
|
@@ -1063,7 +1036,11 @@ class Change(object):
|
|
1063
1036
|
def BugsFromDescription(self):
|
1064
1037
|
"""Returns all bugs referenced in the commit description."""
|
1065
1038
|
tags = [b.strip() for b in self.tags.get('BUG', '').split(',') if b.strip()]
|
1066
|
-
footers =
|
1039
|
+
footers = []
|
1040
|
+
unsplit_footers = git_footers.parse_footers(self._full_description).get(
|
1041
|
+
'Bug', [])
|
1042
|
+
for unsplit_footer in unsplit_footers:
|
1043
|
+
footers += [b.strip() for b in unsplit_footer.split(',')]
|
1067
1044
|
return sorted(set(tags + footers))
|
1068
1045
|
|
1069
1046
|
def ReviewersFromDescription(self):
|
@@ -1529,8 +1506,8 @@ def DoPresubmitChecks(change,
|
|
1529
1506
|
output.write("Warning, no PRESUBMIT.py found.\n")
|
1530
1507
|
results = []
|
1531
1508
|
thread_pool = ThreadPool()
|
1532
|
-
executer = PresubmitExecuter(change, committing, verbose,
|
1533
|
-
|
1509
|
+
executer = PresubmitExecuter(change, committing, verbose, gerrit_obj,
|
1510
|
+
dry_run, thread_pool, parallel)
|
1534
1511
|
if default_presubmit:
|
1535
1512
|
if verbose:
|
1536
1513
|
output.write("Running default presubmit script.\n")
|