- 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
40 lines
1.9 KiB
Python
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()
|