Commit 7019123d authored by Jannis Leidel's avatar Jannis Leidel
Browse files

Fixed the exception handling when deserializing via generators on Python 2.5...

Fixed the exception handling when deserializing via generators on Python 2.5 that was introduced in r17469. Also only test the YAML serializer if PyYAML is installed.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17487 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent c1acda6d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ def Deserializer(stream_or_string, **options):
    try:
        for obj in PythonDeserializer(simplejson.load(stream), **options):
            yield obj
    except GeneratorExit:
        raise
    except Exception, e:
        # Map to deserializer error
        raise DeserializationError(e)
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ def Deserializer(stream_or_string, **options):
    try:
        for obj in PythonDeserializer(yaml.safe_load(stream), **options):
            yield obj
    except GeneratorExit:
        raise
    except Exception, e:
        # Map to deserializer error
        raise DeserializationError(e)
+7 −0
Original line number Diff line number Diff line
@@ -17,12 +17,18 @@ try:
except ImportError:
    from StringIO import StringIO

try:
    import yaml
except ImportError:
    yaml = None

from django.core import serializers
from django.core.serializers import SerializerDoesNotExist
from django.core.serializers.base import DeserializationError
from django.db import connection, models
from django.test import TestCase
from django.utils.functional import curry
from django.utils.unittest import skipUnless

from .models import (BooleanData, CharData, DateData, DateTimeData, EmailData,
    FileData, FilePathData, DecimalData, FloatData, IntegerData, IPAddressData,
@@ -396,6 +402,7 @@ class SerializerTests(TestCase):
            for obj in serializers.deserialize("json", """[{"pk":1}"""):
                pass

    @skipUnless(yaml, "PyYAML not installed")
    def test_yaml_deserializer_exception(self):
        with self.assertRaises(DeserializationError):
            for obj in serializers.deserialize("yaml", "{"):