libv8 8.4.255.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (639) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +45 -0
  6. data/CHANGELOG.md +111 -0
  7. data/Gemfile +4 -0
  8. data/README.md +152 -0
  9. data/Rakefile +125 -0
  10. data/appveyor.yml.disabled +36 -0
  11. data/ext/libv8/arch.rb +20 -0
  12. data/ext/libv8/builder.rb +106 -0
  13. data/ext/libv8/extconf.rb +7 -0
  14. data/ext/libv8/location.rb +89 -0
  15. data/ext/libv8/paths.rb +28 -0
  16. data/lib/libv8.rb +9 -0
  17. data/lib/libv8/version.rb +3 -0
  18. data/libv8.gemspec +30 -0
  19. data/scaleway.png +0 -0
  20. data/spec/location_spec.rb +69 -0
  21. data/spec/spec_helper.rb +4 -0
  22. data/thefrontside.png +0 -0
  23. data/vendor/depot_tools/.cipd_impl.ps1 +129 -0
  24. data/vendor/depot_tools/.gitattributes +55 -0
  25. data/vendor/depot_tools/.gitignore +92 -0
  26. data/vendor/depot_tools/.style.yapf +4 -0
  27. data/vendor/depot_tools/.vpython +55 -0
  28. data/vendor/depot_tools/.vpython3 +23 -0
  29. data/vendor/depot_tools/CROS_OWNERS +7 -0
  30. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  31. data/vendor/depot_tools/LICENSE +27 -0
  32. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  33. data/vendor/depot_tools/OWNERS +39 -0
  34. data/vendor/depot_tools/PRESUBMIT.py +150 -0
  35. data/vendor/depot_tools/README.gclient.md +67 -0
  36. data/vendor/depot_tools/README.git-cl.md +99 -0
  37. data/vendor/depot_tools/README.md +78 -0
  38. data/vendor/depot_tools/WATCHLISTS +26 -0
  39. data/vendor/depot_tools/auth.py +163 -0
  40. data/vendor/depot_tools/autoninja +36 -0
  41. data/vendor/depot_tools/autoninja.bat +33 -0
  42. data/vendor/depot_tools/autoninja.py +148 -0
  43. data/vendor/depot_tools/bb +12 -0
  44. data/vendor/depot_tools/bb.bat +7 -0
  45. data/vendor/depot_tools/bootstrap/README.md +155 -0
  46. data/vendor/depot_tools/bootstrap/bootstrap.py +356 -0
  47. data/vendor/depot_tools/bootstrap/git-bash.template.sh +12 -0
  48. data/vendor/depot_tools/bootstrap/git.template.bat +5 -0
  49. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  50. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  51. data/vendor/depot_tools/bootstrap/profile.d.python.sh +20 -0
  52. data/vendor/depot_tools/bootstrap/python27.bat +46 -0
  53. data/vendor/depot_tools/bootstrap/python3.bat +46 -0
  54. data/vendor/depot_tools/bootstrap/win_tools.bat +79 -0
  55. data/vendor/depot_tools/bootstrap_python3 +35 -0
  56. data/vendor/depot_tools/breakpad.py +12 -0
  57. data/vendor/depot_tools/cbuildbot +1 -0
  58. data/vendor/depot_tools/chrome_set_ver +1 -0
  59. data/vendor/depot_tools/cipd +247 -0
  60. data/vendor/depot_tools/cipd.bat +67 -0
  61. data/vendor/depot_tools/cipd_bin_setup.bat +6 -0
  62. data/vendor/depot_tools/cipd_bin_setup.sh +22 -0
  63. data/vendor/depot_tools/cipd_client_version +1 -0
  64. data/vendor/depot_tools/cipd_client_version.digests +22 -0
  65. data/vendor/depot_tools/cipd_manifest.txt +63 -0
  66. data/vendor/depot_tools/cipd_manifest.versions +438 -0
  67. data/vendor/depot_tools/cit +8 -0
  68. data/vendor/depot_tools/cit.bat +12 -0
  69. data/vendor/depot_tools/cit.py +167 -0
  70. data/vendor/depot_tools/clang-format +8 -0
  71. data/vendor/depot_tools/clang-format.bat +12 -0
  72. data/vendor/depot_tools/clang_format.py +79 -0
  73. data/vendor/depot_tools/clang_format_merge_driver +8 -0
  74. data/vendor/depot_tools/clang_format_merge_driver.bat +12 -0
  75. data/vendor/depot_tools/clang_format_merge_driver.py +69 -0
  76. data/vendor/depot_tools/codereview.settings +6 -0
  77. data/vendor/depot_tools/compile_single_file +8 -0
  78. data/vendor/depot_tools/compile_single_file.bat +11 -0
  79. data/vendor/depot_tools/compile_single_file.py +79 -0
  80. data/vendor/depot_tools/cpplint.bat +11 -0
  81. data/vendor/depot_tools/cpplint.py +6097 -0
  82. data/vendor/depot_tools/cpplint_chromium.py +50 -0
  83. data/vendor/depot_tools/cros +87 -0
  84. data/vendor/depot_tools/cros_sdk +1 -0
  85. data/vendor/depot_tools/crosjobs +13 -0
  86. data/vendor/depot_tools/detect_host_arch.py +55 -0
  87. data/vendor/depot_tools/dirmd +12 -0
  88. data/vendor/depot_tools/dirmd.bat +7 -0
  89. data/vendor/depot_tools/download_from_google_storage +8 -0
  90. data/vendor/depot_tools/download_from_google_storage.bat +12 -0
  91. data/vendor/depot_tools/download_from_google_storage.py +634 -0
  92. data/vendor/depot_tools/ensure_bootstrap +53 -0
  93. data/vendor/depot_tools/fetch +21 -0
  94. data/vendor/depot_tools/fetch.bat +28 -0
  95. data/vendor/depot_tools/fetch.py +319 -0
  96. data/vendor/depot_tools/fetch_configs/android.py +34 -0
  97. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  98. data/vendor/depot_tools/fetch_configs/breakpad.py +44 -0
  99. data/vendor/depot_tools/fetch_configs/chromium.py +66 -0
  100. data/vendor/depot_tools/fetch_configs/config_util.py +52 -0
  101. data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
  102. data/vendor/depot_tools/fetch_configs/dart.py +45 -0
  103. data/vendor/depot_tools/fetch_configs/depot_tools.py +44 -0
  104. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  105. data/vendor/depot_tools/fetch_configs/goma_client.py +41 -0
  106. data/vendor/depot_tools/fetch_configs/gyp.py +41 -0
  107. data/vendor/depot_tools/fetch_configs/infra.py +40 -0
  108. data/vendor/depot_tools/fetch_configs/infra_internal.py +45 -0
  109. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  110. data/vendor/depot_tools/fetch_configs/ios.py +34 -0
  111. data/vendor/depot_tools/fetch_configs/ios_internal.py +39 -0
  112. data/vendor/depot_tools/fetch_configs/nacl.py +48 -0
  113. data/vendor/depot_tools/fetch_configs/naclports.py +47 -0
  114. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  115. data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
  116. data/vendor/depot_tools/fetch_configs/skia.py +41 -0
  117. data/vendor/depot_tools/fetch_configs/skia_buildbot.py +41 -0
  118. data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
  119. data/vendor/depot_tools/fetch_configs/v8.py +44 -0
  120. data/vendor/depot_tools/fetch_configs/webrtc.py +52 -0
  121. data/vendor/depot_tools/fetch_configs/webrtc_android.py +34 -0
  122. data/vendor/depot_tools/fetch_configs/webrtc_ios.py +34 -0
  123. data/vendor/depot_tools/fix_encoding.py +385 -0
  124. data/vendor/depot_tools/gclient +38 -0
  125. data/vendor/depot_tools/gclient-new-workdir.py +124 -0
  126. data/vendor/depot_tools/gclient.bat +32 -0
  127. data/vendor/depot_tools/gclient.py +3198 -0
  128. data/vendor/depot_tools/gclient_completion.sh +76 -0
  129. data/vendor/depot_tools/gclient_eval.py +891 -0
  130. data/vendor/depot_tools/gclient_paths.py +152 -0
  131. data/vendor/depot_tools/gclient_scm.py +1615 -0
  132. data/vendor/depot_tools/gclient_utils.py +1280 -0
  133. data/vendor/depot_tools/gerrit_client.py +151 -0
  134. data/vendor/depot_tools/gerrit_util.py +996 -0
  135. data/vendor/depot_tools/git-cache +6 -0
  136. data/vendor/depot_tools/git-cl +6 -0
  137. data/vendor/depot_tools/git-crrev-parse +53 -0
  138. data/vendor/depot_tools/git-drover +6 -0
  139. data/vendor/depot_tools/git-find-releases +6 -0
  140. data/vendor/depot_tools/git-footers +6 -0
  141. data/vendor/depot_tools/git-freeze +8 -0
  142. data/vendor/depot_tools/git-gs +9 -0
  143. data/vendor/depot_tools/git-hyper-blame +6 -0
  144. data/vendor/depot_tools/git-map +6 -0
  145. data/vendor/depot_tools/git-map-branches +6 -0
  146. data/vendor/depot_tools/git-mark-merge-base +6 -0
  147. data/vendor/depot_tools/git-nav-downstream +6 -0
  148. data/vendor/depot_tools/git-nav-upstream +6 -0
  149. data/vendor/depot_tools/git-new-branch +6 -0
  150. data/vendor/depot_tools/git-number +6 -0
  151. data/vendor/depot_tools/git-rebase-update +6 -0
  152. data/vendor/depot_tools/git-rename-branch +6 -0
  153. data/vendor/depot_tools/git-reparent-branch +6 -0
  154. data/vendor/depot_tools/git-retry +8 -0
  155. data/vendor/depot_tools/git-runhooks +23 -0
  156. data/vendor/depot_tools/git-squash-branch +6 -0
  157. data/vendor/depot_tools/git-templates/description +3 -0
  158. data/vendor/depot_tools/git-templates/hooks/applypatch-msg +4 -0
  159. data/vendor/depot_tools/git-templates/hooks/post-applypatch +4 -0
  160. data/vendor/depot_tools/git-templates/hooks/post-checkout +4 -0
  161. data/vendor/depot_tools/git-templates/hooks/post-commit +4 -0
  162. data/vendor/depot_tools/git-templates/hooks/post-merge +4 -0
  163. data/vendor/depot_tools/git-templates/hooks/post-update +4 -0
  164. data/vendor/depot_tools/git-templates/hooks/pre-applypatch +4 -0
  165. data/vendor/depot_tools/git-templates/hooks/pre-auto-gc +4 -0
  166. data/vendor/depot_tools/git-templates/hooks/pre-commit +4 -0
  167. data/vendor/depot_tools/git-templates/hooks/pre-rebase +4 -0
  168. data/vendor/depot_tools/git-templates/hooks/prepare-commit-msg +4 -0
  169. data/vendor/depot_tools/git-templates/info/exclude +6 -0
  170. data/vendor/depot_tools/git-thaw +13 -0
  171. data/vendor/depot_tools/git-upstream-diff +9 -0
  172. data/vendor/depot_tools/git_cache.py +786 -0
  173. data/vendor/depot_tools/git_cl.py +5158 -0
  174. data/vendor/depot_tools/git_cl_completion.sh +48 -0
  175. data/vendor/depot_tools/git_common.py +1101 -0
  176. data/vendor/depot_tools/git_dates.py +62 -0
  177. data/vendor/depot_tools/git_drover.py +469 -0
  178. data/vendor/depot_tools/git_find_releases.py +67 -0
  179. data/vendor/depot_tools/git_footers.py +261 -0
  180. data/vendor/depot_tools/git_freezer.py +40 -0
  181. data/vendor/depot_tools/git_hyper_blame.py +391 -0
  182. data/vendor/depot_tools/git_map.py +166 -0
  183. data/vendor/depot_tools/git_map_branches.py +354 -0
  184. data/vendor/depot_tools/git_mark_merge_base.py +73 -0
  185. data/vendor/depot_tools/git_nav_downstream.py +69 -0
  186. data/vendor/depot_tools/git_new_branch.py +82 -0
  187. data/vendor/depot_tools/git_number.py +301 -0
  188. data/vendor/depot_tools/git_rebase_update.py +351 -0
  189. data/vendor/depot_tools/git_rename_branch.py +55 -0
  190. data/vendor/depot_tools/git_reparent_branch.py +101 -0
  191. data/vendor/depot_tools/git_retry.py +181 -0
  192. data/vendor/depot_tools/git_squash_branch.py +28 -0
  193. data/vendor/depot_tools/git_upstream_diff.py +64 -0
  194. data/vendor/depot_tools/gn +8 -0
  195. data/vendor/depot_tools/gn.bat +12 -0
  196. data/vendor/depot_tools/gn.py +78 -0
  197. data/vendor/depot_tools/goma_auth +12 -0
  198. data/vendor/depot_tools/goma_auth.bat +8 -0
  199. data/vendor/depot_tools/goma_ctl +12 -0
  200. data/vendor/depot_tools/goma_ctl.bat +8 -0
  201. data/vendor/depot_tools/gsutil.py +190 -0
  202. data/vendor/depot_tools/gsutil.py.bat +23 -0
  203. data/vendor/depot_tools/gsutil.vpython +120 -0
  204. data/vendor/depot_tools/infra/README.md +1 -0
  205. data/vendor/depot_tools/infra/config/OWNERS +7 -0
  206. data/vendor/depot_tools/infra/config/README.md +1 -0
  207. data/vendor/depot_tools/infra/config/recipes.cfg +26 -0
  208. data/vendor/depot_tools/led +12 -0
  209. data/vendor/depot_tools/led.bat +7 -0
  210. data/vendor/depot_tools/lockfile.py +116 -0
  211. data/vendor/depot_tools/luci-auth +13 -0
  212. data/vendor/depot_tools/luci-auth.bat +8 -0
  213. data/vendor/depot_tools/lucicfg +12 -0
  214. data/vendor/depot_tools/lucicfg.bat +7 -0
  215. data/vendor/depot_tools/mac_toolchain +12 -0
  216. data/vendor/depot_tools/man/html/depot_tools.html +934 -0
  217. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +1593 -0
  218. data/vendor/depot_tools/man/html/git-cl.html +1033 -0
  219. data/vendor/depot_tools/man/html/git-drover.html +1048 -0
  220. data/vendor/depot_tools/man/html/git-footers.html +878 -0
  221. data/vendor/depot_tools/man/html/git-freeze.html +859 -0
  222. data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
  223. data/vendor/depot_tools/man/html/git-map-branches.html +904 -0
  224. data/vendor/depot_tools/man/html/git-map.html +887 -0
  225. data/vendor/depot_tools/man/html/git-mark-merge-base.html +826 -0
  226. data/vendor/depot_tools/man/html/git-nav-downstream.html +844 -0
  227. data/vendor/depot_tools/man/html/git-nav-upstream.html +853 -0
  228. data/vendor/depot_tools/man/html/git-new-branch.html +932 -0
  229. data/vendor/depot_tools/man/html/git-rebase-update.html +961 -0
  230. data/vendor/depot_tools/man/html/git-rename-branch.html +794 -0
  231. data/vendor/depot_tools/man/html/git-reparent-branch.html +847 -0
  232. data/vendor/depot_tools/man/html/git-retry.html +858 -0
  233. data/vendor/depot_tools/man/html/git-squash-branch.html +881 -0
  234. data/vendor/depot_tools/man/html/git-thaw.html +794 -0
  235. data/vendor/depot_tools/man/html/git-upstream-diff.html +923 -0
  236. data/vendor/depot_tools/man/man1/git-cl.1 +198 -0
  237. data/vendor/depot_tools/man/man1/git-drover.1 +330 -0
  238. data/vendor/depot_tools/man/man1/git-footers.1 +144 -0
  239. data/vendor/depot_tools/man/man1/git-freeze.1 +113 -0
  240. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
  241. data/vendor/depot_tools/man/man1/git-map-branches.1 +210 -0
  242. data/vendor/depot_tools/man/man1/git-map.1 +179 -0
  243. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +69 -0
  244. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +112 -0
  245. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +122 -0
  246. data/vendor/depot_tools/man/man1/git-new-branch.1 +176 -0
  247. data/vendor/depot_tools/man/man1/git-rebase-update.1 +177 -0
  248. data/vendor/depot_tools/man/man1/git-rename-branch.1 +53 -0
  249. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +93 -0
  250. data/vendor/depot_tools/man/man1/git-retry.1 +108 -0
  251. data/vendor/depot_tools/man/man1/git-squash-branch.1 +129 -0
  252. data/vendor/depot_tools/man/man1/git-thaw.1 +54 -0
  253. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +153 -0
  254. data/vendor/depot_tools/man/man7/depot_tools.7 +139 -0
  255. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +1061 -0
  256. data/vendor/depot_tools/man/push_to_gs.sh +4 -0
  257. data/vendor/depot_tools/man/src/.gitignore +5 -0
  258. data/vendor/depot_tools/man/src/_aliases.txt +5 -0
  259. data/vendor/depot_tools/man/src/_footer.txt +8 -0
  260. data/vendor/depot_tools/man/src/_git-cl_desc.helper.txt +1 -0
  261. data/vendor/depot_tools/man/src/_git-drover_desc.helper.txt +2 -0
  262. data/vendor/depot_tools/man/src/_git-footers_desc.helper.txt +1 -0
  263. data/vendor/depot_tools/man/src/_git-freeze_desc.helper.txt +1 -0
  264. data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
  265. data/vendor/depot_tools/man/src/_git-map-branches_desc.helper.txt +4 -0
  266. data/vendor/depot_tools/man/src/_git-map_desc.helper.txt +3 -0
  267. data/vendor/depot_tools/man/src/_git-mark-merge-base_desc.helper.txt +1 -0
  268. data/vendor/depot_tools/man/src/_git-nav-downstream_desc.helper.txt +1 -0
  269. data/vendor/depot_tools/man/src/_git-nav-upstream_desc.helper.txt +1 -0
  270. data/vendor/depot_tools/man/src/_git-new-branch_desc.helper.txt +1 -0
  271. data/vendor/depot_tools/man/src/_git-rebase-update_desc.helper.txt +1 -0
  272. data/vendor/depot_tools/man/src/_git-rename-branch_desc.helper.txt +1 -0
  273. data/vendor/depot_tools/man/src/_git-reparent-branch_desc.helper.txt +1 -0
  274. data/vendor/depot_tools/man/src/_git-retry_desc.helper.txt +2 -0
  275. data/vendor/depot_tools/man/src/_git-squash-branch_desc.helper.txt +1 -0
  276. data/vendor/depot_tools/man/src/_git-thaw_desc.helper.txt +2 -0
  277. data/vendor/depot_tools/man/src/_git-upstream-diff_desc.helper.txt +1 -0
  278. data/vendor/depot_tools/man/src/_helper_prefix.txt +1 -0
  279. data/vendor/depot_tools/man/src/asciidoc-override.css +7 -0
  280. data/vendor/depot_tools/man/src/common_demo_functions.sh +84 -0
  281. data/vendor/depot_tools/man/src/demo_repo.sh +43 -0
  282. data/vendor/depot_tools/man/src/depot_tools.txt +28 -0
  283. data/vendor/depot_tools/man/src/depot_tools_tutorial.demo.walkthrough.sh +155 -0
  284. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +432 -0
  285. data/vendor/depot_tools/man/src/filter_demo_output.py +141 -0
  286. data/vendor/depot_tools/man/src/git-cl.txt +119 -0
  287. data/vendor/depot_tools/man/src/git-drover.demo.1.sh +22 -0
  288. data/vendor/depot_tools/man/src/git-drover.demo.2.sh +23 -0
  289. data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
  290. data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
  291. data/vendor/depot_tools/man/src/git-drover.demo.common.sh +19 -0
  292. data/vendor/depot_tools/man/src/git-drover.txt +102 -0
  293. data/vendor/depot_tools/man/src/git-footers.demo.1.sh +17 -0
  294. data/vendor/depot_tools/man/src/git-footers.txt +71 -0
  295. data/vendor/depot_tools/man/src/git-freeze.demo.1.sh +23 -0
  296. data/vendor/depot_tools/man/src/git-freeze.txt +54 -0
  297. data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
  298. data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
  299. data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
  300. data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
  301. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +8 -0
  302. data/vendor/depot_tools/man/src/git-map-branches.txt +64 -0
  303. data/vendor/depot_tools/man/src/git-map.demo.1.sh +3 -0
  304. data/vendor/depot_tools/man/src/git-map.txt +67 -0
  305. data/vendor/depot_tools/man/src/git-mark-merge-base.txt +46 -0
  306. data/vendor/depot_tools/man/src/git-nav-downstream.demo.1.sh +12 -0
  307. data/vendor/depot_tools/man/src/git-nav-downstream.txt +40 -0
  308. data/vendor/depot_tools/man/src/git-nav-upstream.demo.1.sh +12 -0
  309. data/vendor/depot_tools/man/src/git-nav-upstream.txt +39 -0
  310. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +17 -0
  311. data/vendor/depot_tools/man/src/git-new-branch.txt +82 -0
  312. data/vendor/depot_tools/man/src/git-rebase-update.txt +141 -0
  313. data/vendor/depot_tools/man/src/git-rename-branch.txt +28 -0
  314. data/vendor/depot_tools/man/src/git-reparent-branch.txt +61 -0
  315. data/vendor/depot_tools/man/src/git-retry.txt +67 -0
  316. data/vendor/depot_tools/man/src/git-squash-branch.demo.1.sh +12 -0
  317. data/vendor/depot_tools/man/src/git-squash-branch.txt +59 -0
  318. data/vendor/depot_tools/man/src/git-thaw.txt +29 -0
  319. data/vendor/depot_tools/man/src/git-upstream-diff.txt +107 -0
  320. data/vendor/depot_tools/man/src/make_docs.sh +260 -0
  321. data/vendor/depot_tools/man/src/prep_demo_repo.sh +103 -0
  322. data/vendor/depot_tools/metrics.README.md +101 -0
  323. data/vendor/depot_tools/metrics.py +297 -0
  324. data/vendor/depot_tools/metrics_utils.py +293 -0
  325. data/vendor/depot_tools/my_activity.py +971 -0
  326. data/vendor/depot_tools/ninja +44 -0
  327. data/vendor/depot_tools/ninja-linux32 +0 -0
  328. data/vendor/depot_tools/ninja-linux64 +0 -0
  329. data/vendor/depot_tools/ninja-mac +0 -0
  330. data/vendor/depot_tools/ninja.exe +0 -0
  331. data/vendor/depot_tools/ninjalog.README.md +64 -0
  332. data/vendor/depot_tools/ninjalog_uploader.py +233 -0
  333. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +125 -0
  334. data/vendor/depot_tools/owners.py +641 -0
  335. data/vendor/depot_tools/owners_finder.py +385 -0
  336. data/vendor/depot_tools/post_build_ninja_summary.py +350 -0
  337. data/vendor/depot_tools/presubmit_canned_checks.py +1655 -0
  338. data/vendor/depot_tools/presubmit_support.py +1923 -0
  339. data/vendor/depot_tools/profile.xml +8 -0
  340. data/vendor/depot_tools/prpc +13 -0
  341. data/vendor/depot_tools/prpc.bat +8 -0
  342. data/vendor/depot_tools/pylint +9 -0
  343. data/vendor/depot_tools/pylint-1.5 +78 -0
  344. data/vendor/depot_tools/pylint-1.6 +78 -0
  345. data/vendor/depot_tools/pylint-1.7 +78 -0
  346. data/vendor/depot_tools/pylint-1.8 +78 -0
  347. data/vendor/depot_tools/pylint-1.9 +78 -0
  348. data/vendor/depot_tools/pylint.bat +12 -0
  349. data/vendor/depot_tools/pylint_main.py +45 -0
  350. data/vendor/depot_tools/pylintrc +349 -0
  351. data/vendor/depot_tools/python-bin/python3 +7 -0
  352. data/vendor/depot_tools/python_runner.sh +60 -0
  353. data/vendor/depot_tools/rdb +12 -0
  354. data/vendor/depot_tools/rdb.bat +7 -0
  355. data/vendor/depot_tools/recipes/OWNERS +4 -0
  356. data/vendor/depot_tools/recipes/README.recipes.md +1079 -0
  357. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -0
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +38 -0
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +516 -0
  361. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +117 -0
  362. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +117 -0
  363. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +118 -0
  364. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +211 -0
  365. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +194 -0
  366. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +211 -0
  367. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +211 -0
  368. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +210 -0
  369. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +214 -0
  370. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +265 -0
  371. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +65 -0
  372. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
  373. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
  374. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
  375. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +212 -0
  376. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +210 -0
  377. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  378. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +95 -0
  379. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +209 -0
  380. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +193 -0
  381. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +265 -0
  382. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +261 -0
  383. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +261 -0
  384. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +265 -0
  385. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +265 -0
  386. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +265 -0
  387. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +265 -0
  388. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +8 -0
  389. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +211 -0
  390. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +308 -0
  391. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/__init__.py +0 -0
  392. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +1258 -0
  393. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +93 -0
  394. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  395. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +35 -0
  396. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +9 -0
  397. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +455 -0
  398. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +403 -0
  399. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +403 -0
  400. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +82 -0
  401. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +411 -0
  402. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +403 -0
  403. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +315 -0
  404. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +313 -0
  405. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +313 -0
  406. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +403 -0
  407. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.py +187 -0
  408. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +5 -0
  409. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +5 -0
  410. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +12 -0
  411. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +12 -0
  412. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +12 -0
  413. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +12 -0
  414. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +12 -0
  415. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +12 -0
  416. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +12 -0
  417. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +12 -0
  418. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.py +59 -0
  419. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +93 -0
  420. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +9 -0
  421. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +75 -0
  422. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +83 -0
  423. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +83 -0
  424. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +83 -0
  425. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +55 -0
  426. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +13 -0
  427. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +428 -0
  428. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +462 -0
  429. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +238 -0
  430. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +240 -0
  431. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +238 -0
  432. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +95 -0
  433. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  434. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +36 -0
  435. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  436. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  437. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  438. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  439. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  440. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +92 -0
  441. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  442. data/vendor/depot_tools/recipes/recipe_modules/gerrit/__init__.py +8 -0
  443. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +178 -0
  444. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +284 -0
  445. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +73 -0
  446. data/vendor/depot_tools/recipes/recipe_modules/gerrit/test_api.py +53 -0
  447. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +11 -0
  448. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +405 -0
  449. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +217 -0
  450. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +217 -0
  451. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +219 -0
  452. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +216 -0
  453. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +217 -0
  454. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +218 -0
  455. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +218 -0
  456. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +164 -0
  457. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +220 -0
  458. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +239 -0
  459. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +290 -0
  460. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +220 -0
  461. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +222 -0
  462. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +111 -0
  463. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +218 -0
  464. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +265 -0
  465. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +217 -0
  466. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +221 -0
  467. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +219 -0
  468. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +218 -0
  469. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +170 -0
  470. data/vendor/depot_tools/recipes/recipe_modules/git/resources/git_setup.py +52 -0
  471. data/vendor/depot_tools/recipes/recipe_modules/git/test_api.py +18 -0
  472. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +5 -0
  473. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +50 -0
  474. data/vendor/depot_tools/recipes/recipe_modules/git_cl/config.py +22 -0
  475. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +105 -0
  476. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +47 -0
  477. data/vendor/depot_tools/recipes/recipe_modules/gitiles/OWNERS +2 -0
  478. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +12 -0
  479. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +257 -0
  480. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +596 -0
  481. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +93 -0
  482. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +251 -0
  483. data/vendor/depot_tools/recipes/recipe_modules/gitiles/test_api.py +95 -0
  484. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +5 -0
  485. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  486. data/vendor/depot_tools/recipes/recipe_modules/gsutil/__init__.py +4 -0
  487. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +222 -0
  488. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +247 -0
  489. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +92 -0
  490. data/vendor/depot_tools/recipes/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
  491. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +36 -0
  492. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +140 -0
  493. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  494. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  495. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  496. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +21 -0
  497. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +83 -0
  498. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +21 -0
  499. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +42 -0
  500. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +27 -0
  501. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +251 -0
  502. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +27 -0
  503. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +19 -0
  504. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  505. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  506. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  507. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  508. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +18 -0
  509. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +264 -0
  510. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +57 -0
  511. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +190 -0
  512. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +190 -0
  513. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +21 -0
  514. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +22 -0
  515. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +95 -0
  516. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  517. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  518. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  519. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  520. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  521. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  522. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  523. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +21 -0
  524. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +21 -0
  525. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +108 -0
  526. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +21 -0
  527. data/vendor/depot_tools/recipes/recipes.py +249 -0
  528. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +175 -0
  529. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +56 -0
  530. data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +13 -0
  531. data/vendor/depot_tools/repo +1194 -0
  532. data/vendor/depot_tools/roll-dep +21 -0
  533. data/vendor/depot_tools/roll-dep.bat +21 -0
  534. data/vendor/depot_tools/roll_dep.py +282 -0
  535. data/vendor/depot_tools/scm.py +415 -0
  536. data/vendor/depot_tools/setup_color.py +130 -0
  537. data/vendor/depot_tools/split_cl.py +263 -0
  538. data/vendor/depot_tools/subcommand.py +261 -0
  539. data/vendor/depot_tools/subprocess2.py +258 -0
  540. data/vendor/depot_tools/third_party/__init__.py +5 -0
  541. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +27 -0
  542. data/vendor/depot_tools/third_party/colorama/README.chromium +12 -0
  543. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  544. data/vendor/depot_tools/third_party/colorama/__init__.py +6 -0
  545. data/vendor/depot_tools/third_party/colorama/ansi.py +102 -0
  546. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +257 -0
  547. data/vendor/depot_tools/third_party/colorama/initialise.py +80 -0
  548. data/vendor/depot_tools/third_party/colorama/win32.py +152 -0
  549. data/vendor/depot_tools/third_party/colorama/winterm.py +169 -0
  550. data/vendor/depot_tools/third_party/coverage/AUTHORS.txt +43 -0
  551. data/vendor/depot_tools/third_party/coverage/PKG-INFO +41 -0
  552. data/vendor/depot_tools/third_party/coverage/README.chromium +13 -0
  553. data/vendor/depot_tools/third_party/coverage/__init__.py +120 -0
  554. data/vendor/depot_tools/third_party/coverage/__main__.py +4 -0
  555. data/vendor/depot_tools/third_party/coverage/annotate.py +101 -0
  556. data/vendor/depot_tools/third_party/coverage/backward.py +184 -0
  557. data/vendor/depot_tools/third_party/coverage/bytecode.py +75 -0
  558. data/vendor/depot_tools/third_party/coverage/cmdline.py +740 -0
  559. data/vendor/depot_tools/third_party/coverage/codeunit.py +145 -0
  560. data/vendor/depot_tools/third_party/coverage/collector.py +353 -0
  561. data/vendor/depot_tools/third_party/coverage/config.py +213 -0
  562. data/vendor/depot_tools/third_party/coverage/control.py +776 -0
  563. data/vendor/depot_tools/third_party/coverage/data.py +278 -0
  564. data/vendor/depot_tools/third_party/coverage/debug.py +54 -0
  565. data/vendor/depot_tools/third_party/coverage/execfile.py +171 -0
  566. data/vendor/depot_tools/third_party/coverage/files.py +309 -0
  567. data/vendor/depot_tools/third_party/coverage/fullcoverage/encodings.py +57 -0
  568. data/vendor/depot_tools/third_party/coverage/html.py +387 -0
  569. data/vendor/depot_tools/third_party/coverage/htmlfiles/coverage_html.js +376 -0
  570. data/vendor/depot_tools/third_party/coverage/htmlfiles/index.html +104 -0
  571. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery-1.4.3.min.js +166 -0
  572. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.hotkeys.js +99 -0
  573. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.isonscreen.js +53 -0
  574. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.min.js +166 -0
  575. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.tablesorter.min.js +2 -0
  576. data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_closed.png +0 -0
  577. data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_open.png +0 -0
  578. data/vendor/depot_tools/third_party/coverage/htmlfiles/pyfile.html +90 -0
  579. data/vendor/depot_tools/third_party/coverage/htmlfiles/style.css +300 -0
  580. data/vendor/depot_tools/third_party/coverage/misc.py +163 -0
  581. data/vendor/depot_tools/third_party/coverage/parser.py +666 -0
  582. data/vendor/depot_tools/third_party/coverage/phystokens.py +208 -0
  583. data/vendor/depot_tools/third_party/coverage/report.py +92 -0
  584. data/vendor/depot_tools/third_party/coverage/results.py +286 -0
  585. data/vendor/depot_tools/third_party/coverage/summary.py +86 -0
  586. data/vendor/depot_tools/third_party/coverage/templite.py +166 -0
  587. data/vendor/depot_tools/third_party/coverage/version.py +9 -0
  588. data/vendor/depot_tools/third_party/coverage/xmlreport.py +155 -0
  589. data/vendor/depot_tools/third_party/httplib2/LICENSE +1339 -0
  590. data/vendor/depot_tools/third_party/httplib2/README.chromium +15 -0
  591. data/vendor/depot_tools/third_party/httplib2/__init__.py +1780 -0
  592. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +2196 -0
  593. data/vendor/depot_tools/third_party/httplib2/iri2uri.py +110 -0
  594. data/vendor/depot_tools/third_party/httplib2/socks.py +448 -0
  595. data/vendor/depot_tools/third_party/repo/COPYING +202 -0
  596. data/vendor/depot_tools/third_party/repo/README.chromium +4 -0
  597. data/vendor/depot_tools/third_party/repo/__init__.py +0 -0
  598. data/vendor/depot_tools/third_party/repo/progress.py +117 -0
  599. data/vendor/depot_tools/third_party/retry_decorator/LICENSE.google +30 -0
  600. data/vendor/depot_tools/third_party/retry_decorator/__init__.py +0 -0
  601. data/vendor/depot_tools/third_party/retry_decorator/decorators.py +45 -0
  602. data/vendor/depot_tools/third_party/schema/.editorconfig +15 -0
  603. data/vendor/depot_tools/third_party/schema/.gitignore +174 -0
  604. data/vendor/depot_tools/third_party/schema/.travis.yml +37 -0
  605. data/vendor/depot_tools/third_party/schema/LICENSE-MIT +19 -0
  606. data/vendor/depot_tools/third_party/schema/MANIFEST.in +1 -0
  607. data/vendor/depot_tools/third_party/schema/README.chromium +12 -0
  608. data/vendor/depot_tools/third_party/schema/README.rst +382 -0
  609. data/vendor/depot_tools/third_party/schema/__init__.py +1 -0
  610. data/vendor/depot_tools/third_party/schema/schema.py +338 -0
  611. data/vendor/depot_tools/third_party/schema/setup.cfg +5 -0
  612. data/vendor/depot_tools/third_party/schema/setup.py +30 -0
  613. data/vendor/depot_tools/third_party/schema/test_schema.py +556 -0
  614. data/vendor/depot_tools/third_party/schema/tox.ini +33 -0
  615. data/vendor/depot_tools/third_party/six/LICENSE.txt +18 -0
  616. data/vendor/depot_tools/third_party/six/README.chromium +10 -0
  617. data/vendor/depot_tools/third_party/six/__init__.py +762 -0
  618. data/vendor/depot_tools/update_depot_tools +138 -0
  619. data/vendor/depot_tools/update_depot_tools.bat +65 -0
  620. data/vendor/depot_tools/update_depot_tools_toggle.py +38 -0
  621. data/vendor/depot_tools/upload_metrics.py +26 -0
  622. data/vendor/depot_tools/upload_to_google_storage.py +306 -0
  623. data/vendor/depot_tools/vpython +42 -0
  624. data/vendor/depot_tools/vpython.bat +7 -0
  625. data/vendor/depot_tools/vpython3 +55 -0
  626. data/vendor/depot_tools/vpython3.bat +12 -0
  627. data/vendor/depot_tools/watchlists.py +141 -0
  628. data/vendor/depot_tools/weekly +54 -0
  629. data/vendor/depot_tools/win32imports.py +61 -0
  630. data/vendor/depot_tools/win_toolchain/OWNERS +2 -0
  631. data/vendor/depot_tools/win_toolchain/README.md +74 -0
  632. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +599 -0
  633. data/vendor/depot_tools/win_toolchain/package_from_installed.py +524 -0
  634. data/vendor/depot_tools/wtf +81 -0
  635. data/vendor/depot_tools/yapf +21 -0
  636. data/vendor/depot_tools/yapf.bat +12 -0
  637. data/vendor/depot_tools/zsh-goodies/README +6 -0
  638. data/vendor/depot_tools/zsh-goodies/_gclient +14 -0
  639. metadata +729 -0
