#24064: Spatialite tests could use or create real database
-------------------------------+--------------------
Reporter: coldmind | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------
Modify your test config to be like this:
{{{
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': 'nonmemory',
'TEST_NAME': ':memory:',
},
'other': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': 'nonmemory2',
'TEST_NAME': ':memory:',
}
}
}}}
Then run `python runtests.py django.contrib.gis.tests.test_geoforms`.
File with name `nonmemory` will be created, it is not correct.
More details about investigation:
Issue was found here:
https://github.com/django/django/pull/3677#issuecomment-68381272
Some investigation logs:
{{{
<truecoldmind> timograham, It is strange. Look at
https://github.com/django/django/blob/51890ce8898f821d28f2f6fb6071c936e9bd88f0/django/contrib/gis/tests/utils.py#L39
<truecoldmind> This import causing problems.
<truecoldmind> For example if it is imported, python runtests.py backends
django.contrib.gis.tests.test_geoforms will fail, but when I removed it
(this import is not used in test_geoforms), tests passing correctly. Any
ideas what it could be?
...
<truecoldmind> timograham, in this file connection.ops.spatial_version[0]
used, which is performing some database operation. I will try to figure
out what is the problem
<truecoldmind> without this call all is okay
<truecoldmind> timograham, calling cursor in
https://github.com/django/django/blob/51890ce8898f821d28f2f6fb6071c936e9bd88f0/django/contrib/gis/db/backends/spatialite/operations.py#L211
causing problems. Does cursor close connection or something else?
...
timograham, when running tests, call to get spatialite version is calling
cursor, which creates new connection, which is not a test database
connection. I printed connection params, and saw that database name was
":memory:" instead of string which should be for new in-memory databases.
It is telling us that test database was not used. You can check it in
another way: sqlite allows to not specify database name, and if it will be
not specified, and you will try to run `python runtests.py
django.contrib.gis.tests.test_geoforms`, it will raise an exception
"Please supply the NAME value.".
If I am right, this should be considered as another issue.
(:memory: was printed because it was specified in my settings as NAME)
Or, if running test_geoforms with NAME as some string, and TEST_NAME as
:memory:, database file will be created. This is not correct, doesn't it?
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24064>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/051.4027ceede3195faee6fcc9113be0bb5c%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.