I've created two unit tests to show this behavior.
https://github.com/flupzor/django/commit/4833c4ea5d0cbfd1e7d1689e1887772856f5aba2
This is the output of the tests.
{{{
$ ./runtests.py template_tests.syntax_tests.test_cycle.CycleTagTests
Testing against Django installed in '/home/alex/django-repo/django' with
up to 8 processes
Creating test database for alias 'default'...
Creating test database for alias 'other'...
.......................F.
======================================================================
FAIL: test_cycle29 (template_tests.syntax_tests.test_cycle.CycleTagTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alex/django-repo/django/test/utils.py", line 209, in inner
return func(*args, **kwargs)
File "/home/alex/django-repo/tests/template_tests/utils.py", line 61, in
inner
func(self)
File "/home/alex/django-
repo/tests/template_tests/syntax_tests/test_cycle.py", line 144, in
test_cycle29
self.assertEqual(output, 'bcabcabcccaa')
AssertionError: u'bcabcabcaaaa' != 'bcabcabcccaa'
----------------------------------------------------------------------
Ran 25 tests in 0.028s
FAILED (failures=1)
Destroying test database for alias 'default'...
Destroying test database for alias 'other'...
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26830>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
I've added a PR to github with a fix for this issue.
https://github.com/django/django/pull/6865
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:1>
* status: new => assigned
* owner: nobody => sergei-maertens
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:2>
* has_patch: 0 => 1
* stage: Unreviewed => Accepted
Comment:
Confirmed bug, I could reproduce with a simple project and the tests cover
it well.
The batch looks allright to me, although I'm not sure that the
`set_upward` method should exist on the `Context` class, but I'll leave
that to other people to decide.
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:3>
* needs_better_patch: 0 => 1
Comment:
Left some comments for improvement on the PR.
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:4>
* needs_better_patch: 1 => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:5>
Comment (by Tim Graham <timograham@…>):
In [changeset:"31e053edfa01e47c26dfa03834beeba77e09403a" 31e053ed]:
{{{
#!CommitTicketReference repository=""
revision="31e053edfa01e47c26dfa03834beeba77e09403a"
Refs #26830 -- Added a test for a named cycle template tag inside an
ifchanged block and a for loop.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:6>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"3ae3a1f9fad800d73892b14ac8a576e817a2da55" 3ae3a1f9]:
{{{
#!CommitTicketReference repository=""
revision="3ae3a1f9fad800d73892b14ac8a576e817a2da55"
Fixed #26830 -- Prevented the 'with' templatetag from resetting the cycle
variable to its initial state.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26830#comment:7>