aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xtests/checks/apk.sh41
-rwxr-xr-xtests/checks/deb.sh25
-rwxr-xr-xtests/checks/homebrew.sh26
-rw-r--r--tests/internet/etc/dkimproxyout.conf.in9
-rw-r--r--tests/internet/etc/dovecot/dovecot.conf.in54
-rw-r--r--tests/internet/etc/postfix/main.cf.in40
-rw-r--r--tests/internet/etc/postfix/master.cf51
-rw-r--r--tests/internet/etc/sasl2/smtpd.conf3
-rw-r--r--tests/internet/key.txt1
-rw-r--r--tests/internet/system.scm54
-rw-r--r--tests/internet/tests.scm72
-rw-r--r--tests/local/etc/postfix/main.cf25
-rw-r--r--tests/local/etc/postfix/master.cf30
-rw-r--r--tests/local/system.scm27
-rw-r--r--tests/tests.scm71
-rw-r--r--tests/unit.scm18
-rwxr-xr-xtests/vm-check.sh127
17 files changed, 98 insertions, 576 deletions
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 = </etc/letsencrypt/live/@HOSTNAME@/fullchain.pem
-ssl_key = </etc/letsencrypt/live/@HOSTNAME@/privkey.pem
-ssl_dh = </var/lib/dovecot/dhparam.pem
-
-base_dir = /var/run/dovecot
-state_dir = /var/lib/dovecot
-
-verbose_proctitle = yes
-
-mail_location = maildir:/var/mail/%u:INBOX=/var/mail/%u:LAYOUT=fs
-
-namespace inbox {
- inbox = yes
- mailbox Drafts {
- special_use = \Drafts
- auto = subscribe
- }
- mailbox Sent {
- special_use = \Sent
- auto = subscribe
- }
- mailbox Archive {
- special_use = \Archive
- auto = subscribe
- }
- mailbox Junk {
- special_use = \Junk
- auto = subscribe
- autoexpunge = 30d
- }
- mailbox Trash {
- special_use = \Trash
- auto = subscribe
- }
-}
diff --git a/tests/internet/etc/postfix/main.cf.in b/tests/internet/etc/postfix/main.cf.in
deleted file mode 100644
index 9cc2f4d..0000000
--- a/tests/internet/etc/postfix/main.cf.in
+++ /dev/null
@@ -1,40 +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
-
-
-myhostname = @HOSTNAME@
-
-smtpd_use_tls = yes
-smtpd_tls_cert_file = /etc/letsencrypt/live/@HOSTNAME@/fullchain.pem
-smtpd_tls_key_file = /etc/letsencrypt/live/@HOSTNAME@/privkey.pem
-smtp_use_tls = $smtpd_use_tls
-smtp_tls_cert_file = $smtpd_tls_cert_file
-smtp_tls_key_file = $smtpd_tls_key_file
-
-smtp_tls_security_level = may
-
-recipient_delimiter = +
-
-smtpd_sasl_tls_security_options = noanonymous
-smtpd_tls_security_level = may
-smtpd_tls_auth_only = yes
-
-smtpd_relay_restrictions = $smtpd_recipient_restrictions
-smtpd_recipient_restrictions = permit_mynetworks,
- permit_sasl_authenticated, reject_unauth_destination
-smtpd_sasl_auth_enable = yes
-cyrus_sasl_config_path = /etc/sasl2
-debug_peer_list = 127.0.0.1
-
-milter_default_action = accept
diff --git a/tests/internet/etc/postfix/master.cf b/tests/internet/etc/postfix/master.cf
deleted file mode 100644
index 5c25fd9..0000000
--- a/tests/internet/etc/postfix/master.cf
+++ /dev/null
@@ -1,51 +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
- -o content_filter=dksign:[127.0.0.1]:10027
-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
-
-submission inet n - n - - smtpd -o syslog_name=postfix/submission
- -o smtpd_tls_security_level=encrypt
- -o content_filter=dksign:[127.0.0.1]:10027
-
-dksign unix - - n - - smtp
- -o syslog_name=postfix/dkimproxyout-listen
- -o smtp_send_xforward_command=yes
- -o smtp_discard_ehlo_keywords=8bitmime,starttls
-
-127.0.0.1:10028 inet n - n - - smtpd
- -o syslog_name=postfix/dkimproxyout-relay
- -o content_filter=
- -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
- -o smtpd_helo_restrictions=
- -o smtpd_client_restrictions=
- -o smtpd_sender_restrictions=
- -o smtpd_recipient_restrictions=permit_mynetworks,reject
- -o mynetworks=127.0.0.0/8
- -o smtpd_authorized_xforward_hosts=127.0.0.0/8
diff --git a/tests/internet/etc/sasl2/smtpd.conf b/tests/internet/etc/sasl2/smtpd.conf
deleted file mode 100644
index af2ac43..0000000
--- a/tests/internet/etc/sasl2/smtpd.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-pwcheck_method: saslauthd
-saslauthd_path: /var/run/saslauthd/mux
-log_level: 7
diff --git a/tests/internet/key.txt b/tests/internet/key.txt
deleted file mode 100644
index a39f765..0000000
--- a/tests/internet/key.txt
+++ /dev/null
@@ -1 +0,0 @@
-key-contents
diff --git a/tests/internet/system.scm b/tests/internet/system.scm
index a7d090c..b6f5b1c 100644
--- a/tests/internet/system.scm
+++ b/tests/internet/system.scm
@@ -1,63 +1,17 @@
(use-modules
- ((org euandre queue) #:prefix q:)
- ((org euandre packages) #:prefix pkg:)
+ ((org euandre packages) #:prefix packages:)
(gnu))
(use-package-modules)
-(use-service-modules
- certbot
- cgit
- dns
- mail
- networking
- security
- ssh)
-
-(define (path s)
- (string-append (dirname (dirname (dirname (current-filename)))) "/" s))
-
-(define +users+
- `(("user1" "I'm a user" ())
- ("another" "Description" ("wheel") ,(path "tests/internet/key.txt"))))
-
-(define-public papod-service-type
- (pkg:service-type-for 'papod
- pkg:<papod-configuration>
- (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'