From 4a4ad27712b44cebada1bdaebd082cf82df74610 Mon Sep 17 00:00:00 2001 From: Shai Berger Date: Wed, 3 Dec 2014 00:42:07 +0200 Subject: [PATCH] Marked some tests as expected failures on Oracle/cx_Oracle<=5.1.3/Python3 Refs #23843 which is really a cx_Oracle bug --- tests/annotations/tests.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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()