Skip to content

Tests voor AppImage-namen met spaties, zonder gedeelde globale staat#3

Open
Nozzit wants to merge 1 commit into
OpenAEC-Foundation:mainfrom
Nozzit:claude/appimage-spaces-tests
Open

Tests voor AppImage-namen met spaties, zonder gedeelde globale staat#3
Nozzit wants to merge 1 commit into
OpenAEC-Foundation:mainfrom
Nozzit:claude/appimage-spaces-tests

Conversation

@Nozzit

@Nozzit Nozzit commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

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 daardoor Open 3D Studio_0.8.0_amd64.AppImage op — 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_HOME om 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() en install_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

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>
@Nozzit

Nozzit commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

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 Open 3D Studio_0.8.0_amd64.AppImage met spaties, afgeleid van productName. Maar in de GitHub-release komt het asset terecht als Open.3D.Studio_0.8.0_amd64.AppImage — GitHub vervangt spaties in assetnamen door punten. De installer haalt de naam uit de API, dus in de praktijk krijgt hij nooit een naam met spaties binnen.

De tests blijven wat mij betreft zinvol als vangnet: ze dekken het Exec-veld in de menu-snelkoppeling, dat wél een pad met spaties kan bevatten zodra een AppImage buiten GitHub om op de schijf belandt. Maar het is eerlijker om ze te zien als bescherming tegen een randgeval dan als reparatie van een probleem dat vandaag optreedt.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant