Versione del gioco (src/version.js, 0.1.0): immagini, musiche e voci con ?v=<versione> e cache lunga in nginx; scripts/bump.sh e make bump per le versioni nuove

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ks2K99uqCZjAxvy7Rdj1R
This commit is contained in:
2026-10-25 10:10:51 +01:00
co-authored by Claude Opus 5.5
parent 4467909237
commit 12c6357cbc
12 changed files with 98 additions and 19 deletions
+5 -4
View File
@@ -1,6 +1,7 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { loadBackground, hasBackground, RETRIES, RETRY_WAIT, flameFrame } from '../src/engine/render.js';
import { versioned } from '../src/version.js';
// Un Image finto: fallisce le prime `fails` volte per ogni indirizzo, e conta le richieste.
function fakeImage(fails) {
@@ -20,11 +21,11 @@ test('uno sfondo che non arriva si riprova dopo un po\', non a ogni fotogramma,
try {
assert.equal(await loadBackground(src), false);
assert.equal(await loadBackground(src), false, 'subito dopo non si riprova');
assert.equal(asked.get(src), 1);
assert.equal(asked.get(versioned(src)), 1);
assert.equal(await loadBackground(src, Date.now() + RETRY_WAIT + 1), false, 'dopo l\'attesa si riprova');
assert.equal(asked.get(src), 2);
assert.equal(asked.get(versioned(src)), 2);
assert.equal(await loadBackground(src, Date.now() + RETRY_WAIT + 1), false, 'la seconda attesa è più lunga');
assert.equal(asked.get(src), 2);
assert.equal(asked.get(versioned(src)), 2);
assert.equal(await loadBackground(src, Date.now() + 2 * RETRY_WAIT + 1), true);
assert.ok(hasBackground(src));
} finally {
@@ -36,7 +37,7 @@ test('uno sfondo che non c\'è proprio si lascia stare dopo pochi tentativi', as
const asked = fakeImage(Infinity), src = 'x/non-esiste.png', later = () => Date.now() + 3600e3;
try {
for (let i = 0; i < 10; i++) await loadBackground(src, later());
assert.equal(asked.get(src), RETRIES + 1);
assert.equal(asked.get(versioned(src)), RETRIES + 1);
} finally {
delete globalThis.Image;
}