diff --git a/httpie/core.py b/httpie/core.py index 0780a443..f442ee0c 100644 --- a/httpie/core.py +++ b/httpie/core.py @@ -132,6 +132,10 @@ def main(args=sys.argv[1:], env=Environment()): download.finish() if download.interrupted: exit_status = ExitStatus.ERROR + error('Incomplete download: size=%d; downloaded=%d' % ( + download.status.total_size, + download.status.downloaded + )) except IOError as e: if not traceback and e.errno == errno.EPIPE: diff --git a/httpie/downloads.py b/httpie/downloads.py index 11dc9324..7e75f214 100644 --- a/httpie/downloads.py +++ b/httpie/downloads.py @@ -162,9 +162,9 @@ class Download(object): self._resumed_from = 0 self.finished = False - self._status = Status() + self.status = Status() self._progress_reporter = ProgressReporterThread( - status=self._status, + status=self.status, output=progress_file ) @@ -197,7 +197,7 @@ class Download(object): :return: RawStream, output_file """ - assert not self._status.time_started + assert not self.status.time_started try: total_size = int(response.headers['Content-Length']) @@ -232,7 +232,7 @@ class Download(object): ) self._output_file = open(get_unique_filename(fn), mode='a+b') - self._status.started( + self.status.started( resumed_from=self._resumed_from, total_size=total_size ) @@ -260,7 +260,7 @@ class Download(object): def finish(self): assert not self.finished self.finished = True - self._status.finished() + self.status.finished() def failed(self): self._progress_reporter.stop() @@ -269,8 +269,8 @@ class Download(object): def interrupted(self): return ( self.finished - and self._status.total_size - and self._status.total_size != self._status.downloaded + and self.status.total_size + and self.status.total_size != self.status.downloaded ) def _chunk_downloaded(self, chunk): @@ -282,7 +282,7 @@ class Download(object): :type chunk: bytes """ - self._status.chunk_downloaded(len(chunk)) + self.status.chunk_downloaded(len(chunk)) class Status(object): diff --git a/tests/tests.py b/tests/tests.py index 5ce3c4e0..7fdbf185 100755 --- a/tests/tests.py +++ b/tests/tests.py @@ -110,7 +110,8 @@ with open(BIN_FILE_PATH, 'rb') as f: def httpbin(path): - return HTTPBIN_URL + path + url = HTTPBIN_URL + path + return url def mk_config_dir(): @@ -1627,9 +1628,7 @@ class DownloadTest(BaseTestCase): self.assertFalse(download.interrupted) def test_download_interrupted(self): - download = Download( - output_file=open(os.devnull, 'w') - ) + download = Download(output_file=open(os.devnull, 'w')) download.start(Response( url=httpbin('/'), headers={'Content-Length': 5}