# Copyright (C) 2016 VIB/BEG/UGent - Tim Diels <timdiels.m@gmail.com>
#
# This file is part of Chicken Turtle Util.
#
# Chicken Turtle Util is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Chicken Turtle Util is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Chicken Turtle Util. If not, see <http://www.gnu.org/licenses/>.
'''
Test utilities.
'''
import pytest
import os
import re
from pathlib import Path
@pytest.yield_fixture()
[docs]def temp_dir_cwd(tmpdir):
'''
pytest fixture that sets current working directory to a temporary directory
'''
original_cwd = Path.cwd()
os.chdir(str(tmpdir))
yield tmpdir
# ensure the user has full permissions on temp dir (so that pytest can remove it later)
path_.chmod(Path(str(tmpdir)), 0o700, '+', recursive=True)
#
os.chdir(str(original_cwd))
[docs]def assert_text_equals(actual, expected):
'''
Assert long strings are equal
'''
assert actual == expected, '\nActual:\n{}\n\nExpected:\n{}'.format(actual, expected)
[docs]def assert_text_contains(whole, part):
'''
Assert long string contains given string
'''
assert part in whole, '\nActual:\n{}\n\nExpected to contain:\n{}'.format(whole, part)
[docs]def assert_matches(actual, pattern, flags=0):
assert re.match(pattern, actual, flags), 'Actual:{}\n\nExpected to match:\n{}'.format(actual, pattern)
[docs]def assert_search_matches(actual, pattern, flags=0):
assert re.search(pattern, actual, flags), 'Actual:{}\n\nExpected a subset to match:\n{}'.format(actual, pattern)
from chicken_turtle_util import path as path_ # yay, 'resolving' circular dependencies