summaryrefslogtreecommitdiff
path: root/tests/annotations/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/annotations/tests.py')
-rw-r--r--tests/annotations/tests.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/annotations/tests.py b/tests/annotations/tests.py
index b0886266f6..8a4bffcb6e 100644
--- a/tests/annotations/tests.py
+++ b/tests/annotations/tests.py
@@ -14,6 +14,25 @@ from django.utils import six
from .models import Author, Book, Store, DepartmentStore, Company, Employee
+def cxOracle_513_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/
+ """
+ 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
+
+
class NonAggregateAnnotationTestCase(TestCase):
fixtures = ["annotations.json"]
@@ -230,6 +249,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
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()
@@ -255,6 +275,7 @@ class NonAggregateAnnotationTestCase(TestCase):
lambda c: (c.name, c.tagline)
)
+ @cxOracle_513_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()