try:
    from configparser import ConfigParser
except ImportError:
    from ConfigParser import ConfigParser

from os import remove
from os.path import abspath, exists

import pytest

from tsstats import exceptions
from tsstats.config import parse_config

configpath = abspath('tsstats/tests/res/test.cfg')


def create_config(values, key='General'):
    config = ConfigParser()
    config.add_section('General')
    for option, value in values.items():
        config.set('General', option, value)
    with open(configpath, 'w') as configfile:
        config.write(configfile)


@pytest.fixture
def config(request):
    def clean():
        if exists(configpath):
            remove(configpath)
    request.addfinalizer(clean)


def test_invalid_config(config):
    create_config({
        'loggfile': 'tsstats/tests/res/test.log',
        'outputfile': ''
    })
    with pytest.raises(exceptions.InvalidConfig):
        _, _, _, _ = parse_config(configpath)


def test_config(config):
    create_config({
        'log': 'tsstats/tests/res/test.log',
        'output': 'output.html',
    })
    log, output = parse_config(configpath)
    assert log == abspath('tsstats/tests/res/test.log')
    assert output == abspath('output.html')