from os import listdir
from os.path import abspath, dirname, isfile, join

import pytest

from protego import Protego

test_data_directory = join(dirname(abspath(__file__)), 'test_data')
robotstxts = [f for f in listdir(test_data_directory) if isfile(join(test_data_directory, f))]


@pytest.mark.parametrize('path_to_robotstxt', robotstxts)
def test_no_exceptions(path_to_robotstxt):
    try:
        with open(join(test_data_directory, path_to_robotstxt), 'rb') as f:
            try:
                content = f.read().decode('utf-8')
            except UnicodeDecodeError:
                # Downloaded robots.txt is malformed, ignore this
                return
            Protego.parse(content=content)
    except Exception as e:
        assert False, "{}. Exception raised while parsing {}".format(e, join(path_to_robotstxt, 'robots.txt'))
