From 98b4572ef7fee55d4ec92705cf45770a1318c10b Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Sat, 11 Feb 2012 22:12:49 +0000 Subject: [PATCH] Fixed #15216 -- Made return type of an internal DB introspection method consistent. Thanks arthur AT milliways DOT fr for the report and patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17510 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/__init__.py | 1 + tests/regressiontests/introspection/tests.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index ebe8875e42..7674f5c879 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -905,6 +905,7 @@ class BaseDatabaseIntrospection(object): continue tables.add(model._meta.db_table) tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many]) + tables = list(tables) if only_existing: existing_tables = self.table_names() tables = [ diff --git a/tests/regressiontests/introspection/tests.py b/tests/regressiontests/introspection/tests.py index fa2b6c5d73..c3d3533f94 100644 --- a/tests/regressiontests/introspection/tests.py +++ b/tests/regressiontests/introspection/tests.py @@ -53,6 +53,17 @@ class IntrospectionTests(TestCase): self.assertTrue('django_ixn_testcase_table' not in tl, "django_table_names() returned a non-Django table") + def test_django_table_names_retval_type(self): + # Ticket #15216 + cursor = connection.cursor() + cursor.execute('CREATE TABLE django_ixn_test_table (id INTEGER);') + + tl = connection.introspection.django_table_names(only_existing=True) + self.assertIs(type(tl), list) + + tl = connection.introspection.django_table_names(only_existing=False) + self.assertIs(type(tl), list) + def test_installed_models(self): tables = [Article._meta.db_table, Reporter._meta.db_table] models = connection.introspection.installed_models(tables)