"""Test git"""

import re

import pytest


@pytest.mark.usefixtures("ds1_copy")
def test_git(runner, yadm_cmd, paths):
    """Test series of passthrough git commands

    Passthru unknown commands to Git
    Git command 'add' - badfile
    Git command 'add'
    Git command 'status'
    Git command 'commit'
    Git command 'log'
    """

    # passthru unknown commands to Git
    run = runner(command=yadm_cmd("bogus"))
    assert run.failure
    assert "git: 'bogus' is not a git command." in run.err
    assert "See 'git --help'" in run.err
    assert run.out == ""

    # git command 'add' - badfile
    run = runner(command=yadm_cmd("add", "-v", "does_not_exist"))
    assert run.code == 128
    assert "pathspec 'does_not_exist' did not match any files" in run.err
    assert run.out == ""

    # git command 'add'
    newfile = paths.work.join("test_git")
    newfile.write("test_git")
    run = runner(command=yadm_cmd("add", "-v", str(newfile)))
    assert run.success
    assert run.err == ""
    assert "add 'test_git'" in run.out

    # git command 'status'
    run = runner(command=yadm_cmd("status"))
    assert run.success
    assert run.err == ""
    assert re.search(r"new file:\s+test_git", run.out)

    # git command 'commit'
    run = runner(command=yadm_cmd("commit", "-m", "Add test_git"))
    assert run.success
    assert run.err == ""
    assert "1 file changed" in run.out
    assert "1 insertion" in run.out
    assert re.search(r"create mode .+ test_git", run.out)

    # git command 'log'
    run = runner(command=yadm_cmd("log", "--oneline"))
    assert run.success
    assert run.err == ""
    assert "Add test_git" in run.out
