"""Toda classe de models/components/rbac/controllers carrega no 8.3 (migrado) com as mesmas falhas do 7.4 (original).

Pega conflitos de heranca static/nao-static (fatal so na carga da classe, invisivel ao php -l).
"""
import re
import subprocess
import unittest

SCRIPT = "/var/www/html/accia-php83/tools/migracao-php83/php/carrega_todas.php"


def _falhas(container, raiz):
    saida = subprocess.run(["docker", "exec", container, "php", SCRIPT, raiz],
                           capture_output=True, text=True, encoding="utf8").stdout
    total = int(re.search(r"classes=(\d+)", saida).group(1))
    return total, sorted(re.findall(r"^FALHA (\S+):", saida, re.M))


class ClassesTest(unittest.TestCase):
    def test_mesmas_falhas_de_carga_que_o_74(self):
        total_b, base = _falhas("php74_val", "/var/www/html/accia")
        total_a, alvo = _falhas("php83_apache", "/var/www/html/accia-php83")
        self.assertGreater(total_a, 400)
        self.assertEqual(alvo, base)


if __name__ == "__main__":
    unittest.main()
