36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
![]() |
# Copyright (c) Twisted Matrix Laboratories.
|
||
|
# See LICENSE for details.
|
||
|
|
||
|
"""
|
||
|
Hypothesis strategies for values related to L{twisted.python}.
|
||
|
"""
|
||
|
|
||
|
from hypothesis.strategies import SearchStrategy, characters, text
|
||
|
from typing_extensions import Literal
|
||
|
|
||
|
|
||
|
def systemdDescriptorNames() -> SearchStrategy[str]:
|
||
|
"""
|
||
|
Build strings that are legal values for the systemd
|
||
|
I{FileDescriptorName} field.
|
||
|
"""
|
||
|
# systemd.socket(5) says:
|
||
|
#
|
||
|
# > Names may contain any ASCII character, but must exclude control
|
||
|
# > characters and ":", and must be at most 255 characters in length.
|
||
|
control_characters: Literal["Cc"] = "Cc"
|
||
|
return text(
|
||
|
# The docs don't say there is a min size so I'm guessing...
|
||
|
min_size=1,
|
||
|
max_size=255,
|
||
|
alphabet=characters(
|
||
|
# These constraints restrict us to ASCII.
|
||
|
min_codepoint=0,
|
||
|
max_codepoint=127,
|
||
|
# This one excludes control characters.
|
||
|
blacklist_categories=(control_characters,),
|
||
|
# And this excludes the separator.
|
||
|
blacklist_characters=(":",),
|
||
|
),
|
||
|
)
|