mirror of
https://gitlab.com/hacklab01/pivilion.git
synced 2026-08-06 16:08:22 +00:00
Fix early-boot hostname application
This commit is contained in:
parent
b5e19f08f6
commit
0f20889948
5 changed files with 130 additions and 4 deletions
|
|
@ -62,6 +62,8 @@ boot_config_contract() {
|
|||
grep -q 'pivilion_boot_config_path' "$ROOT/usr/local/lib/pivilion/config-sync.sh" &&
|
||||
grep -q 'pivilion.conf.last-good' "$ROOT/usr/local/lib/pivilion/config-sync.sh" &&
|
||||
grep -q 'derive_psk' "$ROOT/usr/local/lib/pivilion/config-sync.sh" &&
|
||||
grep -q 'pivilion_apply_hostname' "$ROOT/usr/local/lib/pivilion/config-sync.sh" &&
|
||||
! grep -R -q --include='*.sh' --include='*.service' 'hostnamectl' "$ROOT/install.sh" "$ROOT/usr" "$ROOT/etc" &&
|
||||
grep -q 'Before=.*NetworkManager' "$ROOT/etc/systemd/system/pivilion-config.service" &&
|
||||
grep -q 'config-sync.sh set PIVILION_MODE' "$ROOT/usr/local/bin/hotspot" &&
|
||||
grep -q 'config-sync.sh set-wifi' "$ROOT/usr/local/bin/pikey"
|
||||
|
|
@ -83,6 +85,7 @@ shellcheck_scripts() {
|
|||
}
|
||||
|
||||
run "configuration and state fixtures" "$ROOT/tests/test-common.sh"
|
||||
run "early-boot hostname application" "$ROOT/tests/test-hostname.sh"
|
||||
run "shell syntax" shell_syntax
|
||||
run "PHP syntax" php_syntax
|
||||
run "systemd unit syntax" systemd_syntax
|
||||
|
|
|
|||
55
tests/test-hostname.sh
Executable file
55
tests/test-hostname.sh
Executable file
|
|
@ -0,0 +1,55 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
TMP=$(mktemp -d)
|
||||
trap 'rm -rf "$TMP"' EXIT
|
||||
|
||||
export PIVILION_HOSTNAME_FILE="$TMP/hostname"
|
||||
export PIVILION_HOSTS_FILE="$TMP/hosts"
|
||||
export PIVILION_HOSTNAME_COMMAND="$TMP/hostname-command"
|
||||
export MOCK_HOSTNAME_STATE="$TMP/kernel-hostname"
|
||||
export MOCK_HOSTNAME_CALLS="$TMP/hostname-calls"
|
||||
|
||||
cat > "$PIVILION_HOSTS_FILE" <<'EOF'
|
||||
127.0.0.1 localhost
|
||||
127.0.1.1 old-name old-alias
|
||||
192.0.2.1 example.test
|
||||
127.0.1.1 stale-duplicate
|
||||
EOF
|
||||
printf 'old-name\n' > "$PIVILION_HOSTNAME_FILE"
|
||||
printf 'old-name\n' > "$MOCK_HOSTNAME_STATE"
|
||||
|
||||
cat > "$PIVILION_HOSTNAME_COMMAND" <<'EOF'
|
||||
#!/bin/sh
|
||||
if [ "${1:-}" = -s ]; then cat "$MOCK_HOSTNAME_STATE"; exit 0; fi
|
||||
printf '%s\n' "$1" > "$MOCK_HOSTNAME_STATE"
|
||||
printf '%s\n' "$1" >> "$MOCK_HOSTNAME_CALLS"
|
||||
EOF
|
||||
chmod +x "$PIVILION_HOSTNAME_COMMAND"
|
||||
|
||||
source "$ROOT/usr/local/lib/pivilion/hostname.sh"
|
||||
|
||||
for mode in hotspot onion; do
|
||||
name="pivilion-$mode"
|
||||
pivilion_apply_hostname "$name"
|
||||
[ "$(cat "$PIVILION_HOSTNAME_FILE")" = "$name" ]
|
||||
[ "$(awk '$1 == "127.0.1.1" { print $2 }' "$PIVILION_HOSTS_FILE")" = "$name" ]
|
||||
[ "$(awk '$1 == "127.0.1.1" { count++ } END { print count+0 }' "$PIVILION_HOSTS_FILE")" -eq 1 ]
|
||||
[ "$("$PIVILION_HOSTNAME_COMMAND" -s)" = "$name" ]
|
||||
|
||||
before=$(sha256sum "$PIVILION_HOSTNAME_FILE" "$PIVILION_HOSTS_FILE")
|
||||
inodes=$(stat -c '%i' "$PIVILION_HOSTNAME_FILE" "$PIVILION_HOSTS_FILE")
|
||||
calls=$(wc -l < "$MOCK_HOSTNAME_CALLS")
|
||||
pivilion_apply_hostname "$name"
|
||||
[ "$before" = "$(sha256sum "$PIVILION_HOSTNAME_FILE" "$PIVILION_HOSTS_FILE")" ]
|
||||
[ "$inodes" = "$(stat -c '%i' "$PIVILION_HOSTNAME_FILE" "$PIVILION_HOSTS_FILE")" ]
|
||||
[ "$calls" -eq "$(wc -l < "$MOCK_HOSTNAME_CALLS")" ]
|
||||
done
|
||||
|
||||
grep -Fqx '192.0.2.1 example.test' "$PIVILION_HOSTS_FILE"
|
||||
|
||||
PIVILION_HOSTNAME_FILE="$TMP/missing/hostname"
|
||||
export PIVILION_HOSTNAME_FILE
|
||||
if pivilion_apply_hostname broken >"$TMP/failure.out" 2>&1; then exit 1; fi
|
||||
grep -q 'Could not create a temporary file' "$TMP/failure.out"
|
||||
Loading…
Add table
Add a link
Reference in a new issue