Add fake-memory-reader tests for the scanner/poller
process.go's boundary functions (readMemory, findModuleBase, productVersion, findProcessID, openProcess, closeProcessHandle) become swappable package variables, same pattern as testExeDir in totals.go. process_test.go builds a fakeProcess (an in-memory buffer addressed like real process memory) to exercise signature scanning, scanModule's chunk-overlap logic, PlayerIns confirmation by memory read (the path Linux always takes), the save-slot read, the double-read name confirmation rule, and rejection of raw-pointer-as-UTF16 garbage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2ba312a833
commit
66aba2fff2
3 files changed
+321
-25
No files matched your search
@@ -122,11 +122,16 @@ local (el caso de una PC con el OBS en Linux mientras se juega en otra),
|
||||
3s sin nunca llegar a `openProcess` — `setcap`/`ptrace_scope` no entran
|
||||
en juego para nada en ese caso.
|
||||
|
||||
**Pendiente, no parte de este cambio:** testear el escáner/poller con un
|
||||
lector de memoria falso. El split ya lo habilita, pero escribir esos
|
||||
tests (siguiendo el patrón de variable de paquete intercambiable que ya
|
||||
usa `testExeDir` en `totals.go`, no una interfaz nueva) queda para
|
||||
después — ver Pendientes.
|
||||
El split habilita testear el escáner/poller sin una PC con el juego
|
||||
abierto: `readMemoryFn`, `findModuleBaseFn` y `productVersionFn`
|
||||
(`process.go`) son variables de paquete que por defecto apuntan a las
|
||||
implementaciones de plataforma, mismo patrón que `testExeDir` en
|
||||
`totals.go`. `process_test.go` las pisa con un `fakeProcess` — un buffer
|
||||
en memoria direccionado como memoria de proceso real — y ejercita el
|
||||
escaneo de las tres firmas, el overlap de `scanModule` entre chunks de 1
|
||||
MiB, la confirmación de `PlayerIns` por lectura (el camino que toma
|
||||
Linux siempre, al no haber versión), el slot de guardado, y la regla de
|
||||
doble lectura para confirmar el nombre del personaje.
|
||||
|
||||
## Offsets de memoria
|
||||
|
||||
@@ -272,10 +277,5 @@ No son preferencias de estilo. Cada una costó un bug en producción.
|
||||
está en inglés de punta a punta, ver "Idioma del código" arriba.
|
||||
- La identificación por nombre (respaldo cuando no se lee el slot) mezcla
|
||||
personajes homónimos. Documentado, no resuelto.
|
||||
- Testear el escáner/poller (`process.go`) con un lector de memoria
|
||||
falso. El split multiplataforma (ver "Multiplataforma" arriba) ya lo
|
||||
habilita — falta escribir los tests en sí, con una variable de paquete
|
||||
intercambiable por función de frontera (mismo patrón que `testExeDir`
|
||||
en `totals.go`), no una interfaz nueva.
|
||||
- El README debería mencionar que meter todo adentro de una VPN sigue
|
||||
siendo una opción perfectamente válida, TLS+pinning aparte.
|
||||
Reference in new issue
Block a user