Blob Blame History Raw
From d8e4390da96d19a322a6fd3512ccac0200f15ddb Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Wed, 6 Mar 2013 14:38:01 +0100
Subject: [PATCH 4/4] test_write_abort.py: test returning -1 from write callback

---
 Makefile                  |    1 +
 tests/test_write_abort.py |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 0 deletions(-)
 create mode 100755 tests/test_write_abort.py

diff --git a/Makefile b/Makefile
index 9b2369d..10b95a7 100644
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,7 @@ build-7.10.8:
 
 test: build
 	$(PYTHON) tests/test_internals.py -q
+	$(PYTHON) tests/test_write_abort.py -q
 
 # (needs GNU binutils)
 strip: build
diff --git a/tests/test_write_abort.py b/tests/test_write_abort.py
new file mode 100755
index 0000000..28e7d1f
--- /dev/null
+++ b/tests/test_write_abort.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+import os.path
+import pycurl
+import sys
+
+pycurl.global_init(pycurl.GLOBAL_DEFAULT)
+
+def write_cb(_):
+    # this should cause pycurl.WRITEFUNCTION (without any range errors)
+    return -1
+
+# download the script itself through the file:// protocol into write_cb
+c = pycurl.Curl()
+c.setopt(pycurl.URL, 'file://' + os.path.abspath(sys.argv[0]))
+c.setopt(pycurl.WRITEFUNCTION, write_cb)
+try:
+    c.perform()
+except pycurl.error, (err, msg):
+    # we expect pycurl.E_WRITE_ERROR as the response
+    assert pycurl.E_WRITE_ERROR == err
+
+# no additional errors should be reported
+assert not hasattr(sys, 'last_value')
+
+c.close()
+
+pycurl.global_cleanup()
-- 
1.7.1