78 lines
3 KiB
YAML
78 lines
3 KiB
YAML
|
---
|
||
|
|
||
|
on: push
|
||
|
|
||
|
jobs:
|
||
|
|
||
|
test:
|
||
|
runs-on: docker
|
||
|
steps:
|
||
|
- uses: https://code.forgejo.org/actions/checkout@v4
|
||
|
- name: Unit Tests
|
||
|
run: |
|
||
|
apt update; apt install -y python3-pip
|
||
|
pip3 install --break-system-packages -e .[test]
|
||
|
python3 -m coverage run --rcfile=setup.cfg -m unittest discover multischleuder
|
||
|
python3 -m coverage combine
|
||
|
python3 -m coverage report --rcfile=setup.cfg
|
||
|
|
||
|
codestyle:
|
||
|
runs-on: docker
|
||
|
steps:
|
||
|
- uses: https://code.forgejo.org/actions/checkout@v4
|
||
|
- name: Code Style
|
||
|
run: |
|
||
|
apt update; apt install -y python3-pip
|
||
|
pip3 install --break-system-packages -e .[test]
|
||
|
pycodestyle multischleuder
|
||
|
|
||
|
mypy:
|
||
|
runs-on: docker
|
||
|
steps:
|
||
|
- uses: https://code.forgejo.org/actions/checkout@v4
|
||
|
- name: Static Type Checks
|
||
|
run: |
|
||
|
apt update; apt install -y python3-pip
|
||
|
pip3 install --break-system-packages -e .[test]
|
||
|
pip3 install --break-system-packages types-PyYAML types-python-dateutil
|
||
|
mypy multischleuder
|
||
|
|
||
|
schleuder:
|
||
|
runs-on: docker
|
||
|
steps:
|
||
|
- uses: https://code.forgejo.org/actions/checkout@v4
|
||
|
- name: Integration Test against schleuder
|
||
|
run: |
|
||
|
echo "postfix postfix/mailname string example.org" | debconf-set-selections
|
||
|
echo "postfix postfix/main_mailer_type string 'Local only'" | debconf-set-selections
|
||
|
apt update; apt install --yes python3-pip schleuder schleuder-cli postfix patch
|
||
|
pip3 install --break-system-packages -e .[test]
|
||
|
/usr/lib/postfix/configure-instance.sh -
|
||
|
echo "virtual_alias_maps = static:root" >> /etc/postfix/main.cf
|
||
|
/usr/sbin/postmulti -i - -p start
|
||
|
schleuder-cli lists list || true
|
||
|
export CERT_FPR=$(schleuder cert fingerprint | cut -d' ' -f4)
|
||
|
echo " - '00000000000000000000000000000000'" >> /etc/schleuder/schleuder.yml
|
||
|
cat > ~/.schleuder-cli/schleuder-cli.yml <<EOF
|
||
|
host: localhost
|
||
|
port: 4443
|
||
|
tls_fingerprint: ${CERT_FPR}
|
||
|
api_key: '00000000000000000000000000000000'
|
||
|
EOF
|
||
|
/usr/bin/schleuder-api-daemon &
|
||
|
sleep 5 # wait for daemons to start
|
||
|
export API_DAEMON_PID=$!
|
||
|
test/prepare-schleuder.sh
|
||
|
pip3 install --break-system-packages -e .
|
||
|
python3 -c 'import os; print(os.listdir(".")); print(); print(os.listdir("test/"))'
|
||
|
python3 -m coverage run --rcfile=setup.cfg -m multischleuder --config test/multischleuder.yml --verbose
|
||
|
# Run a second time - should be idempotent and not trigger any new mails
|
||
|
python3 -m coverage run --rcfile=setup.cfg -m multischleuder --config test/multischleuder.yml --verbose
|
||
|
python3 -m coverage combine
|
||
|
python3 -m coverage report --rcfile=setup.cfg
|
||
|
sleep 5 # wait for mail delivery
|
||
|
test/report.py
|
||
|
kill -9 ${API_DAEMON_PID} || true
|
||
|
/usr/sbin/postmulti -i - -p stop
|
||
|
sleep 5 # wait for daemons to terminate
|