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
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user