Author SHA1 Message Date
klemek 069998f8ac tests: more coverage
Python Lint CI / ruff-format-check (push) Successful in 57s
Python Lint CI / ty (push) Successful in 57s
Python Lint CI / ruff (push) Successful in 58s
Docker CI / docker-build (push) Successful in 1m43s
Python Test CI / coverage (push) Failing after 1m59s
2026-05-05 15:10:03 +02:00
5 changed files with 21 additions and 37 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "stapler"
version = "1.2.7"
version = "1.2.4"
description = "Static pages as simple as a gzip file"
requires-python = ">=3.14"
dependencies = [
+14 -20
View File
@@ -27,7 +27,6 @@ if typing.TYPE_CHECKING:
class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
SANITIZE_REGEX = re.compile(r"[^\x20-\x7F]+")
timeout = 10
REQUEST_COUNT = 0
@typing.override
def __init__(
@@ -42,7 +41,6 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
self.__host: str | None = None
self.__in_size: int | None = None
self.https: bool = params.https
self.__class__.REQUEST_COUNT += 1
super().__init__(*args, **kwargs)
with contextlib.suppress(Exception):
self.connection.close()
@@ -94,20 +92,6 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
fmt = "%s - " + format
self.logger.error(fmt, self.address_string(), *args)
def _pre_log_request(self) -> None: # pragma: no cover
args = (
"...",
self.address_string(),
self.host,
format(self.__class__.REQUEST_COUNT, "07_d"),
self.SANITIZE_REGEX.sub("?", self.requestline),
)
fmt = "%s - %s - %s - %s - %s"
if self.in_size > 0:
args = (*args, self.in_size)
fmt += " - %s"
self.logger.debug(fmt, *args)
@typing.override
def log_request(self, code: str = "?", size: str = "-") -> None: # ty:ignore[invalid-method-override] # pragma: no cover
if isinstance(code, http.HTTPStatus):
@@ -127,10 +111,9 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
code,
self.address_string(),
self.host,
format(self.__class__.REQUEST_COUNT, "07_d"),
self.SANITIZE_REGEX.sub("?", self.requestline),
)
fmt = "%s - %s - %s - %s - %s"
fmt = "%s - %s - %s - %s"
if size != "":
args = (*args, size)
fmt += " - %s"
@@ -253,6 +236,19 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
and len(self.headers[key]) > 0
)
def _pre_log_request(self) -> None: # pragma: no cover
args = (
"...",
self.address_string(),
self.host,
self.SANITIZE_REGEX.sub("?", self.requestline),
)
fmt = "%s - %s - %s - %s"
if self.in_size > 0:
args = (*args, self.in_size)
fmt += " - %s"
self.logger.debug(fmt, *args)
def server_signature(self) -> str:
return self.server_version + "\n\n" + STAPLER_ASCII + "\n"
@@ -304,8 +300,6 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, BaseHandler):
self.__target_spa: str | None = None
try:
super().__init__(*args, directory=params.data_dir, **kwargs, params=params) # ty:ignore[unknown-argument]
except (BrokenPipeError, ConnectionResetError) as e:
self.logger.error("Connection lost: %s", str(e)) # noqa: TRY400
except:
self.logger.exception("Could not handle request")
+5
View File
@@ -59,6 +59,11 @@ class TestDataDir(BaseTestCase):
self.__create_path("test_1")
self.assertIsNone(self.data_dir.get_file("test_1", ".value"))
def test_get_file_cannot_read(self) -> None:
self.__create_path("test_1", {".value": "value"})
(self.tmp_path / "test_1" / ".value").chmod(0o300)
self.assertIsNone(self.data_dir.get_file("test_1", ".value"))
def test_get_file_invalid_path(self) -> None:
self.assertIsNone(self.data_dir.get_file("test_1", ".value"))
-15
View File
@@ -177,21 +177,6 @@ class TestRequestHandler(BaseHandlerTestCase):
token_manager=self.token_manager,
)
def test_handle_disconnect_silently(self) -> None:
with self.patch("http.server.BaseHTTPRequestHandler.__init__") as mock:
mock.side_effect = BrokenPipeError
logging.basicConfig(level=logging.CRITICAL)
RequestHandler(
unittest.mock.MagicMock(),
"127.0.0.1",
unittest.mock.MagicMock(),
params=Parameters(
data_dir=self.get_tmp_dir(), certbot_www=str(self.certbot_www)
),
registry=self.registry,
token_manager=self.token_manager,
)
def test_do_head_forward(self) -> None:
handler = self._get_handler()
with (
Generated
+1 -1
View File
@@ -203,7 +203,7 @@ wheels = [
[[package]]
name = "stapler"
version = "1.2.7"
version = "1.2.4"
source = { editable = "." }
dependencies = [
{ name = "requests" },