#30967: Test suite fails on Postgres 12
--------------------------------------------+--------------------------
               Reporter:  Hannes Ljungberg  |          Owner:  (none)
                   Type:  Bug               |         Status:  assigned
              Component:  contrib.postgres  |        Version:  master
               Severity:  Normal            |       Keywords:  tests
           Triage Stage:  Unreviewed        |      Has patch:  0
    Needs documentation:  0                 |    Needs tests:  0
Patch needs improvement:  0                 |  Easy pickings:  0
                  UI/UX:  0                 |
--------------------------------------------+--------------------------
 The test suite is broken on Postgres 12.

 `postgres_tests.test_trigram.TrigramTest.test_trigram_similarity`  fails
 with the following output:

 {{{
 ======================================================================
 FAIL [0.013s]: test_trigram_similarity
 (postgres_tests.test_trigram.TrigramTest)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/tests/django/tests/postgres_tests/test_trigram.py", line 35, in
 test_trigram_similarity
     ordered=True,
   File "/tests/django/django/test/testcases.py", line 1043, in
 assertQuerysetEqual
     return self.assertEqual(list(items), values, msg=msg)
 AssertionError: Lists differ: [('Cat sat on mat.', 0.625), ('Dog sat on
 rug.', 0.33333334)] != [('Cat sat on mat.', 0.625), ('Dog sat on rug.',
 0.333333)]

 First differing element 1:
 ('Dog sat on rug.', 0.33333334)
 ('Dog sat on rug.', 0.333333)

 - [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.33333334)]
 ?                                                          --

 + [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.333333)]
 }}}

 `postgres_tests.test_trigram.TrigramTest.test_trigram_similarity_alternate`
 fails with the following output:
 {{{
 ======================================================================
 FAIL [0.008s]: test_trigram_similarity_alternate
 (postgres_tests.test_trigram.TrigramTest)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/tests/django/tests/postgres_tests/test_trigram.py", line 45, in
 test_trigram_similarity_alternate
     ordered=True,
   File "/tests/django/django/test/testcases.py", line 1043, in
 assertQuerysetEqual
     return self.assertEqual(list(items), values, msg=msg)
 AssertionError: Lists differ: [('Cat sat on mat.', 0.375), ('Dog sat on
 rug.', 0.6666666)] != [('Cat sat on mat.', 0.375), ('Dog sat on rug.',
 0.666667)]

 First differing element 1:
 ('Dog sat on rug.', 0.6666666)
 ('Dog sat on rug.', 0.666667)

 - [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.6666666)]
 ?                                                         ^^

 + [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.666667)]
 ?                                                         ^
 }}}

 This is caused by changes made to how floats are rounded in Postgres 12:

  Improve performance by using a new algorithm for output of real and
 double precision values (Andrew Gierth)
  Previously, displayed floating-point values were rounded to 6 (for real)
 or 15 (for double precision) digits by default, adjusted by the value of
 extra_float_digits. Now, whenever extra_float_digits is more than zero (as
 it now is by default), only the minimum number of digits required to
 preserve the  exact binary value are output. The behavior is the same as
 before when extra_float_digits is set to zero or less.
  Also, formatting of floating-point exponents is now uniform across
 platforms: two digits are used unless three are necessary. In previous
 releases, Windows builds always printed three digits.

 https://www.postgresql.org/docs/release/12.0/

 To have consistent behaviour on all Postgres versions my suggestion is to
 set `extra_float_digits` to 0 on these tests.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30967>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.9f38436222080c082b97b8ef93e7e6db%40djangoproject.com.

Reply via email to