changeset 395:fbe8834923c5

commands: report http exceptions nicely -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 commands: report http exceptions nicely manifest hash: 37760b304eedffcea9c1c01d03334cf4f6048fd3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCsx6QywK+sNU5EO8RAnyEAKC3RBzwlVAyI+SSYHj1Z+Psn1Aq3gCcDQJf pqPitXBuvdZbLdK0ti2kFOk= =ZjC9 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Fri, 17 Jun 2005 11:03:44 -0800
parents e6db25785b00
children 8f8bb77d560e
files mercurial/commands.py tests/test-bad-pull tests/test-bad-pull.out
diffstat 3 files changed, 61 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Fri Jun 17 09:32:13 2005 -0800
+++ b/mercurial/commands.py	Fri Jun 17 11:03:44 2005 -0800
@@ -752,7 +752,11 @@
     except KeyboardInterrupt:
         u.warn("interrupted!\n")
     except IOError, inst:
-        if inst.errno == errno.EPIPE:
+        if hasattr(inst, "code"):
+            u.warn("abort: %s\n" % inst)
+        elif hasattr(inst, "reason"):
+            u.warn("abort: error %d: %s\n" % (inst.reason[0], inst.reason[1]))
+        elif hasattr(inst, "args") and inst[0] == errno.EPIPE:
             u.warn("broken pipe\n")
         else:
             raise
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bad-pull	Fri Jun 17 11:03:44 2005 -0800
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+mkdir copy
+cd copy
+hg init http://localhost:20059/
+hg verify
+hg co
+cat foo
+hg manifest
+
+cat > dumb.py <<EOF
+import BaseHTTPServer, SimpleHTTPServer, signal
+
+def run(server_class=BaseHTTPServer.HTTPServer,
+        handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
+    server_address = ('localhost', 20059)
+    httpd = server_class(server_address, handler_class)
+    httpd.serve_forever()
+
+signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
+run()
+EOF
+
+python dumb.py 2>/dev/null &
+
+mkdir copy2
+cd copy2
+hg init http://localhost:20059/foo
+hg verify
+hg co
+cat foo
+hg manifest
+
+kill %1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bad-pull.out	Fri Jun 17 11:03:44 2005 -0800
@@ -0,0 +1,22 @@
+requesting all changes
+adding changesets
+abort: error 111: Connection refused
+transaction abort!
+rollback completed
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+0 files, 0 changesets, 0 total revisions
+cat: foo: No such file or directory
+requesting all changes
+adding changesets
+abort: HTTP Error 404: File not found
+transaction abort!
+rollback completed
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+0 files, 0 changesets, 0 total revisions
+cat: foo: No such file or directory