# -*- coding: utf-8 -*-
"""Tests the xonsh replay functionality."""
from __future__ import unicode_literals, print_function
import os
import builtins
from contextlib import contextmanager

import pytest

from xonsh.tools import swap
from xonsh.shell import Shell
from xonsh.replay import Replayer

from tools import skip_if_on_darwin

SHELL = Shell({'PATH': []})
HISTDIR = os.path.join(os.path.dirname(__file__), 'histories')
def run_replay(re_file):
    with swap(builtins, '__xonsh_shell__', SHELL):
        with swap(builtins, '__xonsh_exit__', False):
            r = Replayer(re_file)
            hist = r.replay()
    return hist


def cleanup_replay(hist):
    fname = hist.filename
    del hist
    if os.path.isfile(fname):
        os.remove(fname)


@contextmanager
def a_replay(re_file):
    hist = run_replay(re_file)
    yield hist
    cleanup_replay(hist)


@skip_if_on_darwin
def test_echo():
    f = os.path.join(HISTDIR, 'echo.json')
    with a_replay(f) as hist:
        assert 2 == len(hist)


@skip_if_on_darwin
def test_reecho():
    f = os.path.join(HISTDIR, 'echo.json')
    with a_replay(f) as hist:
        assert 2 == len(hist)

@skip_if_on_darwin
def test_simple_python():
    f = os.path.join(HISTDIR, 'simple-python.json')
    with a_replay(f) as hist:
        assert 4 == len(hist)
        assert "print('The Turtles')" == hist.inps[0].strip()
