2.6.2: arranque en blanco
- Una instalación nueva no trae carpetas de fábrica: CONFIG_DEFECTO arrancaba con David Reyes, Danney y Camilo apuntando a Z:, W: y N:. raices viene vacía; el diccionario de clientes y discos sigue de serie porque es conocimiento, no estado. - Al abrir no se entra sola en ninguna carpeta: la primera opción del desplegable está vacía y la portada enseña «Tus carpetas» con su último escaneo, para entrar con un clic. - Un config.json ilegible se aparta en config.json.roto-<fecha> en vez de sustituirse por los valores de fábrica en silencio. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
22
probar.py
22
probar.py
@@ -70,6 +70,26 @@ class Reglas(unittest.TestCase):
|
||||
self.assertFalse(R.es_proxy_dir("Entregas"))
|
||||
|
||||
|
||||
class Config(unittest.TestCase):
|
||||
def test_config_roto_se_aparta(self):
|
||||
"""Un config.json ilegible no se pisa en silencio: queda una copia .roto-* y se parte de cero."""
|
||||
tmp = tempfile.mkdtemp(prefix="organilab-cfg-")
|
||||
try:
|
||||
ruta = os.path.join(tmp, "config.json")
|
||||
with open(ruta, "w", encoding="utf-8") as fh:
|
||||
fh.write('{"raices": [ esto no es json')
|
||||
src = open(os.path.join(AQUI, "organizador.py"), encoding="utf-8").read()
|
||||
ini = src.index("def cargar_json(")
|
||||
fin = src.index("def guardar_json(")
|
||||
ns = {"json": json, "os": os, "shutil": shutil, "time": time}
|
||||
exec(src[ini:fin], ns)
|
||||
out = ns["cargar_json"](ruta, {"raices": [], "a": 1})
|
||||
self.assertEqual(out, {"raices": [], "a": 1})
|
||||
self.assertTrue([f for f in os.listdir(tmp) if f.startswith("config.json.roto-")], "no dejó copia del roto")
|
||||
finally:
|
||||
shutil.rmtree(tmp, ignore_errors=True)
|
||||
|
||||
|
||||
class Firma(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
@@ -183,6 +203,8 @@ class Servidor(unittest.TestCase):
|
||||
|
||||
def test_recorrido(self):
|
||||
q = "?raiz=" + urllib.parse.quote(self.raiz)
|
||||
# 0. una instalación nueva abre en blanco: ninguna carpeta puesta de fábrica
|
||||
self.assertEqual(self.get("/api/estado")["raices"], [])
|
||||
# peticiones que no son JSON: fuera
|
||||
rq = urllib.request.Request(self.base + "/api/raices", b"{}", {"Content-Type": "text/plain"})
|
||||
with self.assertRaises(urllib.error.HTTPError) as cm:
|
||||
|
||||
Referencia en una nueva incidencia
Block a user