Opened 14 years ago
Closed 14 years ago
#16246 closed Bug (fixed)
Small problems with new generic IP address field tests on Postgres 8.4
| Reported by: | Ramiro Morales | Owned by: | nobody |
|---|---|---|---|
| Component: | Testing framework | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Tes suite doesn't start to run because it can't create some permission table:
Traceback (most recent call last):
File "./runtests.py", line 330, in <module>
failures = django_tests(int(options.verbosity), options.interactive, options.failfast, args)
File "./runtests.py", line 197, in django_tests
failures = test_runner.run_tests(test_labels, extra_tests=extra_tests)
File "django/test/simple.py", line 354, in run_tests
old_config = self.setup_databases()
File "django/test/simple.py", line 291, in setup_databases
test_db_name = connection.creation.create_test_db(self.verbosity, autoclobber=not self.interactive)
File "django/db/backends/creation.py", line 239, in create_test_db
load_initial_data=False)
File "django/core/management/__init__.py", line 166, in call_command
return klass.execute(*args, **defaults)
File "django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "django/core/management/commands/syncdb.py", line 109, in handle_noargs
emit_post_sync_signal(created_models, verbosity, interactive, db)
File "django/core/management/sql.py", line 190, in emit_post_sync_signal
interactive=interactive, db=db)
File "django/dispatch/dispatcher.py", line 172, in send
response = receiver(signal=self, sender=sender, **named)
File "django/contrib/auth/management/__init__.py", line 56, in create_permissions
content_type=ctype
File "django/db/models/manager.py", line 138, in create
return self.get_query_set().create(**kwargs)
File "django/db/models/query.py", line 360, in create
obj.save(force_insert=True, using=self.db)
File "django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "django/db/models/base.py", line 556, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "django/db/models/manager.py", line 198, in _insert
return insert_query(self.model, values, **kwargs)
File "django/db/models/query.py", line 1456, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "django/db/models/sql/compiler.py", line 810, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "django/db/models/sql/compiler.py", line 754, in execute_sql
cursor.execute(sql, params)
File "django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
return self.cursor.execute(query, args)
django.db.utils.DatabaseError: value too long for type character varying(50)
It's the row corresponding to this test model:
Strange thing is why people using PosgreSQL 9 doesn't see this?
Once that is fixed, then there is one error:
======================================================================
ERROR: test_v4_unpack_uniqueness_detection (modeltests.validation.tests.GenericIPAddressFieldTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "tests/modeltests/validation/tests.py", line 175, in test_v4_unpack_uniqueness_detection
giptm.save()
File "django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "django/db/models/base.py", line 556, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "django/db/models/manager.py", line 198, in _insert
return insert_query(self.model, values, **kwargs)
File "django/db/models/query.py", line 1456, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "django/db/models/sql/compiler.py", line 810, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "django/db/models/sql/compiler.py", line 754, in execute_sql
cursor.execute(sql, params)
File "django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
return self.cursor.execute(query, args)
DatabaseError: invalid input syntax for type inet: ""
LINE 1: ..., "v4_ip", "v6_ip") VALUES (E'::ffff:10.10.10.10', E'', E'')
^
(That causes five errors later in modeltests.serializers, modeltests.proxy_model_inheritance, modeltests.fixtures and regressiontests.bug639)
It's about the GenericIPAddressField's in that model and the one before it, because they are marked blank=True and not null=True. From whai I understand: Being Postgres the only backend that doesn't represent the new generic IP address model field with a char DDL field but with a dedicated native data type it doesn't know how to interpret '' when it is given with such value to store, at least in 8.4.
Attachments (1)
Change History (5)
by , 14 years ago
| Attachment: | 16246.diff added |
|---|
comment:1 by , 14 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 14 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
Patch that tweaks the described test case problems, renames a clashing test method elsewhere