@@ -0,0 +1,213 @@
1
+ """Config file for coverage.py"""
2
+
3
+ import os, re, sys
4
+ from coverage.backward import string_class, iitems
5
+
6
+ # In py3, # ConfigParser was renamed to the more-standard configparser
7
+ try:
8
+ import configparser # pylint: disable=F0401
9
+ except ImportError:
10
+ import ConfigParser as configparser
11
+
12
+
13
+ class HandyConfigParser(configparser.RawConfigParser):
14
+ """Our specialization of ConfigParser."""
15
+
16
+ def read(self, filename):
17
+ """Read a filename as UTF-8 configuration data."""
18
+ kwargs = {}
19
+ if sys.version_info >= (3, 2):
20
+ kwargs['encoding'] = "utf-8"
21
+ return configparser.RawConfigParser.read(self, filename, **kwargs)
22
+
23
+ def get(self, *args, **kwargs):
24
+ v = configparser.RawConfigParser.get(self, *args, **kwargs)
25
+ def dollar_replace(m):
26
+ """Called for each $replacement."""
27
+ # Only one of the groups will have matched, just get its text.
28
+ word = [w for w in m.groups() if w is not None][0]
29
+ if word == "$":
30
+ return "$"
31
+ else:
32
+ return os.environ.get(word, '')
33
+
34
+ dollar_pattern = r"""(?x) # Use extended regex syntax
35
+ \$(?: # A dollar sign, then
36
+ (?P<v1>\w+) | # a plain word,
37
+ {(?P<v2>\w+)} | # or a {-wrapped word,
38
+ (?P<char>[$]) # or a dollar sign.
39
+ )
40
+ """
41
+ v = re.sub(dollar_pattern, dollar_replace, v)
42
+ return v
43
+
44
+ def getlist(self, section, option):
45
+ """Read a list of strings.
46
+
47
+ The value of `section` and `option` is treated as a comma- and newline-
48
+ separated list of strings. Each value is stripped of whitespace.
49
+
50
+ Returns the list of strings.
51
+
52
+ """
53
+ value_list = self.get(section, option)
54
+ values = []
55
+ for value_line in value_list.split('\n'):
56
+ for value in value_line.split(','):
57
+ value = value.strip()
58
+ if value:
59
+ values.append(value)
60
+ return values
61
+
62
+ def getlinelist(self, section, option):
63
+ """Read a list of full-line strings.
64
+
65
+ The value of `section` and `option` is treated as a newline-separated
66
+ list of strings. Each value is stripped of whitespace.
67
+
68
+ Returns the list of strings.
69
+
70
+ """
71
+ value_list = self.get(section, option)
72
+ return list(filter(None, value_list.split('\n')))
73
+
74
+
75
+ # The default line exclusion regexes
76
+ DEFAULT_EXCLUDE = [
77
+ '(?i)# *pragma[: ]*no *cover',
78
+ ]
79
+
80
+ # The default partial branch regexes, to be modified by the user.
81
+ DEFAULT_PARTIAL = [
82
+ '(?i)# *pragma[: ]*no *branch',
83
+ ]
84
+
85
+ # The default partial branch regexes, based on Python semantics.
86
+ # These are any Python branching constructs that can't actually execute all
87
+ # their branches.
88
+ DEFAULT_PARTIAL_ALWAYS = [
89
+ 'while (True|1|False|0):',
90
+ 'if (True|1|False|0):',
91
+ ]
92
+
93
+
94
+ class CoverageConfig(object):
95
+ """Coverage.py configuration.
96
+
97
+ The attributes of this class are the various settings that control the
98
+ operation of coverage.py.
99
+
100
+ """
101
+ def __init__(self):
102
+ """Initialize the configuration attributes to their defaults."""
103
+ # Metadata about the config.
104
+ self.attempted_config_files = []
105
+ self.config_files = []
106
+
107
+ # Defaults for [run]
108
+ self.branch = False
109
+ self.cover_pylib = False
110
+ self.data_file = ".coverage"
111
+ self.parallel = False
112
+ self.timid = False
113
+ self.source = None
114
+ self.debug = []
115
+
116
+ # Defaults for [report]
117
+ self.exclude_list = DEFAULT_EXCLUDE[:]
118
+ self.ignore_errors = False
119
+ self.include = None
120
+ self.omit = None
121
+ self.partial_list = DEFAULT_PARTIAL[:]
122
+ self.partial_always_list = DEFAULT_PARTIAL_ALWAYS[:]
123
+ self.precision = 0
124
+ self.show_missing = False
125
+
126
+ # Defaults for [html]
127
+ self.html_dir = "htmlcov"
128
+ self.extra_css = None
129
+ self.html_title = "Coverage report"
130
+
131
+ # Defaults for [xml]
132
+ self.xml_output = "coverage.xml"
133
+
134
+ # Defaults for [paths]
135
+ self.paths = {}
136
+
137
+ def from_environment(self, env_var):
138
+ """Read configuration from the `env_var` environment variable."""
139
+ # Timidity: for nose users, read an environment variable. This is a
140
+ # cheap hack, since the rest of the command line arguments aren't
141
+ # recognized, but it solves some users' problems.
142
+ env = os.environ.get(env_var, '')
143
+ if env:
144
+ self.timid = ('--timid' in env)
145
+
146
+ MUST_BE_LIST = ["omit", "include", "debug"]
147
+
148
+ def from_args(self, **kwargs):
149
+ """Read config values from `kwargs`."""
150
+ for k, v in iitems(kwargs):
151
+ if v is not None:
152
+ if k in self.MUST_BE_LIST and isinstance(v, string_class):
153
+ v = [v]
154
+ setattr(self, k, v)
155
+
156
+ def from_file(self, filename):
157
+ """Read configuration from a .rc file.
158
+
159
+ `filename` is a file name to read.
160
+
161
+ """
162
+ self.attempted_config_files.append(filename)
163
+
164
+ cp = HandyConfigParser()
165
+ files_read = cp.read(filename)
166
+ if files_read is not None: # return value changed in 2.4
167
+ self.config_files.extend(files_read)
168
+
169
+ for option_spec in self.CONFIG_FILE_OPTIONS:
170
+ self.set_attr_from_config_option(cp, *option_spec)
171
+
172
+ # [paths] is special
173
+ if cp.has_section('paths'):
174
+ for option in cp.options('paths'):
175
+ self.paths[option] = cp.getlist('paths', option)
176
+
177
+ CONFIG_FILE_OPTIONS = [
178
+ # [run]
179
+ ('branch', 'run:branch', 'boolean'),
180
+ ('cover_pylib', 'run:cover_pylib', 'boolean'),
181
+ ('data_file', 'run:data_file'),
182
+ ('debug', 'run:debug', 'list'),
183
+ ('include', 'run:include', 'list'),
184
+ ('omit', 'run:omit', 'list'),
185
+ ('parallel', 'run:parallel', 'boolean'),
186
+ ('source', 'run:source', 'list'),
187
+ ('timid', 'run:timid', 'boolean'),
188
+
189
+ # [report]
190
+ ('exclude_list', 'report:exclude_lines', 'linelist'),
191
+ ('ignore_errors', 'report:ignore_errors', 'boolean'),
192
+ ('include', 'report:include', 'list'),
193
+ ('omit', 'report:omit', 'list'),
194
+ ('partial_list', 'report:partial_branches', 'linelist'),
195
+ ('partial_always_list', 'report:partial_branches_always', 'linelist'),
196
+ ('precision', 'report:precision', 'int'),
197
+ ('show_missing', 'report:show_missing', 'boolean'),
198
+
199
+ # [html]
200
+ ('html_dir', 'html:directory'),
201
+ ('extra_css', 'html:extra_css'),
202
+ ('html_title', 'html:title'),
203
+
204
+ # [xml]
205
+ ('xml_output', 'xml:output'),
206
+ ]
207
+
208
+ def set_attr_from_config_option(self, cp, attr, where, type_=''):
209
+ """Set an attribute on self if it exists in the ConfigParser."""
210
+ section, option = where.split(":")
211
+ if cp.has_option(section, option):
212
+ method = getattr(cp, 'get'+type_)
213
+ setattr(self, attr, method(section, option))
@@ -0,0 +1,776 @@
1
+ """Core control stuff for Coverage."""
2
+
3
+ import atexit, os, random, socket, sys
4
+
5
+ from coverage.annotate import AnnotateReporter
6
+ from coverage.backward import string_class, iitems, sorted # pylint: disable=W0622
7
+ from coverage.codeunit import code_unit_factory, CodeUnit
8
+ from coverage.collector import Collector
9
+ from coverage.config import CoverageConfig
10
+ from coverage.data import CoverageData
11
+ from coverage.debug import DebugControl
12
+ from coverage.files import FileLocator, TreeMatcher, FnmatchMatcher
13
+ from coverage.files import PathAliases, find_python_files, prep_patterns
14
+ from coverage.html import HtmlReporter
15
+ from coverage.misc import CoverageException, bool_or_none, join_regex
16
+ from coverage.misc import file_be_gone
17
+ from coverage.results import Analysis, Numbers
18
+ from coverage.summary import SummaryReporter
19
+ from coverage.xmlreport import XmlReporter
20
+
21
+ # Pypy has some unusual stuff in the "stdlib". Consider those locations
22
+ # when deciding where the stdlib is.
23
+ try:
24
+ import _structseq # pylint: disable=F0401
25
+ except ImportError:
26
+ _structseq = None
27
+
28
+
29
+ class coverage(object):
30
+ """Programmatic access to coverage.py.
31
+
32
+ To use::
33
+
34
+ from coverage import coverage
35
+
36
+ cov = coverage()
37
+ cov.start()
38
+ #.. call your code ..
39
+ cov.stop()
40
+ cov.html_report(directory='covhtml')
41
+
42
+ """
43
+ def __init__(self, data_file=None, data_suffix=None, cover_pylib=None,
44
+ auto_data=False, timid=None, branch=None, config_file=True,
45
+ source=None, omit=None, include=None, debug=None,
46
+ debug_file=None):
47
+ """
48
+ `data_file` is the base name of the data file to use, defaulting to
49
+ ".coverage". `data_suffix` is appended (with a dot) to `data_file` to
50
+ create the final file name. If `data_suffix` is simply True, then a
51
+ suffix is created with the machine and process identity included.
52
+
53
+ `cover_pylib` is a boolean determining whether Python code installed
54
+ with the Python interpreter is measured. This includes the Python
55
+ standard library and any packages installed with the interpreter.
56
+
57
+ If `auto_data` is true, then any existing data file will be read when
58
+ coverage measurement starts, and data will be saved automatically when
59
+ measurement stops.
60
+
61
+ If `timid` is true, then a slower and simpler trace function will be
62
+ used. This is important for some environments where manipulation of
63
+ tracing functions breaks the faster trace function.
64
+
65
+ If `branch` is true, then branch coverage will be measured in addition
66
+ to the usual statement coverage.
67
+
68
+ `config_file` determines what config file to read. If it is a string,
69
+ it is the name of the config file to read. If it is True, then a
70
+ standard file is read (".coveragerc"). If it is False, then no file is
71
+ read.
72
+
73
+ `source` is a list of file paths or package names. Only code located
74
+ in the trees indicated by the file paths or package names will be
75
+ measured.
76
+
77
+ `include` and `omit` are lists of filename patterns. Files that match
78
+ `include` will be measured, files that match `omit` will not. Each
79
+ will also accept a single string argument.
80
+
81
+ `debug` is a list of strings indicating what debugging information is
82
+ desired. `debug_file` is the file to write debug messages to,
83
+ defaulting to stderr.
84
+
85
+ """
86
+ from coverage import __version__
87
+
88
+ # A record of all the warnings that have been issued.
89
+ self._warnings = []
90
+
91
+ # Build our configuration from a number of sources:
92
+ # 1: defaults:
93
+ self.config = CoverageConfig()
94
+
95
+ # 2: from the coveragerc file:
96
+ if config_file:
97
+ if config_file is True:
98
+ config_file = ".coveragerc"
99
+ try:
100
+ self.config.from_file(config_file)
101
+ except ValueError:
102
+ _, err, _ = sys.exc_info()
103
+ raise CoverageException(
104
+ "Couldn't read config file %s: %s" % (config_file, err)
105
+ )
106
+
107
+ # 3: from environment variables:
108
+ self.config.from_environment('COVERAGE_OPTIONS')
109
+ env_data_file = os.environ.get('COVERAGE_FILE')
110
+ if env_data_file:
111
+ self.config.data_file = env_data_file
112
+
113
+ # 4: from constructor arguments:
114
+ self.config.from_args(
115
+ data_file=data_file, cover_pylib=cover_pylib, timid=timid,
116
+ branch=branch, parallel=bool_or_none(data_suffix),
117
+ source=source, omit=omit, include=include, debug=debug,
118
+ )
119
+
120
+ # Create and configure the debugging controller.
121
+ self.debug = DebugControl(self.config.debug, debug_file or sys.stderr)
122
+
123
+ self.auto_data = auto_data
124
+
125
+ # _exclude_re is a dict mapping exclusion list names to compiled
126
+ # regexes.
127
+ self._exclude_re = {}
128
+ self._exclude_regex_stale()
129
+
130
+ self.file_locator = FileLocator()
131
+
132
+ # The source argument can be directories or package names.
133
+ self.source = []
134
+ self.source_pkgs = []
135
+ for src in self.config.source or []:
136
+ if os.path.exists(src):
137
+ self.source.append(self.file_locator.canonical_filename(src))
138
+ else:
139
+ self.source_pkgs.append(src)
140
+
141
+ self.omit = prep_patterns(self.config.omit)
142
+ self.include = prep_patterns(self.config.include)
143
+
144
+ self.collector = Collector(
145
+ self._should_trace, timid=self.config.timid,
146
+ branch=self.config.branch, warn=self._warn
147
+ )
148
+
149
+ # Suffixes are a bit tricky. We want to use the data suffix only when
150
+ # collecting data, not when combining data. So we save it as
151
+ # `self.run_suffix` now, and promote it to `self.data_suffix` if we
152
+ # find that we are collecting data later.
153
+ if data_suffix or self.config.parallel:
154
+ if not isinstance(data_suffix, string_class):
155
+ # if data_suffix=True, use .machinename.pid.random
156
+ data_suffix = True
157
+ else:
158
+ data_suffix = None
159
+ self.data_suffix = None
160
+ self.run_suffix = data_suffix
161
+
162
+ # Create the data file. We do this at construction time so that the
163
+ # data file will be written into the directory where the process
164
+ # started rather than wherever the process eventually chdir'd to.
165
+ self.data = CoverageData(
166
+ basename=self.config.data_file,
167
+ collector="coverage v%s" % __version__,
168
+ debug=self.debug,
169
+ )
170
+
171
+ # The dirs for files considered "installed with the interpreter".
172
+ self.pylib_dirs = []
173
+ if not self.config.cover_pylib:
174
+ # Look at where some standard modules are located. That's the
175
+ # indication for "installed with the interpreter". In some
176
+ # environments (virtualenv, for example), these modules may be
177
+ # spread across a few locations. Look at all the candidate modules
178
+ # we've imported, and take all the different ones.
179
+ for m in (atexit, os, random, socket, _structseq):
180
+ if m is not None and hasattr(m, "__file__"):
181
+ m_dir = self._canonical_dir(m)
182
+ if m_dir not in self.pylib_dirs:
183
+ self.pylib_dirs.append(m_dir)
184
+
185
+ # To avoid tracing the coverage code itself, we skip anything located
186
+ # where we are.
187
+ self.cover_dir = self._canonical_dir(__file__)
188
+
189
+ # The matchers for _should_trace.
190
+ self.source_match = None
191
+ self.pylib_match = self.cover_match = None
192
+ self.include_match = self.omit_match = None
193
+
194
+ # Set the reporting precision.
195
+ Numbers.set_precision(self.config.precision)
196
+
197
+ # Is it ok for no data to be collected?
198
+ self._warn_no_data = True
199
+ self._warn_unimported_source = True
200
+
201
+ # State machine variables:
202
+ # Have we started collecting and not stopped it?
203
+ self._started = False
204
+ # Have we measured some data and not harvested it?
205
+ self._measured = False
206
+
207
+ atexit.register(self._atexit)
208
+
209
+ def _canonical_dir(self, morf):
210
+ """Return the canonical directory of the module or file `morf`."""
211
+ return os.path.split(CodeUnit(morf, self.file_locator).filename)[0]
212
+
213
+ def _source_for_file(self, filename):
214
+ """Return the source file for `filename`."""
215
+ if not filename.endswith(".py"):
216
+ if filename[-4:-1] == ".py":
217
+ filename = filename[:-1]
218
+ elif filename.endswith("$py.class"): # jython
219
+ filename = filename[:-9] + ".py"
220
+ return filename
221
+
222
+ def _should_trace_with_reason(self, filename, frame):
223
+ """Decide whether to trace execution in `filename`, with a reason.
224
+
225
+ This function is called from the trace function. As each new file name
226
+ is encountered, this function determines whether it is traced or not.
227
+
228
+ Returns a pair of values: the first indicates whether the file should
229
+ be traced: it's a canonicalized filename if it should be traced, None
230
+ if it should not. The second value is a string, the resason for the
231
+ decision.
232
+
233
+ """
234
+ if not filename:
235
+ # Empty string is pretty useless
236
+ return None, "empty string isn't a filename"
237
+
238
+ if filename.startswith('<'):
239
+ # Lots of non-file execution is represented with artificial
240
+ # filenames like "<string>", "<doctest readme.txt[0]>", or
241
+ # "<exec_function>". Don't ever trace these executions, since we
242
+ # can't do anything with the data later anyway.
243
+ return None, "not a real filename"
244
+
245
+ self._check_for_packages()
246
+
247
+ # Compiled Python files have two filenames: frame.f_code.co_filename is
248
+ # the filename at the time the .pyc was compiled. The second name is
249
+ # __file__, which is where the .pyc was actually loaded from. Since
250
+ # .pyc files can be moved after compilation (for example, by being
251
+ # installed), we look for __file__ in the frame and prefer it to the
252
+ # co_filename value.
253
+ dunder_file = frame.f_globals.get('__file__')
254
+ if dunder_file:
255
+ filename = self._source_for_file(dunder_file)
256
+
257
+ # Jython reports the .class file to the tracer, use the source file.
258
+ if filename.endswith("$py.class"):
259
+ filename = filename[:-9] + ".py"
260
+
261
+ canonical = self.file_locator.canonical_filename(filename)
262
+
263
+ # If the user specified source or include, then that's authoritative
264
+ # about the outer bound of what to measure and we don't have to apply
265
+ # any canned exclusions. If they didn't, then we have to exclude the
266
+ # stdlib and coverage.py directories.
267
+ if self.source_match:
268
+ if not self.source_match.match(canonical):
269
+ return None, "falls outside the --source trees"
270
+ elif self.include_match:
271
+ if not self.include_match.match(canonical):
272
+ return None, "falls outside the --include trees"
273
+ else:
274
+ # If we aren't supposed to trace installed code, then check if this
275
+ # is near the Python standard library and skip it if so.
276
+ if self.pylib_match and self.pylib_match.match(canonical):
277
+ return None, "is in the stdlib"
278
+
279
+ # We exclude the coverage code itself, since a little of it will be
280
+ # measured otherwise.
281
+ if self.cover_match and self.cover_match.match(canonical):
282
+ return None, "is part of coverage.py"
283
+
284
+ # Check the file against the omit pattern.
285
+ if self.omit_match and self.omit_match.match(canonical):
286
+ return None, "is inside an --omit pattern"
287
+
288
+ return canonical, "because we love you"
289
+
290
+ def _should_trace(self, filename, frame):
291
+ """Decide whether to trace execution in `filename`.
292
+
293
+ Calls `_should_trace_with_reason`, and returns just the decision.
294
+
295
+ """
296
+ canonical, reason = self._should_trace_with_reason(filename, frame)
297
+ if self.debug.should('trace'):
298
+ if not canonical:
299
+ msg = "Not tracing %r: %s" % (filename, reason)
300
+ else:
301
+ msg = "Tracing %r" % (filename,)
302
+ self.debug.write(msg)
303
+ return canonical
304
+
305
+ def _warn(self, msg):
306
+ """Use `msg` as a warning."""
307
+ self._warnings.append(msg)
308
+ sys.stderr.write("Coverage.py warning: %s\n" % msg)
309
+
310
+ def _check_for_packages(self):
311
+ """Update the source_match matcher with latest imported packages."""
312
+ # Our self.source_pkgs attribute is a list of package names we want to
313
+ # measure. Each time through here, we see if we've imported any of
314
+ # them yet. If so, we add its file to source_match, and we don't have
315
+ # to look for that package any more.
316
+ if self.source_pkgs:
317
+ found = []
318
+ for pkg in self.source_pkgs:
319
+ try:
320
+ mod = sys.modules[pkg]
321
+ except KeyError:
322
+ continue
323
+
324
+ found.append(pkg)
325
+
326
+ try:
327
+ pkg_file = mod.__file__
328
+ except AttributeError:
329
+ pkg_file = None
330
+ else:
331
+ d, f = os.path.split(pkg_file)
332
+ if f.startswith('__init__'):
333
+ # This is actually a package, return the directory.
334
+ pkg_file = d
335
+ else:
336
+ pkg_file = self._source_for_file(pkg_file)
337
+ pkg_file = self.file_locator.canonical_filename(pkg_file)
338
+ if not os.path.exists(pkg_file):
339
+ pkg_file = None
340
+
341
+ if pkg_file:
342
+ self.source.append(pkg_file)
343
+ self.source_match.add(pkg_file)
344
+ else:
345
+ self._warn("Module %s has no Python source." % pkg)
346
+
347
+ for pkg in found:
348
+ self.source_pkgs.remove(pkg)
349
+
350
+ def use_cache(self, usecache):
351
+ """Control the use of a data file (incorrectly called a cache).
352
+
353
+ `usecache` is true or false, whether to read and write data on disk.
354
+
355
+ """
356
+ self.data.usefile(usecache)
357
+
358
+ def load(self):
359
+ """Load previously-collected coverage data from the data file."""
360
+ self.collector.reset()
361
+ self.data.read()
362
+
363
+ def start(self):
364
+ """Start measuring code coverage.
365
+
366
+ Coverage measurement actually occurs in functions called after `start`
367
+ is invoked. Statements in the same scope as `start` won't be measured.
368
+
369
+ Once you invoke `start`, you must also call `stop` eventually, or your
370
+ process might not shut down cleanly.
371
+
372
+ """
373
+ if self.run_suffix:
374
+ # Calling start() means we're running code, so use the run_suffix
375
+ # as the data_suffix when we eventually save the data.
376
+ self.data_suffix = self.run_suffix
377
+ if self.auto_data:
378
+ self.load()
379
+
380
+ # Create the matchers we need for _should_trace
381
+ if self.source or self.source_pkgs:
382
+ self.source_match = TreeMatcher(self.source)
383
+ else:
384
+ if self.cover_dir:
385
+ self.cover_match = TreeMatcher([self.cover_dir])
386
+ if self.pylib_dirs:
387
+ self.pylib_match = TreeMatcher(self.pylib_dirs)
388
+ if self.include:
389
+ self.include_match = FnmatchMatcher(self.include)
390
+ if self.omit:
391
+ self.omit_match = FnmatchMatcher(self.omit)
392
+
393
+ # The user may want to debug things, show info if desired.
394
+ if self.debug.should('config'):
395
+ self.debug.write("Configuration values:")
396
+ config_info = sorted(self.config.__dict__.items())
397
+ self.debug.write_formatted_info(config_info)
398
+
399
+ if self.debug.should('sys'):
400
+ self.debug.write("Debugging info:")
401
+ self.debug.write_formatted_info(self.sysinfo())
402
+
403
+ self.collector.start()
404
+ self._started = True
405
+ self._measured = True
406
+
407
+ def stop(self):
408
+ """Stop measuring code coverage."""
409
+ self._started = False
410
+ self.collector.stop()
411
+
412
+ def _atexit(self):
413
+ """Clean up on process shutdown."""
414
+ if self._started:
415
+ self.stop()
416
+ if self.auto_data:
417
+ self.save()
418
+
419
+ def erase(self):
420
+ """Erase previously-collected coverage data.
421
+
422
+ This removes the in-memory data collected in this session as well as
423
+ discarding the data file.
424
+
425
+ """
426
+ self.collector.reset()
427
+ self.data.erase()
428
+
429
+ def clear_exclude(self, which='exclude'):
430
+ """Clear the exclude list."""
431
+ setattr(self.config, which + "_list", [])
432
+ self._exclude_regex_stale()
433
+
434
+ def exclude(self, regex, which='exclude'):
435
+ """Exclude source lines from execution consideration.
436
+
437
+ A number of lists of regular expressions are maintained. Each list
438
+ selects lines that are treated differently during reporting.
439
+
440
+ `which` determines which list is modified. The "exclude" list selects
441
+ lines that are not considered executable at all. The "partial" list
442
+ indicates lines with branches that are not taken.
443
+
444
+ `regex` is a regular expression. The regex is added to the specified
445
+ list. If any of the regexes in the list is found in a line, the line
446
+ is marked for special treatment during reporting.
447
+
448
+ """
449
+ excl_list = getattr(self.config, which + "_list")
450
+ excl_list.append(regex)
451
+ self._exclude_regex_stale()
452
+
453
+ def _exclude_regex_stale(self):
454
+ """Drop all the compiled exclusion regexes, a list was modified."""
455
+ self._exclude_re.clear()
456
+
457
+ def _exclude_regex(self, which):
458
+ """Return a compiled regex for the given exclusion list."""
459
+ if which not in self._exclude_re:
460
+ excl_list = getattr(self.config, which + "_list")
461
+ self._exclude_re[which] = join_regex(excl_list)
462
+ return self._exclude_re[which]
463
+
464
+ def get_exclude_list(self, which='exclude'):
465
+ """Return a list of excluded regex patterns.
466
+
467
+ `which` indicates which list is desired. See `exclude` for the lists
468
+ that are available, and their meaning.
469
+
470
+ """
471
+ return getattr(self.config, which + "_list")
472
+
473
+ def save(self):
474
+ """Save the collected coverage data to the data file."""
475
+ data_suffix = self.data_suffix
476
+ if data_suffix is True:
477
+ # If data_suffix was a simple true value, then make a suffix with
478
+ # plenty of distinguishing information. We do this here in
479
+ # `save()` at the last minute so that the pid will be correct even
480
+ # if the process forks.
481
+ extra = ""
482
+ if _TEST_NAME_FILE:
483
+ f = open(_TEST_NAME_FILE)
484
+ test_name = f.read()
485
+ f.close()
486
+ extra = "." + test_name
487
+ data_suffix = "%s%s.%s.%06d" % (
488
+ socket.gethostname(), extra, os.getpid(),
489
+ random.randint(0, 999999)
490
+ )
491
+
492
+ self._harvest_data()
493
+ self.data.write(suffix=data_suffix)
494
+
495
+ def combine(self):
496
+ """Combine together a number of similarly-named coverage data files.
497
+
498
+ All coverage data files whose name starts with `data_file` (from the
499
+ coverage() constructor) will be read, and combined together into the
500
+ current measurements.
501
+
502
+ """
503
+ aliases = None
504
+ if self.config.paths:
505
+ aliases = PathAliases(self.file_locator)
506
+ for paths in self.config.paths.values():
507
+ result = paths[0]
508
+ for pattern in paths[1:]:
509
+ aliases.add(pattern, result)
510
+ self.data.combine_parallel_data(aliases=aliases)
511
+
512
+ def _harvest_data(self):
513
+ """Get the collected data and reset the collector.
514
+
515
+ Also warn about various problems collecting data.
516
+
517
+ """
518
+ if not self._measured:
519
+ return
520
+
521
+ self.data.add_line_data(self.collector.get_line_data())
522
+ self.data.add_arc_data(self.collector.get_arc_data())
523
+ self.collector.reset()
524
+
525
+ # If there are still entries in the source_pkgs list, then we never
526
+ # encountered those packages.
527
+ if self._warn_unimported_source:
528
+ for pkg in self.source_pkgs:
529
+ self._warn("Module %s was never imported." % pkg)
530
+
531
+ # Find out if we got any data.
532
+ summary = self.data.summary()
533
+ if not summary and self._warn_no_data:
534
+ self._warn("No data was collected.")
535
+
536
+ # Find files that were never executed at all.
537
+ for src in self.source:
538
+ for py_file in find_python_files(src):
539
+ py_file = self.file_locator.canonical_filename(py_file)
540
+
541
+ if self.omit_match and self.omit_match.match(py_file):
542
+ # Turns out this file was omitted, so don't pull it back
543
+ # in as unexecuted.
544
+ continue
545
+
546
+ self.data.touch_file(py_file)
547
+
548
+ self._measured = False
549
+
550
+ # Backward compatibility with version 1.
551
+ def analysis(self, morf):
552
+ """Like `analysis2` but doesn't return excluded line numbers."""
553
+ f, s, _, m, mf = self.analysis2(morf)
554
+ return f, s, m, mf
555
+
556
+ def analysis2(self, morf):
557
+ """Analyze a module.
558
+
559
+ `morf` is a module or a filename. It will be analyzed to determine
560
+ its coverage statistics. The return value is a 5-tuple:
561
+
562
+ * The filename for the module.
563
+ * A list of line numbers of executable statements.
564
+ * A list of line numbers of excluded statements.
565
+ * A list of line numbers of statements not run (missing from
566
+ execution).
567
+ * A readable formatted string of the missing line numbers.
568
+
569
+ The analysis uses the source file itself and the current measured
570
+ coverage data.
571
+
572
+ """
573
+ analysis = self._analyze(morf)
574
+ return (
575
+ analysis.filename, analysis.statements, analysis.excluded,
576
+ analysis.missing, analysis.missing_formatted()
577
+ )
578
+
579
+ def _analyze(self, it):
580
+ """Analyze a single morf or code unit.
581
+
582
+ Returns an `Analysis` object.
583
+
584
+ """
585
+ self._harvest_data()
586
+ if not isinstance(it, CodeUnit):
587
+ it = code_unit_factory(it, self.file_locator)[0]
588
+
589
+ return Analysis(self, it)
590
+
591
+ def report(self, morfs=None, show_missing=True, ignore_errors=None,
592
+ file=None, # pylint: disable=W0622
593
+ omit=None, include=None
594
+ ):
595
+ """Write a summary report to `file`.
596
+
597
+ Each module in `morfs` is listed, with counts of statements, executed
598
+ statements, missing statements, and a list of lines missed.
599
+
600
+ `include` is a list of filename patterns. Modules whose filenames
601
+ match those patterns will be included in the report. Modules matching
602
+ `omit` will not be included in the report.
603
+
604
+ Returns a float, the total percentage covered.
605
+
606
+ """
607
+ self._harvest_data()
608
+ self.config.from_args(
609
+ ignore_errors=ignore_errors, omit=omit, include=include,
610
+ show_missing=show_missing,
611
+ )
612
+ reporter = SummaryReporter(self, self.config)
613
+ return reporter.report(morfs, outfile=file)
614
+
615
+ def annotate(self, morfs=None, directory=None, ignore_errors=None,
616
+ omit=None, include=None):
617
+ """Annotate a list of modules.
618
+
619
+ Each module in `morfs` is annotated. The source is written to a new
620
+ file, named with a ",cover" suffix, with each line prefixed with a
621
+ marker to indicate the coverage of the line. Covered lines have ">",
622
+ excluded lines have "-", and missing lines have "!".
623
+
624
+ See `coverage.report()` for other arguments.
625
+
626
+ """
627
+ self._harvest_data()
628
+ self.config.from_args(
629
+ ignore_errors=ignore_errors, omit=omit, include=include
630
+ )
631
+ reporter = AnnotateReporter(self, self.config)
632
+ reporter.report(morfs, directory=directory)
633
+
634
+ def html_report(self, morfs=None, directory=None, ignore_errors=None,
635
+ omit=None, include=None, extra_css=None, title=None):
636
+ """Generate an HTML report.
637
+
638
+ The HTML is written to `directory`. The file "index.html" is the
639
+ overview starting point, with links to more detailed pages for
640
+ individual modules.
641
+
642
+ `extra_css` is a path to a file of other CSS to apply on the page.
643
+ It will be copied into the HTML directory.
644
+
645
+ `title` is a text string (not HTML) to use as the title of the HTML
646
+ report.
647
+
648
+ See `coverage.report()` for other arguments.
649
+
650
+ Returns a float, the total percentage covered.
651
+
652
+ """
653
+ self._harvest_data()
654
+ self.config.from_args(
655
+ ignore_errors=ignore_errors, omit=omit, include=include,
656
+ html_dir=directory, extra_css=extra_css, html_title=title,
657
+ )
658
+ reporter = HtmlReporter(self, self.config)
659
+ return reporter.report(morfs)
660
+
661
+ def xml_report(self, morfs=None, outfile=None, ignore_errors=None,
662
+ omit=None, include=None):
663
+ """Generate an XML report of coverage results.
664
+
665
+ The report is compatible with Cobertura reports.
666
+
667
+ Each module in `morfs` is included in the report. `outfile` is the
668
+ path to write the file to, "-" will write to stdout.
669
+
670
+ See `coverage.report()` for other arguments.
671
+
672
+ Returns a float, the total percentage covered.
673
+
674
+ """
675
+ self._harvest_data()
676
+ self.config.from_args(
677
+ ignore_errors=ignore_errors, omit=omit, include=include,
678
+ xml_output=outfile,
679
+ )
680
+ file_to_close = None
681
+ delete_file = False
682
+ if self.config.xml_output:
683
+ if self.config.xml_output == '-':
684
+ outfile = sys.stdout
685
+ else:
686
+ outfile = open(self.config.xml_output, "w")
687
+ file_to_close = outfile
688
+ try:
689
+ try:
690
+ reporter = XmlReporter(self, self.config)
691
+ return reporter.report(morfs, outfile=outfile)
692
+ except CoverageException:
693
+ delete_file = True
694
+ raise
695
+ finally:
696
+ if file_to_close:
697
+ file_to_close.close()
698
+ if delete_file:
699
+ file_be_gone(self.config.xml_output)
700
+
701
+ def sysinfo(self):
702
+ """Return a list of (key, value) pairs showing internal information."""
703
+
704
+ import coverage as covmod
705
+ import platform, re
706
+
707
+ try:
708
+ implementation = platform.python_implementation()
709
+ except AttributeError:
710
+ implementation = "unknown"
711
+
712
+ info = [
713
+ ('version', covmod.__version__),
714
+ ('coverage', covmod.__file__),
715
+ ('cover_dir', self.cover_dir),
716
+ ('pylib_dirs', self.pylib_dirs),
717
+ ('tracer', self.collector.tracer_name()),
718
+ ('config_files', self.config.attempted_config_files),
719
+ ('configs_read', self.config.config_files),
720
+ ('data_path', self.data.filename),
721
+ ('python', sys.version.replace('\n', '')),
722
+ ('platform', platform.platform()),
723
+ ('implementation', implementation),
724
+ ('executable', sys.executable),
725
+ ('cwd', os.getcwd()),
726
+ ('path', sys.path),
727
+ ('environment', sorted([
728
+ ("%s = %s" % (k, v)) for k, v in iitems(os.environ)
729
+ if re.search(r"^COV|^PY", k)
730
+ ])),
731
+ ('command_line', " ".join(getattr(sys, 'argv', ['???']))),
732
+ ]
733
+ if self.source_match:
734
+ info.append(('source_match', self.source_match.info()))
735
+ if self.include_match:
736
+ info.append(('include_match', self.include_match.info()))
737
+ if self.omit_match:
738
+ info.append(('omit_match', self.omit_match.info()))
739
+ if self.cover_match:
740
+ info.append(('cover_match', self.cover_match.info()))
741
+ if self.pylib_match:
742
+ info.append(('pylib_match', self.pylib_match.info()))
743
+
744
+ return info
745
+
746
+
747
+ def process_startup():
748
+ """Call this at Python startup to perhaps measure coverage.
749
+
750
+ If the environment variable COVERAGE_PROCESS_START is defined, coverage
751
+ measurement is started. The value of the variable is the config file
752
+ to use.
753
+
754
+ There are two ways to configure your Python installation to invoke this
755
+ function when Python starts:
756
+
757
+ #. Create or append to sitecustomize.py to add these lines::
758
+
759
+ import coverage
760
+ coverage.process_startup()
761
+
762
+ #. Create a .pth file in your Python installation containing::
763
+
764
+ import coverage; coverage.process_startup()
765
+
766
+ """
767
+ cps = os.environ.get("COVERAGE_PROCESS_START")
768
+ if cps:
769
+ cov = coverage(config_file=cps, auto_data=True)
770
+ cov.start()
771
+ cov._warn_no_data = False
772
+ cov._warn_unimported_source = False
773
+
774
+
775
+ # A hack for debugging testing in subprocesses.
776
+ _TEST_NAME_FILE = "" #"/tmp/covtest.txt"