#!/usr/bin/env python3

import difflib
import tempfile
import subprocess

from pathlib import Path

CWD = Path(__file__).resolve().parent

TEST_APP_NAME = "gotosocial_ynh"
TEST_APP_REPO = "https://github.com/yunohost-apps/gotosocial_ynh"
TEST_APP_COMMIT_ID = "8f788213b363a46a5b6faa8f844d86d4adac9446"


def diff_files(file_a: Path, file_b: Path) -> bool:
    lines_a = file_a.open(encoding="utf-8").readlines()
    lines_b = file_b.open(encoding="utf-8").readlines()

    diffs = list(
        difflib.unified_diff(
            lines_a, lines_b, fromfile="README.before.md", tofile="README.after.md"
        )
    )
    print("".join(diffs))
    return len(diffs) == 0


def test_running_make_readme():
    with tempfile.TemporaryDirectory() as tempdir:
        tempdir = Path(tempdir)
        DIRECTORY = tempdir / TEST_APP_NAME

        subprocess.check_call(["git", "clone", "-q", TEST_APP_REPO, DIRECTORY])
        subprocess.check_call(
            ["git", "checkout", "-q", TEST_APP_COMMIT_ID], cwd=DIRECTORY
        )

        # Now run test...
        subprocess.check_call([CWD.parent / "make_readme.py", DIRECTORY])

        assert diff_files(CWD / "README.md", DIRECTORY / "README.md")
        assert diff_files(CWD / "README_fr.md", DIRECTORY / "README_fr.md")


if __name__ == "__main__":
    test_running_make_readme()