Files
keepassgo/buildapk/config_test.go
T
2026-03-31 22:34:36 -07:00

102 lines
2.5 KiB
Go

package buildapk
import (
"os"
"path/filepath"
"slices"
"testing"
)
func TestDefaultConfigGogioArgs(t *testing.T) {
t.Parallel()
cfg := DefaultConfig()
want := []string{
"-target", "android",
"-buildmode", "exe",
"-appid", DefaultAppID,
"-o", DefaultAPKOut,
"-version", DefaultVersion,
"-minsdk", DefaultMinSDK,
"-targetsdk", DefaultTargetSDK,
"-icon", DefaultIconPath,
".",
}
if got := cfg.GogioArgs(); !slices.Equal(got, want) {
t.Fatalf("GogioArgs() = %v, want %v", got, want)
}
}
func TestValidateAcceptsCompleteAndroidToolchainLayout(t *testing.T) {
t.Parallel()
root := t.TempDir()
sdkRoot := filepath.Join(root, "sdk")
ndkRoot := filepath.Join(root, "ndk")
javaHome := filepath.Join(root, "java")
mkdirAll(t, filepath.Join(javaHome, "bin"))
mkdirAll(t, filepath.Join(sdkRoot, "cmdline-tools", "latest", "bin"))
mkdirAll(t, filepath.Join(sdkRoot, "platforms", "android-"+DefaultTargetSDK))
mkdirAll(t, filepath.Join(sdkRoot, "build-tools"))
mkdirAll(t, ndkRoot)
makeExecutable(t, filepath.Join(javaHome, "bin", "java"))
makeExecutable(t, filepath.Join(sdkRoot, "cmdline-tools", "latest", "bin", "sdkmanager"))
cfg := Config{
SDKRoot: sdkRoot,
NDKRoot: ndkRoot,
JavaHome: javaHome,
AppID: DefaultAppID,
APKOut: DefaultAPKOut,
Version: DefaultVersion,
MinSDK: DefaultMinSDK,
TargetSDK: DefaultTargetSDK,
IconPath: filepath.Join(root, "icon.png"),
}
if err := os.WriteFile(cfg.IconPath, []byte("png"), 0o644); err != nil {
t.Fatalf("WriteFile(%q) error = %v", cfg.IconPath, err)
}
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate() error = %v, want nil", err)
}
}
func TestValidateRejectsMissingPrerequisites(t *testing.T) {
t.Parallel()
root := t.TempDir()
cfg := Config{
SDKRoot: filepath.Join(root, "missing-sdk"),
NDKRoot: filepath.Join(root, "missing-ndk"),
JavaHome: filepath.Join(root, "missing-java"),
AppID: DefaultAppID,
APKOut: DefaultAPKOut,
Version: DefaultVersion,
MinSDK: DefaultMinSDK,
TargetSDK: DefaultTargetSDK,
}
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want missing prerequisite error")
}
}
func mkdirAll(t *testing.T, path string) {
t.Helper()
if err := os.MkdirAll(path, 0o755); err != nil {
t.Fatalf("MkdirAll(%q) error = %v", path, err)
}
}
func makeExecutable(t *testing.T, path string) {
t.Helper()
if err := os.WriteFile(path, []byte("#!/bin/sh\n"), 0o755); err != nil {
t.Fatalf("WriteFile(%q) error = %v", path, err)
}
}