93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import os.path
|
||
|
import unittest
|
||
|
import tempfile
|
||
|
import textwrap
|
||
|
import shutil
|
||
|
|
||
|
from ..TestUtils import write_file, write_newer_file, _parse_pattern
|
||
|
|
||
|
|
||
|
class TestTestUtils(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
super(TestTestUtils, self).setUp()
|
||
|
self.temp_dir = tempfile.mkdtemp()
|
||
|
|
||
|
def tearDown(self):
|
||
|
if self.temp_dir and os.path.isdir(self.temp_dir):
|
||
|
shutil.rmtree(self.temp_dir)
|
||
|
super(TestTestUtils, self).tearDown()
|
||
|
|
||
|
def _test_path(self, filename):
|
||
|
return os.path.join(self.temp_dir, filename)
|
||
|
|
||
|
def _test_write_file(self, content, expected, **kwargs):
|
||
|
file_path = self._test_path("abcfile")
|
||
|
write_file(file_path, content, **kwargs)
|
||
|
assert os.path.isfile(file_path)
|
||
|
|
||
|
with open(file_path, 'rb') as f:
|
||
|
found = f.read()
|
||
|
assert found == expected, (repr(expected), repr(found))
|
||
|
|
||
|
def test_write_file_text(self):
|
||
|
text = u"abcüöä"
|
||
|
self._test_write_file(text, text.encode('utf8'))
|
||
|
|
||
|
def test_write_file_dedent(self):
|
||
|
text = u"""
|
||
|
A horse is a horse,
|
||
|
of course, of course,
|
||
|
And no one can talk to a horse
|
||
|
of course
|
||
|
"""
|
||
|
self._test_write_file(text, textwrap.dedent(text).encode('utf8'), dedent=True)
|
||
|
|
||
|
def test_write_file_bytes(self):
|
||
|
self._test_write_file(b"ab\0c", b"ab\0c")
|
||
|
|
||
|
def test_write_newer_file(self):
|
||
|
file_path_1 = self._test_path("abcfile1.txt")
|
||
|
file_path_2 = self._test_path("abcfile2.txt")
|
||
|
write_file(file_path_1, "abc")
|
||
|
assert os.path.isfile(file_path_1)
|
||
|
write_newer_file(file_path_2, file_path_1, "xyz")
|
||
|
assert os.path.isfile(file_path_2)
|
||
|
assert os.path.getmtime(file_path_2) > os.path.getmtime(file_path_1)
|
||
|
|
||
|
def test_write_newer_file_same(self):
|
||
|
file_path = self._test_path("abcfile.txt")
|
||
|
write_file(file_path, "abc")
|
||
|
mtime = os.path.getmtime(file_path)
|
||
|
write_newer_file(file_path, file_path, "xyz")
|
||
|
assert os.path.getmtime(file_path) > mtime
|
||
|
|
||
|
def test_write_newer_file_fresh(self):
|
||
|
file_path = self._test_path("abcfile.txt")
|
||
|
assert not os.path.exists(file_path)
|
||
|
write_newer_file(file_path, file_path, "xyz")
|
||
|
assert os.path.isfile(file_path)
|
||
|
|
||
|
def test_parse_pattern(self):
|
||
|
self.assertEqual(
|
||
|
_parse_pattern("pattern"),
|
||
|
(None, None, 'pattern')
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
_parse_pattern("/start/:pattern"),
|
||
|
('start', None, 'pattern')
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
_parse_pattern(":/end/ pattern"),
|
||
|
(None, 'end', 'pattern')
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
_parse_pattern("/start/:/end/ pattern"),
|
||
|
('start', 'end', 'pattern')
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
_parse_pattern("/start/:/end/pattern"),
|
||
|
('start', 'end', 'pattern')
|
||
|
)
|