Pular para o conteúdo

O ponto de entrada

app.df monta, main.df sobe — e por que importar um módulo não pode ter efeito.

Todo código no topo de um módulo roda no adopt. Por isso um módulo que sobe um servidor no topo trava qualquer teste que o importe: o teste nunca termina. A regra é separar quem monta de quem roda.

text
projeto/
  forge.toml       entry = "src/main.df"
  src/
    app.df         monta: rotas, regras — sem efeito no topo
    main.df        roda: le o ambiente, 'ignite', 'OS.exit'
  tests/
    app_test.df    adopt ../src/app — e nada sobe
dataforge
// app.df — so declara
adopt Kiln
server api on 0:
    route GET "/":
        respond json {"ok": yes}

// main.df  o unico com efeito
//     adopt ./app as App
//     ignite App.api at "0.0.0.0"

r := Kiln.test(api, "GET", "/")
assert r["status"] is 200
No topo de um móduloPode?
declarar ações, records, constantessim
abrir uma conexão preguiçosasim — uma ação que abre no primeiro uso
subir servidor, ler input, OS.exitnão — só no ponto de entrada
imprimirevite: aparece em todo teste que importar