diff --git a/CHANGES.rst b/CHANGES.rst
index 93908de76..2f2a10596 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -10,7 +10,8 @@ https://github.com/zopefoundation/Zope/blob/4.x/CHANGES.rst
 5.0a3 (unreleased)
 ------------------
 
-- Nothing changed yet.
+- Improve solidity of the ``debugError`` method.
+  (`#829 <https://github.com/zopefoundation/Zope/issues/829>`_)
 
 
 5.0a2 (2020-04-24)
diff --git a/src/ZPublisher/HTTPResponse.py b/src/ZPublisher/HTTPResponse.py
index 9fc41bd7c..cd0828698 100644
--- a/src/ZPublisher/HTTPResponse.py
+++ b/src/ZPublisher/HTTPResponse.py
@@ -780,8 +780,11 @@ class HTTPResponse(HTTPBaseResponse):
     def debugError(self, entry):
         raise NotFound(self._error_html(
             "Debugging Notice",
-            ("Zope has encountered a problem publishing your object.<p>"
-             "\n" + entry + "</p>")))
+            (
+                "Zope has encountered a problem publishing your object. "
+                "<p>%r</p>" % entry
+            )
+        ))
 
     def badRequestError(self, name):
         self.setStatus(400)

The debugError function is too brittle
The actual code
https://github.com/zopefoundation/Zope/blob/5bfcac7fc0c5a620326955571fc69f20e106a884/src/ZPublisher/HTTPResponse.py#L780-L784
breaks when `entry` is not a string.

For example I add an error when `entry`turned out to be a tuple:
```
(Pdb) l
823         # If a resource is forbidden, why reveal that it exists?
824         forbiddenError = notFoundError
825  
826         def debugError(self, entry):
827             import pdb;pdb.set_trace()
828  ->         raise NotFound(self._error_html(
829                 "Debugging Notice",
830                 ("Zope has encountered a problem publishing your object.<p>"
831                  "\n" + entry + "</p>")))
832  
833         def badRequestError(self, name):
(Pdb) entry
('The object at http://localhost:8080/Plone/... is not publishable.',)
```
diff --git a/src/ZPublisher/tests/testHTTPResponse.py b/src/ZPublisher/tests/testHTTPResponse.py
index c8aba1df5..2636b54c2 100644
--- a/src/ZPublisher/tests/testHTTPResponse.py
+++ b/src/ZPublisher/tests/testHTTPResponse.py
@@ -873,7 +873,7 @@ class HTTPResponseTests(unittest.TestCase):
         except NotFound as raised:
             self.assertEqual(response.status, 200)
             self.assertTrue("Zope has encountered a problem publishing "
-                            "your object.<p>\ntesting</p>" in str(raised))
+                            "your object. <p>'testing'</p>" in str(raised))
         else:
             self.fail("Didn't raise NotFound")
 

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
apt-get update apt-get install -y python3-dev gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
AccessControl==7.2
Acquisition==6.1
AuthEncoding==6.0
beautifulsoup4==4.13.3
BTrees==6.1
cffi==1.17.1
Chameleon==4.6.0
coverage==7.8.0
DateTime==5.5
DocumentTemplate==4.6
exceptiongroup==1.2.2
execnet==2.1.1
ExtensionClass==6.0
importlib_metadata==8.6.1
iniconfig==2.1.0
MultiMapping==5.0
multipart==1.2.1
packaging==24.2
PasteDeploy==3.1.0
Persistence==5.1
persistent==6.1.1
pluggy==1.5.0
pycparser==2.22
pytest==8.3.5
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
python-gettext==5.0
pytz==2025.2
RestrictedPython==8.1a1.dev0
roman==5.0
soupsieve==2.6
tomli==2.2.1
transaction==5.0
typing_extensions==4.13.0
waitress==3.0.2
WebOb==1.8.9
WebTest==3.0.4
WSGIProxy2==0.5.1
z3c.pt==4.5
zc.lockfile==3.0.post1
ZConfig==4.2
zExceptions==5.0
zipp==3.21.0
ZODB==6.0
zodbpickle==4.2
-e git+https://github.com/zopefoundation/Zope.git@e7ebc337e810d8ae6987a582ae2163d4b0089c18#egg=Zope
zope.annotation==5.1
zope.browser==3.1
zope.browsermenu==5.1
zope.browserpage==5.0
zope.browserresource==5.2
zope.cachedescriptors==5.1
zope.component==6.0
zope.configuration==6.0
zope.container==6.1
zope.contentprovider==6.0
zope.contenttype==5.2
zope.deferredimport==5.0
zope.deprecation==5.1
zope.dottedname==6.0
zope.event==5.0
zope.exceptions==5.2
zope.filerepresentation==6.1
zope.globalrequest==2.0
zope.hookable==7.0
zope.i18n==5.2
zope.i18nmessageid==7.0
zope.interface==7.2
zope.lifecycleevent==5.1
zope.location==5.1
zope.pagetemplate==5.1
zope.processlifetime==3.1
zope.proxy==6.1
zope.ptresource==5.1
zope.publisher==7.3
zope.schema==7.0.1
zope.security==7.3
zope.sequencesort==5.1
zope.site==5.1
zope.size==5.1
zope.structuredtext==5.0
zope.tal==5.1
zope.tales==6.1
zope.testbrowser==7.0.1
zope.testing==5.1
zope.traversing==5.1
zope.viewlet==5.1

