96 lines
2.3 KiB
Go
96 lines
2.3 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,
|
|
".",
|
|
}
|
|
|
|
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,
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|