#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.

Reply via email to