tests/test-diff-issue2761.t
author Gregory Szorc <gregory.szorc@gmail.com>
Fri, 14 Apr 2017 00:33:56 -0700
changeset 32002 bf855efe5664
parent 17486 73e3e368bd42
child 49585 55c6ebd11cb9
permissions -rw-r--r--
httppeer: wrap HTTPResponse.read() globally There were a handful of places in the code where HTTPResponse.read() was called with no explicit error handling or with inconsistent error handling. In order to eliminate this class of bug, we globally swap out HTTPResponse.read() with a unified error handler. I initially attempted to fix all call sites. However, after going down that rabbit hole, I figured it was best to just change read() to do what we want. This appears to be a worthwhile change, as the tests demonstrate many of our uncaught exceptions go away. To better represent this class of failure, we introduce a new error type. The main benefit over IOError is it can hold a hint. I'm receptive to tweaking its name or inheritance.

Test issue2761

  $ hg init

  $ touch to-be-deleted
  $ hg add
  adding to-be-deleted
  $ hg ci -m first
  $ echo a > to-be-deleted
  $ hg ci -m second
  $ rm to-be-deleted
  $ hg diff -r 0

Same issue, different code path

  $ hg up -C
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ touch does-not-exist-in-1
  $ hg add
  adding does-not-exist-in-1
  $ hg ci -m third
  $ rm does-not-exist-in-1
  $ hg diff -r 1