Commit f9636fdf authored by Tim Graham's avatar Tim Graham
Browse files

Refs #23843 -- Updated Oracle annotations workaround to reflect latest status.

parent 6bd7ee4e
Loading
Loading
Loading
Loading
+8 −15
Original line number Diff line number Diff line
@@ -16,23 +16,16 @@ from .models import (
)


def cxOracle_513_py3_bug(func):
def cxOracle_py3_bug(func):
    """
    cx_Oracle versions up to and including 5.1.3 have a bug with respect to
    string handling under Python3 (essentially, they treat Python3 strings
    as Python2 strings rather than unicode). This makes some tests here
    fail under Python 3 -- so we mark them as expected failures.

    See  https://code.djangoproject.com/ticket/23843, in particular comment 6,
    which points to https://bitbucket.org/anthony_tuininga/cx_oracle/issue/6/
    There's a bug in Django/cx_Oracle with respect to string handling under
    Python 3 (essentially, they treat Python 3 strings as Python 2 strings
    rather than unicode). This makes some tests here fail under Python 3, so
    we mark them as expected failures until someone fixes them in #23843.
    """
    from unittest import expectedFailure
    from django.db import connection

    if connection.vendor == 'oracle' and six.PY3 and connection.Database.version <= '5.1.3':
        return expectedFailure(func)
    else:
        return func
    return expectedFailure(func) if connection.vendor == 'oracle' and six.PY3 else func


class NonAggregateAnnotationTestCase(TestCase):
@@ -387,7 +380,7 @@ class NonAggregateAnnotationTestCase(TestCase):
                e.id, e.first_name, e.manager, e.random_value, e.last_name, e.age,
                e.salary, e.store.name, e.annotated_value))

    @cxOracle_513_py3_bug
    @cxOracle_py3_bug
    def test_custom_functions(self):
        Company(name='Apple', motto=None, ticker_name='APPL', description='Beautiful Devices').save()
        Company(name='Django Software Foundation', motto=None, ticker_name=None, description=None).save()
@@ -413,7 +406,7 @@ class NonAggregateAnnotationTestCase(TestCase):
            lambda c: (c.name, c.tagline)
        )

    @cxOracle_513_py3_bug
    @cxOracle_py3_bug
    def test_custom_functions_can_ref_other_functions(self):
        Company(name='Apple', motto=None, ticker_name='APPL', description='Beautiful Devices').save()
        Company(name='Django Software Foundation', motto=None, ticker_name=None, description=None).save()