Skip to content

Commit

Permalink
1.6.1dev: fix an error while rendering diff of a changeset if `[trac]…
Browse files Browse the repository at this point in the history
… use_chunked_encoding` disabled (closes #13625)

git-svn-id: http://trac.edgewall.org/intertrac/log:/branches/1.6-stable@17776 af82e41b-90c4-0310-8c96-b1721e28e2e2
  • Loading branch information
jomae committed Apr 21, 2024
1 parent ec5672e commit cd595b5
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
36 changes: 36 additions & 0 deletions trac/versioncontrol/tests/functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import tempfile
import unittest

from trac.util import create_file, read_file
from trac.admin.tests.functional import AuthorizationTestCaseSetup
from trac.tests.contentgen import random_page, random_word, \
random_unique_camel
Expand Down Expand Up @@ -418,6 +419,40 @@ def runTest(self):
tc.find(r'No node missing.txt at revision 2\b')


class RegressionTestTicket13625(FunctionalTestCaseSetup):
def runTest(self):
"""Test for regression of https://trac.edgewall.org/ticket/13625
fix for rendering diff with use_chunked_encoding option disabled.
"""
env = self._testenv.get_trac_environment()
rev = self._testenv.svn_add('ticket13625.txt', 'New file\n')
tc.go(self._tester.url + '/changeset/%d' % rev)

expected = b"""\
Index: /ticket13625.txt\r
===================================================================\r
--- /ticket13625.txt\t(revision %(rev)d)\r
+++ /ticket13625.txt\t(revision %(rev)d)\r
@@ -0,0 +1,1 @@\r
+New file\r
""" % {b'rev': rev}

def test_diff(**options):
for option, value in options.items():
env.config.set('trac', option, value)
env.config.save()
code, content = tc.download_link('Unified Diff')
self.assertEqual(200, code)
self.assertEqual(expected, content)

saved = read_file(env.config.filename, 'rb')
try:
test_diff(use_chunked_encoding='enabled')
test_diff(use_chunked_encoding='disabled')
finally:
create_file(env.config.filename, saved, 'wb')


def functionalSuite(suite=None):
if not suite:
import trac.tests.functional
Expand All @@ -440,6 +475,7 @@ def functionalSuite(suite=None):
suite.addTest(RegressionTestTicket11618())
suite.addTest(RegressionTestTicket11777())
suite.addTest(RegressionTestTicket13401())
suite.addTest(RegressionTestTicket13625())
suite.addTest(RegressionTestRev5877())
else:
print("SKIP: versioncontrol/tests/functional.py (no svn bindings)")
Expand Down
2 changes: 1 addition & 1 deletion trac/versioncontrol/web_ui/changeset.py
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ def _render_diff(self, req, filename, repos, data):
if Chrome(self.env).use_chunked_encoding:
length = None
else:
output = ''.join(output)
output = b''.join(output)
length = len(output)

req.send_response(200)
Expand Down

0 comments on commit cd595b5

Please sign in to comment.