tests/test-check-code.t
author Gregory Szorc <gregory.szorc@gmail.com>
Tue, 19 Jul 2016 21:09:58 -0700
branchstable
changeset 29619 53e80179bd6a
parent 29442 456609cbd840
child 30253 b032a7b676c6
permissions -rw-r--r--
sslutil: improve messaging around unsupported protocols (issue5303) There are various causes for the inability to negotiate common SSL/TLS protocol between client and server. Previously, we had a single, not very actionable warning message for all of them. As people encountered TLS 1.0 servers in real life, it was quickly obvious that the existing messaging was inadequate to help users rectify the situation. This patch makes the warning messages much more verbose in hopes of making them more actionable while simultaneously encouraging users and servers to adopt better security practices. This messaging flirts with the anti-pattern of "never blame the user" by signaling out poorly-configured servers. But if we're going to disallow TLS 1.0 by default, I think we need to say *something* or people are just going to blame Mercurial for not being able to connect. The messaging tries to exonerate Mercurial from being the at fault party by pointing out the server is the entity that doesn't support proper security (when appropriate, of course).

#require test-repo

  $ . "$TESTDIR/helpers-testrepo.sh"
  $ check_code="$TESTDIR"/../contrib/check-code.py
  $ cd "$TESTDIR"/..

New errors are not allowed. Warnings are strongly discouraged.
(The writing "no-che?k-code" is for not skipping this file when checking.)

  $ hg locate | sed 's-\\-/-g' |
  >   xargs "$check_code" --warnings --per-file=0 || false
  Skipping hgext/fsmonitor/pywatchman/__init__.py it has no-che?k-code (glob)
  Skipping hgext/fsmonitor/pywatchman/bser.c it has no-che?k-code (glob)
  Skipping hgext/fsmonitor/pywatchman/capabilities.py it has no-che?k-code (glob)
  Skipping hgext/fsmonitor/pywatchman/msc_stdint.h it has no-che?k-code (glob)
  Skipping hgext/fsmonitor/pywatchman/pybser.py it has no-che?k-code (glob)
  Skipping i18n/polib.py it has no-che?k-code (glob)
  Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
  Skipping mercurial/httpclient/_readers.py it has no-che?k-code (glob)