Files
jhonny-editor/code/engine/testes/test_aplicar_plano_de_edicao.py
T
João Henrique fd3440bcc4 feat: corrigida a resolução do Node.js ao executar planos Python p
- corrigida a resolução do Node.js ao executar planos Python pelo painel CEP

Resumo:
- 2 arquivos alterados
- 1 novos
- 1 modificados
- 0 removidos

 1 file changed, 38 insertions(+), 1 deletion(-)

Arquivos:
  - code/engine/aplicar_plano_de_edicao.py
  - code/engine/testes/test_aplicar_plano_de_edicao.py
2026-09-09 12:04:28 -04:00

40 lines
1.9 KiB
Python

"""Testes da resolução do executável Node usada pelo aplicador de planos."""
import os
import unittest
from unittest.mock import patch
from engine import aplicar_plano_de_edicao
class TesteResolucaoDoNode(unittest.TestCase):
"""Garante que a engine não dependa do PATH herdado pelo painel CEP."""
def test_prioriza_executavel_configurado_no_ambiente(self):
"""Usa o caminho explícito quando o painel ou sistema o fornece."""
with patch.dict(os.environ, {"PREMIERE_NODE_BIN": "/custom/node"}, clear=False), patch(
"engine.aplicar_plano_de_edicao.os.path.isfile", return_value=True
), patch("engine.aplicar_plano_de_edicao.os.access", return_value=True):
self.assertEqual(aplicar_plano_de_edicao.resolver_caminho_do_node(), "/custom/node")
def test_usa_caminho_conhecido_quando_node_nao_esta_no_path(self):
"""Encontra a instalação Homebrew mesmo com PATH incompleto."""
with patch.dict(os.environ, {}, clear=True), patch(
"engine.aplicar_plano_de_edicao.shutil.which", return_value=None
), patch("engine.aplicar_plano_de_edicao.os.path.isfile", side_effect=lambda caminho: caminho == "/opt/homebrew/bin/node"), patch(
"engine.aplicar_plano_de_edicao.os.access", return_value=True
):
self.assertEqual(aplicar_plano_de_edicao.resolver_caminho_do_node(), "/opt/homebrew/bin/node")
def test_informa_instalacao_ausente(self):
"""Levanta um erro explicativo quando nenhum executável existe."""
with patch.dict(os.environ, {}, clear=True), patch(
"engine.aplicar_plano_de_edicao.shutil.which", return_value=None
), patch("engine.aplicar_plano_de_edicao.os.path.isfile", return_value=False):
with self.assertRaisesRegex(FileNotFoundError, "Node.js não encontrado"):
aplicar_plano_de_edicao.resolver_caminho_do_node()
if __name__ == "__main__":
unittest.main()