Files
samios/tests/test_packages.sh
T
Sami Ahmed 658a8541e9
SamiOS CI / lint-and-test (push) Successful in 14s
v0.2.0: WSL desktop, branding, GRUB theme, CI, installer, fonts, voice architecture
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
2026-08-11 03:39:47 -07:00

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