Files
hearth/test/package/windows-devshell/test/standalone-structure.sh
T
2026-05-02 15:31:26 +00:00

65 lines
2.0 KiB
Bash

#!/bin/dash
set -eu
log info "Checking windows-devshell standalone script structure..."
# Check file exists
if ! [ -f "${windowsDevShellStandalone}" ]; then
log error "windows-devshell standalone script not found"
exit 1
fi
# Check it's a PowerShell script (should NOT have hardcoded #Requires -RunAsAdministrator)
if head -1 "${windowsDevShellStandalone}" | grep -q "#Requires -RunAsAdministrator"; then
log error "Script should not hardcode #Requires -RunAsAdministrator"
exit 1
fi
# Check it contains base64 placeholder replacement (should be actual base64 now)
if grep -q "@LINUX_DEVSHELL_BASE64@" "${windowsDevShellStandalone}"; then
log error "Base64 placeholder was not replaced"
exit 1
fi
# Check it contains the base64 decode logic
if ! grep -q "FromBase64String" "${windowsDevShellStandalone}"; then
log error "Script missing base64 decode logic"
exit 1
fi
# Check it contains WSL installation logic
if ! grep -q "wsl --status" "${windowsDevShellStandalone}"; then
log error "Script missing WSL status check"
exit 1
fi
if ! grep -q "wsl --install" "${windowsDevShellStandalone}"; then
log error "Script missing WSL install command"
exit 1
fi
# Check it contains admin check
if ! grep -q "Administrator" "${windowsDevShellStandalone}"; then
log error "Script missing admin privilege check"
exit 1
fi
log success "Standalone script has correct structure"
# Verify the embedded base64 is valid by checking it's non-empty and only contains base64 chars
base64_content=$(grep '^\$linuxDevShellBase64 = ' "${windowsDevShellStandalone}" | sed 's/.*= "//;s/"$//')
if [ -z "$base64_content" ]; then
log error "Embedded base64 content is empty"
exit 1
fi
# Check base64 content length is reasonable (should be at least a few hundred chars for the linux script)
content_len=${#base64_content}
if [ "$content_len" -lt 100 ]; then
log error "Embedded base64 content too short ($content_len chars)"
exit 1
fi
log success "Embedded base64 content looks valid ($content_len chars)"
log success "Standalone structure test passed"