Tests voor AppImage-namen met spaties, zonder gedeelde globale staat#3
Tests voor AppImage-namen met spaties, zonder gedeelde globale staat#3Nozzit wants to merge 1 commit into
Conversation
Tauri leidt de bestandsnaam van het asset af van productName, dus een tool als "Open 3D Studio" levert "Open 3D Studio_0.8.0_amd64.AppImage" op. Deze tests leggen vast dat zo'n naam door de hele keten heen goed gaat: de assetkeuze, het uitlezen van de versie, het installeren, de detectie, en het pad in de menu-snelkoppeling — dat laatste moet tussen aanhalingstekens staan, anders breekt de spatie het Exec-veld op in losse argumenten. De bestaande test zette XDG_DATA_HOME om zijn eigen map te kiezen. Die variabele is procesbreed terwijl Rust tests in threads binnen één proces draait, dus een tweede test die hetzelfde doet overschrijft de eerste. Dat maakte de uitkomst afhankelijk van de volgorde waarin threads toevallig aan de beurt kwamen. scan() en install_appimage() krijgen daarom een variant met een expliciete datamap, die de tests gebruiken; het gedrag van de app zelf verandert niet. Twaalf volledige testruns op rij zijn nu groen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Aanvulling na verificatie: ik heb de nieuwe release-workflow van open-3d-studio in een fork echt laten draaien om te zien hoe het asset uiteindelijk heet. Dat nuanceert de aanleiding van deze PR. Op schijf produceert Tauri inderdaad De tests blijven wat mij betreft zinvol als vangnet: ze dekken het De eigenlijke reden om deze PR te mergen is daarmee vooral het tweede deel: de testopzet gebruikte een procesbrede omgevingsvariabele, waardoor twee tests elkaar overschreven en de uitslag van threadvolgorde afhing. |
Nazit van #2: deze commit stond wel op de branch maar viel buiten de merge.
Waarom
Tauri leidt de bestandsnaam van een release-asset af van
productName. Een tool als Open 3D Studio levert daardoorOpen 3D Studio_0.8.0_amd64.AppImageop — met spaties. Dat kwam boven water bij het opzetten van de release-workflow voor die repo (open-3d-studio#1).Spaties bleken geen probleem, maar dat was tot nu toe niet vastgelegd. Deze tests dekken de hele keten: de assetkeuze, het uitlezen van de versie, het installeren, de detectie, en het pad in de menu-snelkoppeling. Dat laatste is het gevoeligste punt — het pad moet tussen aanhalingstekens staan, anders breekt de spatie het
Exec-veld op in losse argumenten en start de snelkoppeling niets.Een echte fout in de testopzet
Bij het toevoegen viel de bestaande roundtrip-test om. De oorzaak zat niet in de nieuwe test maar in de opzet van de oude: die zette
XDG_DATA_HOMEom zijn eigen tijdelijke map te kiezen. Die variabele is procesbreed, terwijl Rust tests in threads binnen één proces draait, dus een tweede test die hetzelfde doet overschrijft de eerste. De uitkomst hing daarmee af van de volgorde waarin threads toevallig aan de beurt kwamen — met één test viel dat niet op, met twee wel.scan()eninstall_appimage()krijgen daarom een interne variant met een expliciete datamap, die de tests gebruiken. De publieke functies en het gedrag van de app blijven ongewijzigd; alleen de tests hoeven nu geen globale staat meer aan te raken.Verificatie
cargo test: 7 tests groen, en twaalf volledige runs op rij zonder uitval om te bevestigen dat de race echt weg is en niet toevallig goed ging.npm run build: schoon.🤖 Generated with Claude Code