|
| 1 | +# Smoke Test Status |
| 2 | + |
| 3 | +## Current Progress: ~90% Complete |
| 4 | + |
| 5 | +### ✅ Successfully Fixed: |
| 6 | +1. **Audio Crashes**: `Sound = 0` in springsettings.cfg completely disables OpenAL |
| 7 | +2. **SpringBoard Archive**: Fixed modinfo.lua structure (must be at archive root) |
| 8 | +3. **Version Variable**: Changed from `$VERSION` to `test` for CI |
| 9 | +4. **Game Name Matching**: Spring concatenates name + version = "SpringBoard Core test" |
| 10 | +5. **Spring-Headless Discovery**: Using `spring-headless --isolation` (from BAR testing) |
| 11 | +6. **Map Generation Options**: Added MAPOPTIONS (new_map_x, new_map_y) and MODOPTIONS (MapSeed) |
| 12 | + |
| 13 | +### ❌ Current Blocker: Map Texture Loading |
| 14 | + |
| 15 | +**Issue**: Spring segfaults at "Loading Square Textures" stage |
| 16 | + |
| 17 | +**Root Cause**: The minimal SMF map created doesn't have proper DXT1-compressed .smt texture tile files |
| 18 | + |
| 19 | +**Why This Blocks Everything**: |
| 20 | +- Spring requires valid map WITH textures to load |
| 21 | +- LuaUI (which contains RmlUi) only loads AFTER map textures |
| 22 | +- Map generation happens in SpringBoard's Lua code AFTER LuaUI loads |
| 23 | +- Can't verify RmlUi initialization without getting past texture loading |
| 24 | + |
| 25 | +**What We Tried**: |
| 26 | +1. ✗ Mapinfo.lua-only map (Spring requires .smf file) |
| 27 | +2. ✗ Minimal .smf with header only (crashes on texture loading) |
| 28 | +3. ✗ Using test_blank.sdd with empty mapfile (Spring requires actual file) |
| 29 | +4. ✗ Map downloads (403 Forbidden in CI) |
| 30 | +5. ✓ Spring-headless (works better but still crashes on textures) |
| 31 | + |
| 32 | +**What We Need**: |
| 33 | +- Valid .smt texture files with DXT1 compression, OR |
| 34 | +- Access to pre-existing minimal Spring map with working textures, OR |
| 35 | +- Way to make Spring skip texture loading entirely (doesn't exist) |
| 36 | + |
| 37 | +**Creating proper .smt files requires**: |
| 38 | +- Image processing libraries (PIL/Pillow) - not available |
| 39 | +- DXT1 compression tools (libsquish/nvdxt) - not available |
| 40 | +- Or: MapConv tool from Spring ecosystem |
| 41 | + |
| 42 | +## Test Configuration |
| 43 | + |
| 44 | +**Script.txt** (in test-engine/, gitignored): |
| 45 | +``` |
| 46 | +[GAME] |
| 47 | +{ |
| 48 | + GameType=SpringBoard Core test; |
| 49 | + MapName=TestMinimal2x2 v1.0; |
| 50 | + IsHost=1; |
| 51 | + MyPlayerName=TestPlayer; |
| 52 | + [MAPOPTIONS] |
| 53 | + { |
| 54 | + new_map_x=10; |
| 55 | + new_map_y=8; |
| 56 | + } |
| 57 | + [MODOPTIONS] |
| 58 | + { |
| 59 | + MapSeed=42; |
| 60 | + } |
| 61 | + [PLAYER0] |
| 62 | + { |
| 63 | + Name=TestPlayer; |
| 64 | + Team=0; |
| 65 | + IsFromDemo=0; |
| 66 | + Spectator=1; |
| 67 | + } |
| 68 | + [TEAM0] |
| 69 | + { |
| 70 | + TeamLeader=0; |
| 71 | + AllyTeam=0; |
| 72 | + } |
| 73 | + [ALLYTEAM0] |
| 74 | + { |
| 75 | + } |
| 76 | +} |
| 77 | +``` |
| 78 | + |
| 79 | +**Command**: |
| 80 | +```bash |
| 81 | +spring-headless --isolation --write-dir /absolute/path/to/test-data script.txt |
| 82 | +``` |
| 83 | + |
| 84 | +**What Works**: |
| 85 | +- SpringBoard Core loads successfully |
| 86 | +- All archives scan properly (285ms vs hanging with symlinks) |
| 87 | +- Game initialization completes through "Loading Models" |
| 88 | +- Gets to texture loading stage consistently |
| 89 | + |
| 90 | +**Crash Point**: |
| 91 | +``` |
| 92 | +[t=00:00:02.277888] [LoadScreen::SetLoadMessage] text="Loading Square Textures" |
| 93 | +Segmentation fault |
| 94 | +``` |
| 95 | + |
| 96 | +## Next Steps |
| 97 | + |
| 98 | +1. Find/create valid minimal Spring map with proper texture files |
| 99 | +2. Or: Package existing small map (if licensing allows) |
| 100 | +3. Or: Use Spring map creation tools in CI to generate valid map |
| 101 | +4. Once map loads: Verify LuaUI initializes |
| 102 | +5. Once LuaUI loads: Verify RmlUi messages in infolog |
| 103 | +6. Update CI workflow to use spring-headless with --isolation flag |
| 104 | + |
| 105 | +## References |
| 106 | + |
| 107 | +- BAR headless testing: https://github.com/beyond-all-reason/Beyond-All-Reason/tree/master/tools/headless_testing |
| 108 | +- Spring SMF format: https://springrts.com/wiki/Mapdev:SMF_format |
| 109 | +- Spring config vars: `./spring --list-config-vars | grep Sound` |
0 commit comments