name: Zope
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - accesscontrol==7.2
      - acquisition==6.1
      - authencoding==6.0
      - beautifulsoup4==4.13.3
      - btrees==6.1
      - cffi==1.17.1
      - chameleon==4.6.0
      - coverage==7.8.0
      - datetime==5.5
      - documenttemplate==4.6
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - extensionclass==6.0
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - multimapping==5.0
      - multipart==1.2.1
      - packaging==24.2
      - pastedeploy==3.1.0
      - persistence==5.1
      - persistent==6.1.1
      - pluggy==1.5.0
      - pycparser==2.22
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - python-gettext==5.0
      - pytz==2025.2
      - restrictedpython==8.1a1.dev0
      - roman==5.0
      - soupsieve==2.6
      - tomli==2.2.1
      - transaction==5.0
      - typing-extensions==4.13.0
      - waitress==3.0.2
      - webob==1.8.9
      - webtest==3.0.4
      - wsgiproxy2==0.5.1
      - z3c-pt==4.5
      - zc-lockfile==3.0.post1
      - zconfig==4.2
      - zexceptions==5.0
      - zipp==3.21.0
      - zodb==6.0
      - zodbpickle==4.2
      - zope-annotation==5.1
      - zope-browser==3.1
      - zope-browsermenu==5.1
      - zope-browserpage==5.0
      - zope-browserresource==5.2
      - zope-cachedescriptors==5.1
      - zope-component==6.0
      - zope-configuration==6.0
      - zope-container==6.1
      - zope-contentprovider==6.0
      - zope-contenttype==5.2
      - zope-deferredimport==5.0
      - zope-deprecation==5.1
      - zope-dottedname==6.0
      - zope-event==5.0
      - zope-exceptions==5.2
      - zope-filerepresentation==6.1
      - zope-globalrequest==2.0
      - zope-hookable==7.0
      - zope-i18n==5.2
      - zope-i18nmessageid==7.0
      - zope-interface==7.2
      - zope-lifecycleevent==5.1
      - zope-location==5.1
      - zope-pagetemplate==5.1
      - zope-processlifetime==3.1
      - zope-proxy==6.1
      - zope-ptresource==5.1
      - zope-publisher==7.3
      - zope-schema==7.0.1
      - zope-security==7.3
      - zope-sequencesort==5.1
      - zope-site==5.1
      - zope-size==5.1
      - zope-structuredtext==5.0
      - zope-tal==5.1
      - zope-tales==6.1
      - zope-testbrowser==7.0.1
      - zope-testing==5.1
      - zope-traversing==5.1
      - zope-viewlet==5.1
prefix: /opt/conda/envs/Zope

