Code

Opened 6 years ago

Closed 6 years ago

Last modified 3 years ago

#7718 closed (fixed)

sorted() is used by system tests, but isn't available on Python 2.3

Reported by: russellm Owned by: russellm
Component: Testing framework Version: master
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

One of the proposed patches for #7303 correctly identified that sorted() is not available under Python 2.3. sorted() is used extensively in the Django system tests as a way of removing a dependency on dict ordering.

As at [7890], the following instances exist:

tests/modeltests/basic/models.py:>>> [sorted(d.items()) for d in dicts]
tests/modeltests/or_lookups/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/admin_scripts/management/commands/app_command.py:        print 'EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/base_command.py:        print 'EXECUTE:BaseCommand labels=%s, options=%s' % (labels, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/label_command.py:        print 'EXECUTE:LabelCommand label=%s, options=%s' % (label, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/noargs_command.py:        print 'EXECUTE:NoArgsCommand options=%s' % sorted(options.items())
tests/regressiontests/defaultfilters/tests.py:>>> [sorted(dict.items()) for dict in sorted_dicts]
tests/regressiontests/defaultfilters/tests.py:>>> [sorted(dict.items()) for dict in sorted_dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/queries/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/queries/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/utils/datastructures.py:>>> sorted(real_dict.values())

We could just replace the use of sorted() with sort(); a better approach (cleaner in terms of final output) would be to introduce a definition of sorted() when it is not available, much in the same way that set is imported when it is not available.

Attachments (0)

Change History (4)

comment:1 Changed 6 years ago by russellm

  • Needs documentation unset
  • Needs tests unset
  • Owner changed from nobody to russellm
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

comment:2 Changed 6 years ago by Alex

http://dpaste.com/62777/ Here's a quick implementation, it's not tested, and I don't know where it should go, it also doesn't handle any of the other args sort() can take, I don't believe those are used in the tests though.

comment:3 Changed 6 years ago by russellm

  • Resolution set to fixed
  • Status changed from new to closed

(In [7914]) Fixed #7718 -- Added a naive implementation of sorted() for Python 2.3 compatibility, and modified test cases to import the function when required.

comment:4 Changed 3 years ago by jacob

  • milestone 1.0 deleted

Milestone 1.0 deleted

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.