#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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
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.

Reply via email to