-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-validate-env.sh
More file actions
executable file
·110 lines (80 loc) · 4.47 KB
/
test-validate-env.sh
File metadata and controls
executable file
·110 lines (80 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env bash
# Android Plugin - Environment Validation Tests
# Tests that the Android environment is properly configured in --pure mode
# (matches CI execution environment)
set -euo pipefail
script_dir="$(cd "$(dirname "$0")" && pwd)"
. "$script_dir/../test-framework.sh"
setup_logging
echo "========================================"
echo "Android Environment Validation (--pure)"
echo "========================================"
android_example="$script_dir/../../../examples/android"
# Helper to run commands in pure devbox environment
run_pure() {
(cd "$android_example" && devbox run --pure bash -c "$1" 2>/dev/null)
}
# ============================================================================
# Test: setup command
# ============================================================================
start_test "setup command completes in --pure mode"
(cd "$android_example" && devbox run --pure setup >/dev/null 2>&1)
exit_code=$?
assert_success "[ $exit_code -eq 0 ]" "setup should exit with 0"
# ============================================================================
# Test: SDK environment variables
# ============================================================================
start_test "ANDROID_SDK_ROOT is set"
sdk_root=$(run_pure 'echo $ANDROID_SDK_ROOT')
assert_not_empty "$sdk_root" "ANDROID_SDK_ROOT should be set"
start_test "ANDROID_SDK_ROOT directory exists"
assert_success "run_pure 'test -d \"\$ANDROID_SDK_ROOT\"'" "directory should exist"
start_test "ANDROID_HOME matches ANDROID_SDK_ROOT"
home=$(run_pure 'echo $ANDROID_HOME')
assert_equal "$sdk_root" "$home" "ANDROID_HOME should match ANDROID_SDK_ROOT"
start_test "ANDROID_AVD_HOME is set and writable"
assert_success "run_pure 'test -n \"\$ANDROID_AVD_HOME\" && test -w \"\$ANDROID_AVD_HOME\"'" "AVD home should be writable"
# ============================================================================
# Test: Tools in PATH
# ============================================================================
start_test "adb is in PATH"
assert_success "run_pure 'command -v adb'" "adb should be available"
start_test "emulator is in PATH"
assert_success "run_pure 'command -v emulator'" "emulator should be available"
start_test "avdmanager is in PATH"
assert_success "run_pure 'command -v avdmanager'" "avdmanager should be available"
start_test "android.sh is in PATH"
assert_success "run_pure 'command -v android.sh'" "android.sh should be available"
start_test "gradle is in PATH"
assert_success "run_pure 'command -v gradle'" "gradle should be available"
# ============================================================================
# Test: SDK directories
# ============================================================================
start_test "platform-tools directory exists"
assert_success "run_pure 'test -d \"\$ANDROID_SDK_ROOT/platform-tools\"'" "platform-tools should exist"
start_test "emulator directory exists"
assert_success "run_pure 'test -d \"\$ANDROID_SDK_ROOT/emulator\"'" "emulator directory should exist"
start_test "build-tools directory exists"
assert_success "run_pure 'test -d \"\$ANDROID_SDK_ROOT/build-tools\"'" "build-tools should exist"
# ============================================================================
# Test: Device configuration
# ============================================================================
start_test "ANDROID_DEVICES_DIR is set"
assert_success "run_pure 'test -n \"\$ANDROID_DEVICES_DIR\" && test -d \"\$ANDROID_DEVICES_DIR\"'" "devices dir should exist"
start_test "device definitions exist"
assert_success "run_pure 'ls \"\$ANDROID_DEVICES_DIR\"/*.json >/dev/null 2>&1'" "should have device JSON files"
# ============================================================================
# Test: Skip flag
# ============================================================================
start_test "setup respects ANDROID_SKIP_SETUP=1"
output=$(cd "$android_example" && devbox run --pure -e ANDROID_SKIP_SETUP=1 setup 2>&1)
assert_contains "$output" "Skipping Android setup" "should skip when flag is set"
# ============================================================================
# Test: Idempotency
# ============================================================================
start_test "setup is idempotent (can run 3 times)"
(cd "$android_example" && devbox run --pure setup >/dev/null 2>&1 && devbox run --pure setup >/dev/null 2>&1 && devbox run --pure setup >/dev/null 2>&1)
exit_code=$?
assert_success "[ $exit_code -eq 0 ]" "multiple runs should succeed"
# Summary
test_summary