diff options
| author | Justus Winter <[email protected]> | 2016-09-13 08:44:14 +0000 | 
|---|---|---|
| committer | Justus Winter <[email protected]> | 2016-09-13 11:29:43 +0000 | 
| commit | 70a3be27a509a1b5ea7372bee93d83c5019427ff (patch) | |
| tree | 26424006293c90a51baec2276c633850fa2f539b /lang/python/tests/t-idiomatic.py | |
| parent | python: Fix types and error handling. (diff) | |
| download | gpgme-70a3be27a509a1b5ea7372bee93d83c5019427ff.tar.gz gpgme-70a3be27a509a1b5ea7372bee93d83c5019427ff.zip | |
python: Handle slight differences between Python 2 and 3.
* lang/python/helpers.c (pyDataWriteCb): Handle Python integers being
returned on Python 2.
(pyDataSeekCb): Likewise.
* lang/python/pyme/core.py (Data.__init__): Fix testing for string
argument.
(Data.new_from_filepart): Likewise.
* lang/python/pyme/util.py (is_a_string): New function.
* lang/python/tests/t-encrypt-large.py (read_cb): Force evaluation of
generator.
* lang/python/tests/t-idiomatic.py: Partly skip test on Python 2.
* lang/python/tests/t-verify.py (check_result): Here, the difference
between 2 and 3 really matters.  We cannot change the char *
conversion in Python 2 without breaking all existing applications, and
using bytestrings in Python 3 would be very inconvenient.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'lang/python/tests/t-idiomatic.py')
| -rwxr-xr-x | lang/python/tests/t-idiomatic.py | 31 | 
1 files changed, 18 insertions, 13 deletions
| diff --git a/lang/python/tests/t-idiomatic.py b/lang/python/tests/t-idiomatic.py index 1989c922..726bbb93 100755 --- a/lang/python/tests/t-idiomatic.py +++ b/lang/python/tests/t-idiomatic.py @@ -17,6 +17,7 @@  # You should have received a copy of the GNU Lesser General Public  # License along with this program; if not, see <http://www.gnu.org/licenses/>. +import sys  import io  import os  import tempfile @@ -60,17 +61,21 @@ with tempfile.TemporaryFile() as source, \      sign_and_verify(source, signed, sink) -# XXX: Python's io.BytesIo.truncate does not work as advertised. -# http://bugs.python.org/issue27261 -bio = io.BytesIO() -bio.truncate(1) -if len(bio.getvalue()) != 1: -    # This version of Python is affected, preallocate buffer. -    preallocate = 128*b'\x00' -else: -    preallocate = b'' +if sys.version_info[0] == 3: +    # Python2's io.BytesIO does not implement the buffer interface, +    # hence we cannot use it as sink. -# Demonstrate automatic wrapping of objects implementing the buffer -# interface, and the use of data objects with the 'with' statement. -with io.BytesIO(preallocate) as signed, pyme.Data() as sink: -    sign_and_verify(b"Hallo Leute\n", signed, sink) +    # XXX: Python's io.BytesIo.truncate does not work as advertised. +    # http://bugs.python.org/issue27261 +    bio = io.BytesIO() +    bio.truncate(1) +    if len(bio.getvalue()) != 1: +        # This version of Python is affected, preallocate buffer. +        preallocate = 128*b'\x00' +    else: +        preallocate = b'' + +    # Demonstrate automatic wrapping of objects implementing the buffer +    # interface, and the use of data objects with the 'with' statement. +    with io.BytesIO(preallocate) as signed, pyme.Data() as sink: +        sign_and_verify(b"Hallo Leute\n", signed, sink) | 