src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_debugError
src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_addHeader src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_expireCookie src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_redirect src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_setCookie_appendCookie src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_setHeader src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__after_setHeader_literal src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__already_wrote src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__empty src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__existing_content_length src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__existing_transfer_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test___str__w_body src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__encode_unicode_no_content_type_uses_default_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__encode_unicode_w_content_type_no_charset_updates_charset src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__encode_unicode_w_content_type_w_charset src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__encode_unicode_w_content_type_w_charset_xml_preamble src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__unauthorized_no_realm src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__unauthorized_w_default_realm src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test__unauthorized_w_realm src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_addHeader_drops_CRLF src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_addHeader_is_case_sensitive src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendCookie_no_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendCookie_w_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendHeader_drops_CRLF src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendHeader_no_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendHeader_no_existing_case_insensative src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendHeader_w_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_appendHeader_w_existing_case_insenstative src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_badRequestError_invalid_parameter_name src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_badRequestError_valid_parameter_name src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_body_already_matches_charset_unchanged src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_body_recodes_to_match_content_type_charset src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_application_header_no_header src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_application_header_with_header src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_no_content_type_header src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_text_header_no_charset_defaults_latin1 src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_unicode_body_application_header src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_charset_unicode_body_application_header_diff_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_defaults src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_w_body src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_w_headers src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_w_status_code src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_w_status_errmsg src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_ctor_w_status_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_exception_500_text src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_exception_Internal_Server_Error src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_expireCookie src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_expireCookie1160 src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_finalize_after_redirect src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_finalize_empty src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_finalize_w_body src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_finalize_w_existing_content_length src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_finalize_w_transfer_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_forbiddenError src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_forbiddenError_w_entry src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_getHeader_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_getHeader_existing_not_literal src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_getHeader_existing_w_literal src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_getHeader_nonesuch src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_insertBase_HTML_no_base_w_head_not_munged src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_insertBase_HTML_w_base_no_head_not_munged src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_insertBase_HTML_w_base_w_head_munged src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_insertBase_not_HTML_no_change src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_isHTML_not_decodable_bytes src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_addHeader src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_expireCookie src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_redirect src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_setCookie_appendCookie src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_setHeader src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_after_setHeader_literal src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_already_wrote src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_empty src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_existing_content_length src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_existing_transfer_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_listHeaders_w_body src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_notFoundError src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_notFoundError_w_entry src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_quoteHTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_alreadyquoted src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_defaults src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_explicit_status src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_nonascii src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_reserved_chars src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_unreserved_chars src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_redirect_w_lock src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_retry src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBase_None src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBase_no_trailing_path src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBase_w_trailing_path src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_2_tuple_w_is_error_converted_to_Site_Error src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_2_tuple_wo_is_error_converted_to_HTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_calls_insertBase src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_existing_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_no_prior_vary_header src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_no_prior_vary_header_but_forced src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_too_short_to_gzip src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_uncompressible_mimetype src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_w_prior_vary_header_incl_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_compression_w_prior_vary_header_wo_encoding src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_empty_unchanged src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_object_with_asHTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_object_with_unicode src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_string_HTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_string_not_HTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_tuple src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_w_bogus_pseudo_HTML src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setBody_w_locking src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_handle_byte_values src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_handle_unicode_values src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_no_attrs src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_no_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_unquoted src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_comment src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_domain src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_existing src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_expires src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_httponly_false_value src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_httponly_true_value src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_path src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_same_site src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_secure_false_value src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setCookie_w_secure_true_value src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setHeader src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setHeader_drops_CRLF src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setHeader_drops_LF src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setHeader_literal src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_BadRequest src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_Forbidden_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_InternalError_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_NotFound_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_ResourceLockedError_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_Unauthorized_exception src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_code src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_setStatus_errmsg src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_unauthorized_no_debug_mode src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_unauthorized_w_debug_mode_no_credentials src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_unauthorized_w_debug_mode_w_credentials src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_write_already_wrote src/ZPublisher/tests/testHTTPResponse.py::HTTPResponseTests::test_write_not_already_wrote
src/ZPublisher/HTTPResponse.py CHANGES.rst
src/ZPublisher/HTTPResponse.py CHANGES.rst