Test Android packaging configuration
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user