Skip to content

Commit 21f75df

Browse files
committed
Avoid duplicate rendering of templates in tests
Panel.content is a property. When accessed it renders a template. In tests, store the rendered value in an intermediate variable when the property is accessed on multiple lines in a row without the result changing. This saves a small amount of duplicate processing in tests.
1 parent c7c44d9 commit 21f75df

File tree

7 files changed

+32
-30
lines changed

7 files changed

+32
-30
lines changed

tests/panels/test_cache.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ def test_insert_content(self):
3434
self.assertNotIn("café", self.panel.content)
3535
self.panel.generate_stats(self.request, response)
3636
# ensure the panel renders correctly.
37-
self.assertIn("café", self.panel.content)
38-
self.assertValidHTML(self.panel.content)
37+
content = self.panel.content
38+
self.assertIn("café", content)
39+
self.assertValidHTML(content)
3940

4041
def test_generate_server_timing(self):
4142
self.assertEqual(len(self.panel.calls), 0)

tests/panels/test_logging.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ def view(request):
6363
self.assertNotIn("café", self.panel.content)
6464
self.panel.generate_stats(self.request, response)
6565
# ensure the panel renders correctly.
66-
self.assertIn("café", self.panel.content)
67-
self.assertValidHTML(self.panel.content)
66+
content = self.panel.content
67+
self.assertIn("café", content)
68+
self.assertValidHTML(content)
6869

6970
def test_failing_formatting(self):
7071
class BadClass:

tests/panels/test_profiling.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,17 @@ def test_insert_content(self):
3232
self.assertNotIn("regular_view", self.panel.content)
3333
self.panel.generate_stats(self.request, response)
3434
# ensure the panel renders correctly.
35-
self.assertIn("regular_view", self.panel.content)
36-
self.assertValidHTML(self.panel.content)
35+
content = self.panel.content
36+
self.assertIn("regular_view", content)
37+
self.assertValidHTML(content)
3738

3839
def test_listcomp_escaped(self):
3940
self._get_response = lambda request: listcomp_view(request)
4041
response = self.panel.process_request(self.request)
4142
self.panel.generate_stats(self.request, response)
42-
self.assertNotIn(
43-
'<span class="djdt-func"><listcomp></span>', self.panel.content
44-
)
45-
self.assertIn(
46-
'<span class="djdt-func">&lt;listcomp&gt;</span>', self.panel.content
47-
)
43+
content = self.panel.content
44+
self.assertNotIn('<span class="djdt-func"><listcomp></span>', content)
45+
self.assertIn('<span class="djdt-func">&lt;listcomp&gt;</span>', content)
4846

4947
def test_generate_stats_no_profiler(self):
5048
"""

tests/panels/test_request.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ def test_non_ascii_session(self):
88
self.request.session = {"où": "où"}
99
response = self.panel.process_request(self.request)
1010
self.panel.generate_stats(self.request, response)
11-
content = self.panel.content
12-
self.assertIn("où", content)
11+
self.assertIn("où", self.panel.content)
1312

1413
def test_object_with_non_ascii_repr_in_request_params(self):
1514
self.request.path = "/non_ascii_request/"
@@ -28,5 +27,6 @@ def test_insert_content(self):
2827
self.assertNotIn("nôt åscíì", self.panel.content)
2928
self.panel.generate_stats(self.request, response)
3029
# ensure the panel renders correctly.
31-
self.assertIn("nôt åscíì", self.panel.content)
32-
self.assertValidHTML(self.panel.content)
30+
content = self.panel.content
31+
self.assertIn("nôt åscíì", content)
32+
self.assertValidHTML(content)

tests/panels/test_sql.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,9 @@ def test_insert_content(self):
242242
self.assertNotIn("café", self.panel.content)
243243
self.panel.generate_stats(self.request, response)
244244
# ensure the panel renders correctly.
245-
self.assertIn("café", self.panel.content)
246-
self.assertValidHTML(self.panel.content)
245+
content = self.panel.content
246+
self.assertIn("café", content)
247+
self.assertValidHTML(content)
247248

248249
@override_settings(DEBUG_TOOLBAR_CONFIG={"ENABLE_STACKTRACES_LOCALS": True})
249250
def test_insert_locals(self):
@@ -256,9 +257,10 @@ def test_insert_locals(self):
256257
self.panel.generate_stats(self.request, response)
257258
self.assertIn("local_var", self.panel.content)
258259
# Verify the escape logic works
259-
self.assertNotIn("<script>alert", self.panel.content)
260-
self.assertIn("&lt;script&gt;alert", self.panel.content)
261-
self.assertIn("djdt-locals", self.panel.content)
260+
content = self.panel.content
261+
self.assertNotIn("<script>alert", content)
262+
self.assertIn("&lt;script&gt;alert", content)
263+
self.assertIn("djdt-locals", content)
262264

263265
def test_not_insert_locals(self):
264266
"""

tests/panels/test_staticfiles.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ class StaticFilesPanelTestCase(BaseTestCase):
99
def test_default_case(self):
1010
response = self.panel.process_request(self.request)
1111
self.panel.generate_stats(self.request, response)
12+
content = self.panel.content
1213
self.assertIn(
13-
"django.contrib.staticfiles.finders." "AppDirectoriesFinder",
14-
self.panel.content,
14+
"django.contrib.staticfiles.finders." "AppDirectoriesFinder", content
1515
)
1616
self.assertIn(
17-
"django.contrib.staticfiles.finders." "FileSystemFinder (2 files)",
18-
self.panel.content,
17+
"django.contrib.staticfiles.finders." "FileSystemFinder (2 files)", content
1918
)
2019
self.assertEqual(self.panel.num_used, 0)
2120
self.assertNotEqual(self.panel.num_found, 0)
@@ -39,8 +38,8 @@ def test_insert_content(self):
3938
)
4039
self.panel.generate_stats(self.request, response)
4140
# ensure the panel renders correctly.
41+
content = self.panel.content
4242
self.assertIn(
43-
"django.contrib.staticfiles.finders." "AppDirectoriesFinder",
44-
self.panel.content,
43+
"django.contrib.staticfiles.finders." "AppDirectoriesFinder", content
4544
)
46-
self.assertValidHTML(self.panel.content)
45+
self.assertValidHTML(content)

tests/panels/test_template.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ def test_insert_content(self):
7474
self.assertNotIn("nôt åscíì", self.panel.content)
7575
self.panel.generate_stats(self.request, response)
7676
# ensure the panel renders correctly.
77-
self.assertIn("nôt åscíì", self.panel.content)
78-
self.assertValidHTML(self.panel.content)
77+
content = self.panel.content
78+
self.assertIn("nôt åscíì", content)
79+
self.assertValidHTML(content)
7980

8081
def test_custom_context_processor(self):
8182
response = self.panel.process_request(self.request)

0 commit comments

Comments
 (0)