- criada a guia Trilhas com processamento em lote e progresso por música - simplificada a guia Trilhas para ocultar a configuração interna dos modelos Resumo: - 12 arquivos alterados - 1 novos - 11 modificados - 0 removidos 11 files changed, 173 insertions(+), 41 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/analisar_trilhas.py - code/engine/carregar_plano_de_edicao.py - code/engine/executar_scanner.py - code/engine/persistencia/__init__.py - code/engine/persistencia/repositorio_de_trilhas.py - code/engine/testes/test_carregar_plano_de_edicao.py - code/engine/testes/test_executar_scanner.py - code/engine/testes/test_repositorio_de_trilhas.py
66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
"""Testes do ponto de entrada usado pelo painel CEP para o Scanner."""
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
from engine.dominio import Clipe, IntervaloDeTempo
|
|
from engine.executar_scanner import serializar_clipe_para_relatorio
|
|
|
|
|
|
class TesteDoPontoDeEntradaDoScanner(unittest.TestCase):
|
|
"""Garante que o Scanner possa ser iniciado pelo caminho usado no painel."""
|
|
|
|
def test_ponto_de_entrada_direto_carrega_o_pacote_engine(self):
|
|
"""Executa o arquivo diretamente sem falhar ao importar ``engine``."""
|
|
caminho_do_script = Path(__file__).resolve().parents[1] / "executar_scanner.py"
|
|
resultado = subprocess.run(
|
|
[sys.executable, str(caminho_do_script), "--help"],
|
|
cwd=caminho_do_script.parent.parent,
|
|
capture_output=True,
|
|
text=True,
|
|
check=False,
|
|
)
|
|
|
|
self.assertEqual(resultado.returncode, 0, resultado.stderr)
|
|
self.assertIn("usage:", resultado.stdout)
|
|
self.assertNotIn("No module named 'engine'", resultado.stderr)
|
|
|
|
def test_ponto_de_entrada_disponibiliza_extracao_de_audio_para_complementos(self):
|
|
"""Garante que o complemento de locutores encontre o extrator de áudio."""
|
|
caminho_do_script = Path(__file__).resolve().parents[1] / "executar_scanner.py"
|
|
resultado = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"-c",
|
|
"import executar_scanner; assert executar_scanner.ExtracaoDeAudio",
|
|
],
|
|
cwd=caminho_do_script.parent,
|
|
capture_output=True,
|
|
text=True,
|
|
check=False,
|
|
)
|
|
|
|
self.assertEqual(resultado.returncode, 0, resultado.stderr)
|
|
|
|
def test_relatorio_de_audio_preserva_caminho_e_intervalo_da_origem(self):
|
|
"""Mantém no artefato os dados necessários para aplicar o plano depois."""
|
|
clipe = Clipe(
|
|
identificador="clipe-1",
|
|
nome="0E6A8829.MP4",
|
|
intervalo_na_timeline=IntervaloDeTempo(0.0, 100.0),
|
|
intervalo_na_origem=IntervaloDeTempo(20.0, 120.0),
|
|
arquivo="/Volumes/Midia/0E6A8829.MP4",
|
|
)
|
|
|
|
dados = serializar_clipe_para_relatorio(clipe)
|
|
|
|
self.assertEqual(dados["sourceFile"], "/Volumes/Midia/0E6A8829.MP4")
|
|
self.assertEqual(dados["inPoint"], 20.0)
|
|
self.assertEqual(dados["outPoint"], 120.0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|