#34952: manage.py compilemessages may skip locale folders if ignore is used.
------------------------------------------+------------------------
               Reporter:  Andrew Cordery  |          Owner:  nobody
                   Type:  Bug             |         Status:  new
              Component:  Uncategorized   |        Version:  4.2
               Severity:  Normal          |       Keywords:
           Triage Stage:  Unreviewed      |      Has patch:  1
    Needs documentation:  0               |    Needs tests:  0
Patch needs improvement:  0               |  Easy pickings:  0
                  UI/UX:  0               |
------------------------------------------+------------------------
 manage.py compilemessages uses os.walk and iterates through the same
 dirnames instance that it removes members from when the ignore option is
 used.

 This will cause compilemessages to accidentally ignore a locale directory
 that directly follows a skipped directory in the list.   Unfortunately it
 is not easy to predict when this will occur or which directories may be
 affected as os.walk provides the list of dirnames in 'arbitrary' order
 according to the python docs.

 I've provided the miniscule patch to fix this as well as a much lengthier
 regression test, however I'm not positive that the test is capable of
 recreating the correct conditions on all operating systems.  I've tested
 on OSX only.  Regardless, the issue at hand is a basic language error
 (modifying a value that you are iterating through) and the fix is
 extremely simple (i.e. copy dirnames before iterating, in my patch I just
 wrap it in list()), so this should not be a controversial patch.


 Note:  this was originally mentioned as a comment on my other ticket
 https://code.djangoproject.com/ticket/34925, I'm separating it for clarity
 and I will attach the PR here.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34952>
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/0107018ba985a966-718b342d-8bed-4c04-b708-9eeede28d11a-000000%40eu-central-1.amazonses.com.

Reply via email to