Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replace smtpd with aiosmtpd to make tests work at Python 3.12 #2739

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ graph =
pygraphviz>1.0,!=1.8
rosa =
tests =
aiosmtpd
flake8>=4.0.0
mypy>=0.800
pytest
Expand Down
9 changes: 6 additions & 3 deletions t/lib/bash/test_header
Original file line number Diff line number Diff line change
Expand Up @@ -327,10 +327,13 @@ mock_smtpd_init() {
for SMTPD_PORT in 8025 8125 8225 8325 8425 8525 8625 8725 8825 8925; do
local SMTPD_HOST=localhost:$SMTPD_PORT
local SMTPD_LOG="$TEST_DIR/smtpd.log"
python3 -u -m smtpd -n -c DebuggingServer -d -n "$SMTPD_HOST" \
1>"$SMTPD_LOG" 2>&1 &
python3 -u -m 'aiosmtpd' \
--class aiosmtpd.handlers.Debugging stdout \
--debug --nosetuid \
--listen "${SMTPD_HOST}" \
1>"${SMTPD_LOG}" 2>&1 & # Runs in background
local SMTPD_PID=$!
while ! grep -q 'DebuggingServer started' "$SMTPD_LOG" 2>/dev/null; do
while ! grep -q 'is listening' "$SMTPD_LOG" 2>/dev/null; do
if ps $SMTPD_PID 1>/dev/null 2>&1; then
sleep 1
else
Expand Down
64 changes: 39 additions & 25 deletions t/rosa-svn-post-commit/01-mail-passwd.t
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#-------------------------------------------------------------------------------
. $(dirname $0)/test_header


if ! python3 -c 'import sqlalchemy' 2>/dev/null; then
skip_all '"sqlalchemy" not installed'
fi
Expand All @@ -46,7 +47,7 @@ TEST_CONF="${TEST_SOURCE_DIR}/${TEST_KEY_BASE}.conf"
get_recips() {
local KEY="$1"
LANG=C perl -e \
'print(join(", ", map {"'"'"'" . $_ . "'"'"'"} sort(@ARGV)), "\n")' \
'print(join(", ", map { $_ } sort(@ARGV)), "\n")' \
$(rose config -E -f "${TEST_CONF}" "recips.$KEY")
}

Expand Down Expand Up @@ -95,7 +96,7 @@ chmod +x repos/foo/hooks/post-commit
export LANG=C
rosa db-create -q

tests 30
tests 33
#-------------------------------------------------------------------------------
TEST_KEY="$TEST_KEY_BASE-new"
cat >rose-suite.info <<__ROSE_SUITE_INFO
Expand All @@ -108,15 +109,18 @@ __ROSE_SUITE_INFO
cat /dev/null >"$TEST_SMTPD_LOG"
rosie create -q -y --info-file=rose-suite.info --no-checkout
RECIPS=$(get_recips 'new')
cat ${TEST_SMTPD_LOG} > "/home/h02/tpilling/foo"
wxtim marked this conversation as resolved.
Show resolved Hide resolved
echo $RECIPS >&2
if [[ -z $RECIPS ]]; then
skip 4 'no recipient'
else
# Strip quotation marks from RECIPS
file_grep "$TEST_KEY-smtpd.log.recips" \
"^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
"To: ${RECIPS}" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa000/trunk@1" "$TEST_SMTPD_LOG"
"^Subject: foo-aa000/trunk@1" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*A a/a/0/0/0/trunk/rose-suite.info" "$TEST_SMTPD_LOG"
"^A a/a/0/0/0/trunk/rose-suite.info" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
fi
#-------------------------------------------------------------------------------
Expand All @@ -130,14 +134,16 @@ title=test post commit hook: create
__ROSE_SUITE_INFO
cat /dev/null >"$TEST_SMTPD_LOG"
rosie create -q -y --info-file=rose-suite.info --no-checkout
file_grep "$TEST_KEY-smtpd.log.sender" "^sender: [email protected]" \
file_grep "$TEST_KEY-smtpd.log.sender" "From: [email protected]" \
"$TEST_SMTPD_LOG"
RECIPS=$(get_recips 'new-access-list')
file_grep "$TEST_KEY-smtpd.log.recips" "^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
# Strip quotation marks from RECIPS

file_grep "$TEST_KEY-smtpd.log.recips" "To: $RECIPS" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa001/trunk@2" "$TEST_SMTPD_LOG"
"Subject: foo-aa001/trunk@2" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*A a/a/0/0/1/trunk/rose-suite.info" "$TEST_SMTPD_LOG"
"A a/a/0/0/1/trunk/rose-suite.info" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
#-------------------------------------------------------------------------------
TEST_KEY="${TEST_KEY_BASE}-branch"
Expand All @@ -158,14 +164,17 @@ __ROSE_SUITE_INFO
cat /dev/null >"$TEST_SMTPD_LOG"
svn ci -q -m'foo-aa000: chown' $PWD/roses/foo-aa000/rose-suite.info
rm -fr $PWD/roses/foo-aa000
file_grep "$TEST_KEY-smtpd.log.sender" "^sender: [email protected]" \
file_grep "$TEST_KEY-smtpd.log.sender" "From: [email protected]" \
"$TEST_SMTPD_LOG"
RECIPS=$(get_recips 'mod-owner')
file_grep "$TEST_KEY-smtpd.log.recips" "^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.recips" "To: $RECIPS" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa000/trunk@4" "$TEST_SMTPD_LOG"
"Subject: foo-aa000/trunk@4" "$TEST_SMTPD_LOG"
cat "$TEST_SMTPD_LOG" > /home/h02/tpilling/foo
wxtim marked this conversation as resolved.
Show resolved Hide resolved
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*-owner=$USER.*+owner=root" "$TEST_SMTPD_LOG"
"-owner=$USER" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"+owner=root" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
#-------------------------------------------------------------------------------
TEST_KEY="$TEST_KEY_BASE-mod-access-list"
Expand All @@ -180,14 +189,16 @@ __ROSE_SUITE_INFO
cat /dev/null >"$TEST_SMTPD_LOG"
svn ci -q -m'foo-aa001: chown' $PWD/roses/foo-aa001/rose-suite.info
rm -fr $PWD/roses/foo-aa001
file_grep "$TEST_KEY-smtpd.log.sender" "^sender: [email protected]" \
file_grep "$TEST_KEY-smtpd.log.sender" "From: [email protected]" \
"$TEST_SMTPD_LOG"
RECIPS=$(get_recips 'mod-access-list')
file_grep "$TEST_KEY-smtpd.log.recips" "^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.recips" "To: $RECIPS" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa001/trunk@5" "$TEST_SMTPD_LOG"
"Subject: foo-aa001/trunk@5" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"-access-list=root.*" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*-access-list=root.*+access-list=\\*" "$TEST_SMTPD_LOG"
"+access-list=\\*" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
#-------------------------------------------------------------------------------
TEST_KEY="$TEST_KEY_BASE-mod-access-list-2"
Expand All @@ -202,27 +213,30 @@ __ROSE_SUITE_INFO
cat /dev/null >"$TEST_SMTPD_LOG"
svn ci -q -m'foo-aa001: chown' $PWD/roses/foo-aa001/rose-suite.info
rm -fr $PWD/roses/foo-aa001
file_grep "$TEST_KEY-smtpd.log.sender" "^sender: [email protected]" \
file_grep "$TEST_KEY-smtpd.log.sender" "From: [email protected]" \
"$TEST_SMTPD_LOG"
RECIPS=$(get_recips 'mod-access-list-2')
file_grep "$TEST_KEY-smtpd.log.recips" "^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.recips" "To: $RECIPS" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa001/trunk@6" "$TEST_SMTPD_LOG"
"Subject: foo-aa001/trunk@6" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"-access-list=\\*" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*-access-list=\\*.*+access-list=root $USER2" "$TEST_SMTPD_LOG"
"+access-list=root $USER2" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
#-------------------------------------------------------------------------------
TEST_KEY="$TEST_KEY_BASE-del"
cat /dev/null >"$TEST_SMTPD_LOG"
rosie delete -y -q foo-aa001
file_grep "$TEST_KEY-smtpd.log.sender" "^sender: [email protected]" \
file_grep "$TEST_KEY-smtpd.log.sender" "From: [email protected]" \
"$TEST_SMTPD_LOG"
RECIPS=$(get_recips 'del')
file_grep "$TEST_KEY-smtpd.log.recips" "^recips: \[$RECIPS\]" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.recips" "To: $RECIPS" "$TEST_SMTPD_LOG"
file_grep "$TEST_KEY-smtpd.log.subject" \
"^Data: b'.*Subject: foo-aa001/trunk@7" "$TEST_SMTPD_LOG"
"Subject: foo-aa001/trunk@7" "$TEST_SMTPD_LOG"
cat $TEST_SMTPD_LOG > /home/h02/tpilling/foo
wxtim marked this conversation as resolved.
Show resolved Hide resolved
file_grep "$TEST_KEY-smtpd.log.text" \
"^Data: b'.*D a/a/0/0/1//trunk/'$" "$TEST_SMTPD_LOG"
"D a/a/0/0/1//trunk/" "$TEST_SMTPD_LOG"
file_cmp "$TEST_KEY-rc" "$PWD/rosa-svn-post-commit.rc" <<<'0'
#-------------------------------------------------------------------------------
mock_smtpd_kill
Expand Down