From 46422e73b86f3c0899345dfdcbbf621771b5f666 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Wed, 2 Sep 2026 16:18:23 -0300 Subject: Depend on pkgs and move code there; drop other distros but guix --- tests/checks/apk.sh | 41 ---------- tests/checks/deb.sh | 25 ------ tests/checks/homebrew.sh | 26 ------ tests/internet/etc/dkimproxyout.conf.in | 9 -- tests/internet/etc/dovecot/dovecot.conf.in | 54 ------------ tests/internet/etc/postfix/main.cf.in | 40 --------- tests/internet/etc/postfix/master.cf | 51 ------------ tests/internet/etc/sasl2/smtpd.conf | 3 - tests/internet/key.txt | 1 - tests/internet/system.scm | 54 +----------- tests/internet/tests.scm | 72 ---------------- tests/local/etc/postfix/main.cf | 25 ------ tests/local/etc/postfix/master.cf | 30 ------- tests/local/system.scm | 27 ++---- tests/tests.scm | 71 ++++++++++++++++ tests/unit.scm | 18 ++++ tests/vm-check.sh | 127 ----------------------------- 17 files changed, 98 insertions(+), 576 deletions(-) delete mode 100755 tests/checks/apk.sh delete mode 100755 tests/checks/deb.sh delete mode 100755 tests/checks/homebrew.sh delete mode 100644 tests/internet/etc/dkimproxyout.conf.in delete mode 100644 tests/internet/etc/dovecot/dovecot.conf.in delete mode 100644 tests/internet/etc/postfix/main.cf.in delete mode 100644 tests/internet/etc/postfix/master.cf delete mode 100644 tests/internet/etc/sasl2/smtpd.conf delete mode 100644 tests/internet/key.txt delete mode 100644 tests/internet/tests.scm delete mode 100644 tests/local/etc/postfix/main.cf delete mode 100644 tests/local/etc/postfix/master.cf create mode 100644 tests/tests.scm create mode 100644 tests/unit.scm delete mode 100755 tests/vm-check.sh (limited to 'tests') diff --git a/tests/checks/apk.sh b/tests/checks/apk.sh deleted file mode 100755 index 5acb479..0000000 --- a/tests/checks/apk.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -set -eu - - -while getopts 'k:' flag; do - case "$flag" in - k) - KEY="$OPTARG" - ;; - *) - exit 2 - ;; - esac -done -shift $((OPTIND - 1)) - -if [ -z "${KEY:-}" ]; then - echo 'Missing "-k KEY" argument.' >&2 - exit 2 -fi - -set -x - -REPO="$1/alpine" - -if command -v remembering; then - echo 'remembering(1) is already installed.' >&2 - exit 1 -fi - -if apk info remembering; then - echo 'remembering(1) is already in apk(8) list.' >&2 - exit 1 -fi - -wget -qO- "$REPO"/"$KEY".rsa.pub | doas tee /etc/apk/keys/"$KEY".rsa.pub -printf '%s\n' "$REPO" | doas tee -a /etc/apk/repositories -doas apk add remembering - -remembering --help -remembering -V diff --git a/tests/checks/deb.sh b/tests/checks/deb.sh deleted file mode 100755 index 9a0ba7d..0000000 --- a/tests/checks/deb.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -set -eu -set -x - - -REPO="$1/debian" -KEY="$(printf '%s' "${REPO#https://}" | sed 's|/|-|g').asc" - -if command -v remembering; then - echo 'remembering(1) is already installed.' >&2 - exit 1 -fi - -if apt info remembering; then - echo 'remembering(1) is already in apt(8) list.' >&2 - exit 1 -fi - -wget -qO- "$REPO"/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/"$KEY" -echo "deb $REPO ./" | sudo tee -a /etc/apt/sources.list -sudo apt update -sudo apt install remembering - -remembering --help -remembering -V diff --git a/tests/checks/homebrew.sh b/tests/checks/homebrew.sh deleted file mode 100755 index ba33be8..0000000 --- a/tests/checks/homebrew.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -# Load brew(1) -# shellcheck source=/dev/null -. ~/.profile -set -eu -set -x - - -REPO="$1" - -if command -v remembering; then - echo 'remembering(1) is already installed.' >&2 - exit 1 -fi - -if brew info remembering; then - echo 'remembering(1) is already in the list of taps.' >&2 - exit 1 -fi - -brew tap org/euandre "$REPO" -brew install remembering-0-1-2 - -remembering --help -remembering -V diff --git a/tests/internet/etc/dkimproxyout.conf.in b/tests/internet/etc/dkimproxyout.conf.in deleted file mode 100644 index 3ee2466..0000000 --- a/tests/internet/etc/dkimproxyout.conf.in +++ /dev/null @@ -1,9 +0,0 @@ -listen 127.0.0.1:10027 -relay 127.0.0.1:10028 - -domain @HOSTNAME@ -selector dkimproxyout - -signature dkim(c=relaxed/relaxed,a=rsa-sha256) - -keyfile /var/lib/dkimproxyout/private.key diff --git a/tests/internet/etc/dovecot/dovecot.conf.in b/tests/internet/etc/dovecot/dovecot.conf.in deleted file mode 100644 index 6ac013d..0000000 --- a/tests/internet/etc/dovecot/dovecot.conf.in +++ /dev/null @@ -1,54 +0,0 @@ -protocols = imap - -default_internal_user = dovecot -default_internal_group = dovecot -default_login_user = dovenull -auth_mechanisms = plain login -auth_username_format = %n - -passdb { - driver = shadow -} -userdb { - driver = passwd -} -service auth-worker { - group = etc-shadow -} - -ssl = required -ssl_cert = - (pkg:papod-configuration) - '())) +(use-service-modules) (operating-system (host-name "a-internet-test-host") - (skeletons pkg:skeletons) - (users (append (pkg:user-accounts +users+) %base-user-accounts)) (services (append - (list - (service ntp-service-type) - (service dhcpcd-service-type) - ;; (service fail2ban-service-type) - (service pkg:binder-service-type) - (service pkg:glaze-service-type) - (service pkg:hsts-service-type) - (service pkg:untls-service-type) - (service pkg:wscat-service-type) - (service papod-service-type) - (service knot-service-type - (q:knot-zones-configuration "euandre.org" "1.2.3.4" "1:2:3:4:5:6:7:8")) - (service openssh-service-type - (q:openssh-default-configuration (pkg:users->keys +users+))) - (service certbot-service-type (q:tld-certbot-configuration "tld.local")) - (service cgit-service-type q:cgit-pre-configuration) - (service pkg:syskeep-service-type) - (service pkg:cicd-service-type) - (service q:shadow-group-service-type) - (service q:dkimproxyout-service-type) - (service q:cyrus-sasl-service-type) - (service q:dovecot-service-type) - (service q:internet-postfix-service-type) - (service mail-aliases-service-type '())) - pkg:base-services)) + (list) + %base-services)) (bootloader (bootloader-configuration (bootloader grub-bootloader))) diff --git a/tests/internet/tests.scm b/tests/internet/tests.scm deleted file mode 100644 index c4ffe85..0000000 --- a/tests/internet/tests.scm +++ /dev/null @@ -1,72 +0,0 @@ -(use-modules - ((org euandre packages) #:prefix pkg:) - (gnu) - (gnu tests) - (gnu system vm) - (guix profiles)) -(use-service-modules - networking) - - - -(define test-git-os - (simple-operating-system - (service dhcpcd-service-type) - (service pkg:git-service-type - (pkg:git-configuration - (run-server? #t))) - (simple-service 'mkdir-srv-dir activation-service-type - #~(mkdir-p "/srv/git")))) - -(define (test-git-fn) - (let* ((os (marionette-operating-system - test-git-os - #:imported-modules - '((gnu services herd)))) - (vm (virtual-machine - (operating-system os) - (port-forwardings - '())))) - (define test - (with-imported-modules '((gnu build marionette)) - #~(begin - (use-modules - ((srfi srfi-64) #:prefix t:) - ((gnu build marionette) #:prefix mrntt:)) - (define manette - (mrntt:make-marionette (list #$vm))) - (t:test-runner-current (mrntt:system-test-runner #$output)) - (t:test-begin "git-daemon-server") - (t:test-assert "Git daemon service running" - (mrntt:marionette-eval - '(begin - (use-modules - ((gnu services herd) #:prefix herd:)) - (herd:start-service 'git)) - manette)) - (t:test-assert "Git daemon TCP port ready" - (mrntt:wait-for-tcp-port 9418 manette)) - (t:test-end)))) - (gexp->derivation "git-service-type-test" test))) - -(define test-git - (system-test - (name "git") - (description "Test custom Git service") - (value (test-git-fn)))) - -(define tests - (list - test-git)) - -(define (system-test->manifest-entry test) - (manifest-entry - (name - (pkg:str "test." - (system-test-name test))) - (version "0") - (item test))) - -(manifest - (map system-test->manifest-entry - tests)) diff --git a/tests/local/etc/postfix/main.cf b/tests/local/etc/postfix/main.cf deleted file mode 100644 index 143ba5a..0000000 --- a/tests/local/etc/postfix/main.cf +++ /dev/null @@ -1,25 +0,0 @@ -compatibility_level = 3.6 - -queue_directory = /var/spool/postfix -data_directory = /var/lib/postfix -mail_owner = postfix -setgid_group = postdrop - -header_checks = regexp:{ { /^Received:.*/ IGNORE }, { /^X-Originating-IP:.*/ IGNORE } } - -mail_spool_directory = /var/mail/ - -message_size_limit = 102400000 -mailbox_size_limit = 5120000000 - -smtp_sender_dependent_authentication = yes -sender_dependent_relayhost_maps = hash:/var/lib/private/postfix/relayhosts-maps -smtp_sasl_password_maps = hash:/var/lib/private/postfix/sasl-password -smtp_sasl_auth_enable = yes -smtp_sasl_security_options = noanonymous -smtp_sasl_mechanism_filter = login, plain -smtp_use_tls = yes -smtp_tls_security_level = encrypt -smtp_tls_note_starttls_offer = yes - -mynetworks = 127.0.0.0/8 diff --git a/tests/local/etc/postfix/master.cf b/tests/local/etc/postfix/master.cf deleted file mode 100644 index 2cc4b02..0000000 --- a/tests/local/etc/postfix/master.cf +++ /dev/null @@ -1,30 +0,0 @@ -# ============================================================================================================ -# service type private unpriv chroot wakeup maxproc command + args -# (yes) (yes) (no) (never) (100) -# ============================================================================================================= - -anvil unix - - n - 1 anvil -bounce unix - - n - 0 bounce -cleanup unix n - n - 0 cleanup -defer unix - - n - 0 bounce -discard unix - - n - - discard -error unix - - n - - error -flush unix n - n 1000? 0 flush -lmtp unix - - n - - lmtp -local unix - n n - - local -pickup unix n - n 60 1 pickup -proxymap unix - - n - - proxymap -proxywrite unix - - n - 1 proxymap -qmgr unix n - n 300 1 qmgr -relay unix - - n - - smtp -retry unix - - n - - error -rewrite unix - - n - - trivial-rewrite -scache unix - - n - 1 scache -showq unix n - n - - showq -smtp inet n - n - - smtpd -o syslog_name=postfix/smtp -smtp unix - - n - - smtp -tlsmgr unix - - n 1000? 1 tlsmgr -trace unix - - n - 0 bounce -verify unix - - n - 1 verify -virtual unix - n n - - virtual -postlog unix-dgram n - n - 1 postlogd diff --git a/tests/local/system.scm b/tests/local/system.scm index 67c9292..4cb7550 100644 --- a/tests/local/system.scm +++ b/tests/local/system.scm @@ -1,33 +1,16 @@ (use-modules - ((org euandre packages) #:prefix pkg:) - ((org euandre queue) #:prefix q:) - ((xyz euandreh heredoc) #:prefix heredoc:) + ((org euandre packages) #:prefix packages:) (gnu)) (use-package-modules) -(use-service-modules - networking) -(heredoc:enable-syntax) +(use-service-modules) + + (operating-system (host-name "a-local-test-host") (services (append - (list - (service dhcpcd-service-type) - (service pkg:git-service-type) - (service q:local-postfix-service-type - (q:postfix-configuration - (main.cf-extra #"- - smtp_sender_dependent_authentication = yes - sender_dependent_relayhost_maps = hash:/var/lib/private/postfix/relayhosts-maps - smtp_sasl_password_maps = hash:/var/lib/private/postfix/sasl-password - smtp_sasl_auth_enable = yes - smtp_sasl_security_options = noanonymous - smtp_sasl_mechanism_filter = login, plain - smtp_use_tls = yes - smtp_tls_security_level = encrypt - smtp_tls_note_starttls_offer = yes - "#)))) + (list) %base-services)) (bootloader (bootloader-configuration diff --git a/tests/tests.scm b/tests/tests.scm new file mode 100644 index 0000000..852a186 --- /dev/null +++ b/tests/tests.scm @@ -0,0 +1,71 @@ +(use-modules + ((im papo packages) #:prefix pkgs:) + ((org euandre packages) #:prefix packages:) + (gnu) + (gnu tests) + (gnu system vm) + (guix gexp) + (guix profiles)) +(use-package-modules + tls) +(use-service-modules + certbot + mail + mcron + networking) + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Helpers functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define (test-for name description test-name os test-fn) + (system-test + (name name) + (description description) + (value + (gexp->derivation + (string-append test-name ".test") + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules + ((gnu build marionette) #:prefix mrntt:) + ((srfi srfi-64) #:prefix t:)) + (let ((manette (mrntt:make-marionette + (list + #$(virtual-machine + (operating-system + (marionette-operating-system + os + #:imported-modules + '((gnu services herd))))))))) + (t:test-runner-current (mrntt:system-test-runner #$output)) + (t:test-begin #$name) + (#$test-fn manette) + (t:test-end)))))))) + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Service tests ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +(define tests + (list)) + +(define (system-test->manifest-entry test) + (manifest-entry + (name + (pkgs:str "test." + (system-test-name test))) + (version "0") + (item test))) + +(manifest + (map system-test->manifest-entry + tests)) diff --git a/tests/unit.scm b/tests/unit.scm new file mode 100644 index 0000000..b363d36 --- /dev/null +++ b/tests/unit.scm @@ -0,0 +1,18 @@ +(use-modules + ((org euandre packages) #:prefix packages:) + ((srfi srfi-64) #:prefix t:)) + + + +(define test-fns + (list)) + +(define (main) + (t:test-begin "unit") + (for-each (lambda (fn) (fn)) test-fns) + (let ((n-fail (t:test-runner-fail-count (t:test-runner-get)))) + (t:test-end) + (when (not (= 0 n-fail)) + (exit 1)))) + +(main) diff --git a/tests/vm-check.sh b/tests/vm-check.sh deleted file mode 100755 index 695e4d7..0000000 --- a/tests/vm-check.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/bin/sh -set -eu - -usage() { - cat <<-'EOF' - Usage: - vm-check.sh [-x] -t TYPE -H HOST -r REMOTE [-- ARGS] - vm-check.sh -h - EOF -} - -help() { - cat <<-'EOF' - - - Options: - -x shutdown the VM before running checks - -t TYPE the type of VM being tested - -H HOST the name of the host to SSH into - -r REMOTE the base address of the remote package-repository - -h, --help show this message - - - - Run end-to-end tests of the package repository. - EOF -} - - -for flag in "$@"; do - case "$flag" in - --) - break - ;; - --help) - usage - help - exit - ;; - *) - ;; - esac -done - -SHUTDOWN=false -while getopts 'xt:H:r:h' flag; do - case "$flag" in - x) - SHUTDOWN=true - ;; - t) - TYPE="$OPTARG" - ;; - H) - HOST="$OPTARG" - ;; - r) - REMOTE="$OPTARG" - ;; - h) - usage - help - exit - ;; - *) - usage >&2 - exit 2 - ;; - esac -done -shift $((OPTIND - 1)) - -eval "$(assert-arg -- "${TYPE:-}" '-t TYPE')" -eval "$(assert-arg -- "${HOST:-}" '-H HOST')" -eval "$(assert-arg -- "${REMOTE:-}" '-r REMOTE')" - - -SEP="$(color -c blacki ':')" - -pre() { - # Same as: - # sed -u "s|^|[$CMD]: |" - # but the "-u" option is not POSIX - IFS='' - while read -r line; do - printf '%s%s\n' "$1" "$line" - done -} - -pre_guest() { - pre "$(color -c green "$HOST")$SEP$(color -c yellow "$TYPE")$SEP " -} - -pre_host() { - pre "$(color -c blueb "$0")$SEP " -} - -STATUS_F="$(mkstemp)" -shutdown() { - STATUS="$(cat "$STATUS_F" || echo 1)" - rm -f "$STATUS_F" - if [ "$SHUTDOWN" = true ]; then - vm down "$HOST" 2>&1 | pre_host - fi - exit "$STATUS" -} -trap shutdown EXIT - -{ - - { - if [ "$SHUTDOWN" = true ]; then - vm down "$HOST" - fi - vm up "$HOST" - untill -m5 -n5 ssh "$HOST" uptime - scp tests/checks/"$TYPE".sh "$HOST":check.sh - } 2>&1 | pre_host - - { - STATUS=0 - # shellcheck disable=2029 - ssh "$HOST" sh check.sh "$@" "$REMOTE" || STATUS=$? - printf '%s' "$STATUS" > "$STATUS_F" - } 2>&1 | pre_guest - -} | ts -s '%.s' -- cgit v1.3