658a8541e9
SamiOS CI / lint-and-test (push) Successful in 14s
Major update adding full desktop environment support, complete branding suite, and project infrastructure: Desktop (WSL): - KDE Plasma + SDDM + Dolphin/Konsole/Kate/Firefox setup script - Windows 11 dark/light color schemes - PipeWire audio stack - WSLg-compatible launch script - SamiOS CLI tool (v0.2.0) with desktop command Branding: - Logos: face-on-pyramid with and without text (500px) - Icons: square + launcher (256/512/1024px) + SVG vector - Wallpapers: 1920x1080, 4K, clean variant (PIL-generated) - GRUB theme: full cobalt blue (#1424CE) theme with pyramid background - SDDM theme: SamiOS login screen configuration - Branding README with palette, typography, usage guidelines Fonts: - Sami Grotesk (Helvetica-like) as default system/UI font - Sami Sans as secondary - Full Sami font family support (excluding 7777 personal branding) - fontconfig rules mapping Helvetica/Arial → Sami Grotesk - Font policy enforcement in samios CLI Infrastructure: - Automated installer (samios-installer.sh): partition, format, pacstrap, bootloader - PKGBUILD for samios-branding package - Test suite: shell tests for profiledef, packages, pacman.conf, CLI, font policy - Makefile: test, lint, check, build, clean targets - Gitea Actions CI workflow - Voice integration architecture document (SamiType × SamiOS) - Updated roadmap reflecting completed phases
60 lines
1.9 KiB
Bash
Executable File
60 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Test: packages.x86_64 format and content
|
|
# Validates package list format, required packages, and font policy.
|
|
|
|
source "$(dirname "$0")/test_helper.sh"
|
|
|
|
suite "packages.x86_64 tests"
|
|
|
|
PKGLIST="$PROFILE_DIR/packages.x86_64"
|
|
|
|
assert_file_exists "packages.x86_64 exists" "$PKGLIST"
|
|
|
|
# Every non-comment, non-empty line must be a valid package name
|
|
assert "all package names match valid format (alphanumeric, dashes, +)" \
|
|
bash -c '
|
|
while IFS= read -r line; do
|
|
# skip comments and blank lines
|
|
[[ -z "$line" || "$line" == \#* ]] && continue
|
|
# validate: letters, digits, dashes, underscores, plus signs
|
|
if ! grep -qE "^[a-zA-Z0-9][a-zA-Z0-9_+.-]*$" <<< "$line"; then
|
|
echo "invalid package name: $line"
|
|
exit 1
|
|
fi
|
|
done < "'"$PKGLIST"'"
|
|
'
|
|
|
|
# Required core packages
|
|
assert_contains "includes base" "$PKGLIST" "^base$"
|
|
assert_contains "includes linux" "$PKGLIST" "^linux$"
|
|
assert_contains "includes linux-firmware" "$PKGLIST" "^linux-firmware$"
|
|
assert_contains "includes networkmanager" "$PKGLIST" "^networkmanager$"
|
|
|
|
# Font policy: no actual package (non-comment line) containing '7777'
|
|
assert "no package with '7777' in name" \
|
|
bash -c '
|
|
if grep -vE "^\s*#" "'"$PKGLIST"'" | grep -i "7777"; then
|
|
exit 1
|
|
fi
|
|
'
|
|
|
|
# No blank trailing package lines (exactly one trailing newline)
|
|
assert "no trailing blank lines in package list" \
|
|
bash -c '
|
|
content="$(cat "'"$PKGLIST"'")"
|
|
# wc -l should equal number of non-empty lines
|
|
[ "$(tail -c1 "'"$PKGLIST"'" | wc -l)" -le 1 ]
|
|
'
|
|
|
|
# No duplicate packages
|
|
assert "no duplicate package entries" \
|
|
bash -c '
|
|
dups=$(grep -vE "^\s*#|^\s*$" "'"$PKGLIST"'" | sort | uniq -d)
|
|
if [ -n "$dups" ]; then
|
|
echo "duplicates: $dups"
|
|
exit 1
|
|
fi
|
|
'
|
|
|
|
print_summary
|