mirror of
https://github.com/MengMengCode/VoCat.git
synced 2026-08-20 14:53:42 +08:00
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestInstallerValidatesDatabaseBeforeReplacingBinary(t *testing.T) {
|
|
scriptBytes, err := os.ReadFile("../../scripts/install.sh")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
script := string(scriptBytes)
|
|
mainStart := strings.LastIndex(script, "# --- Main ")
|
|
if mainStart < 0 {
|
|
t.Fatal("installer main section not found")
|
|
}
|
|
main := script[mainStart:]
|
|
validateAt := strings.Index(main, `bootstrap_admin "${VOCAT_TMP}/vocat"`)
|
|
installAt := strings.Index(main, "install_binary")
|
|
if validateAt < 0 {
|
|
t.Fatal("installer does not validate the database with the downloaded binary")
|
|
}
|
|
if installAt < 0 {
|
|
t.Fatal("installer does not install the downloaded binary")
|
|
}
|
|
if validateAt > installAt {
|
|
t.Fatal("installer replaces the current binary before validating database compatibility")
|
|
}
|
|
}
|
|
|
|
func TestInstallerProvidesRequiredQMIUtilities(t *testing.T) {
|
|
scriptBytes, err := os.ReadFile("../../scripts/install.sh")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
script := string(scriptBytes)
|
|
for _, required := range []string{
|
|
"install_qmi_support()",
|
|
"command -v qmicli",
|
|
"command -v qmi-network",
|
|
"apt-get install -y libqmi-utils",
|
|
"dnf install -y libqmi-utils",
|
|
"pacman -Sy --noconfirm libqmi",
|
|
"apk add --no-cache qmi-utils",
|
|
"Could not install or find qmicli/qmi-network",
|
|
} {
|
|
if !strings.Contains(script, required) {
|
|
t.Errorf("installer is missing required QMI handling %q", required)
|
|
}
|
|
}
|
|
mainStart := strings.LastIndex(script, "# --- Main ")
|
|
if mainStart < 0 || !strings.Contains(script[mainStart:], "install_qmi_support") {
|
|
t.Error("installer does not install QMI utilities from its main path")
|
|
}
|
|
}
|