"""Coleta::toc() (usava each(), removida no PHP 8) deve produzir a mesma saida do 7.4."""
import subprocess
import unittest

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


def _rodar(container: str, raiz: str) -> str:
    r = subprocess.run(["docker", "exec", container, "php", SCRIPT, raiz], capture_output=True, text=True, encoding="utf8")
    return (r.stdout + r.stderr).strip()


class ColetaTocTest(unittest.TestCase):
    def test_toc_igual_ao_74(self):
        base = _rodar("php74_val", "/var/www/html/accia")
        self.assertTrue(base.startswith("[["), base)
        self.assertEqual(_rodar("php83_apache", "/var/www/html/accia-php83"), base)

    def test_toc_codigo_migrado_no_74(self):
        self.assertEqual(_rodar("php74_val", "/var/www/html/accia-php83"), _rodar("php74_val", "/var/www/html/accia"))


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