From 4a215801542e28a6c7fdaa2d9e9679ebe911f9fe Mon Sep 17 00:00:00 2001 From: Jon Bernard Date: Thu, 24 Jul 2014 16:33:48 -0400 Subject: A few more test tweaks --- tests/conftest.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/test_core.py | 26 +++++------------------ tests/utils.py | 55 ------------------------------------------------ 3 files changed, 67 insertions(+), 76 deletions(-) create mode 100644 tests/conftest.py delete mode 100644 tests/utils.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..7fc2cc4 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,62 @@ +import os +import pytest +from dotfiles.utils import compare_path as samefile + + +def _touch(fname, times=None): + with open(fname, 'a'): + os.utime(fname, times) + + +class HomeDirectory(object): + + DEFAULT_REPOSITORY = 'dotfiles' + + def __init__(self, path, repo=None, contents=None): + self.path = path + if not repo: + self.repo = os.path.join(path, self.DEFAULT_REPOSITORY) + if contents: + self.setup(contents) + + def setup(self, contents): + repo = os.path.join(self.path, self.repo) + os.mkdir(repo) + + for link, link_should_exist in contents.items(): + + target = os.path.join('%s/%s' % (repo, link[1:])) + _touch(target) + + if link_should_exist: + os.symlink(target, os.path.join(self.path, link)) + + self.verify(contents) + + def verify(self, contents): + __tracebackhide__ = True + + for link, link_should_exist in contents.items(): + + target = os.path.join(self.path, '%s/%s' % (self.repo, link[1:])) + + if not os.path.exists(target): + pytest.fail("missing expected repo file \"%s\"" % target) + + link = os.path.join(self.path, link) + link_exists = os.path.exists(link) + + if link_should_exist: + if not link_exists: + pytest.fail("missing expected symlink \"%s\"" % link) + if not samefile(link, target): + pytest.fail("\"%s\" does not link to \"%s\"" % + (link, target)) + + elif link_exists: + pytest.fail("found unexpected symlink \"%s\"" % link) + + +@pytest.fixture +def homedir(tmpdir): + return HomeDirectory(str(tmpdir)) diff --git a/tests/test_core.py b/tests/test_core.py index a425e24..640cac9 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1,33 +1,17 @@ -import os -import pytest -from utils import HomeDirectory from dotfiles.core import Dotfiles as Repository -REPOSITORY = 'dotfiles' - - -def test_sync(tmpdir): - """the quick, brown fox jumps over the lazy dog. - - lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod - tempor incididunt ut labore et dolore magna aliqua. ut enim ad minim veniam, - quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo - consequat. duis aute irure dolor in reprehenderit in voluptate velit esse - cillum dolore eu fugiat nulla pariatur. excepteur sint occaecat cupidatat - non proident, sunt in culpa qui officia deserunt mollit anim id est - laborum""" +def test_sync(homedir): + """Basic sync operation.""" contents = {'.foo': True, '.bar': True, '.baz': False} - homedir = HomeDirectory(str(tmpdir), REPOSITORY, contents) + homedir.setup(contents) - Repository(homedir=homedir.path, - repository=os.path.join(homedir.path, REPOSITORY), - prefix='', ignore=[], externals={}, packages=[], - dry_run = False).sync() + Repository(path=homedir.repo, + homedir=homedir.path).sync() # .baz should now exist and link to the correct location contents['.baz'] = True diff --git a/tests/utils.py b/tests/utils.py deleted file mode 100644 index ecdeb84..0000000 --- a/tests/utils.py +++ /dev/null @@ -1,55 +0,0 @@ -import os -from dotfiles.utils import compare_path as samefile - - -def _touch(fname, times=None): - with open(fname, 'a'): - os.utime(fname, times) - - -class HomeDirectory(object): - - - def __init__(self, path, repo, contents): - self.path = path - self.repo = repo - if contents: - self.setup(contents) - - - def setup(self, contents): - repo = os.path.join(self.path, self.repo) - os.mkdir(repo) - - for link, link_should_exist in contents.items(): - - target = os.path.join('%s/%s' % (repo, link[1:])) - _touch(target) - - if link_should_exist: - os.symlink(target, os.path.join(self.path, link)) - - self.verify(contents) - - - def verify(self, contents): - __tracebackhide__ = True - - for link, link_should_exist in contents.items(): - - target = os.path.join(self.path, '%s/%s' % (self.repo, link[1:])) - - if not os.path.exists(target): - pytest.fail("missing expected repo file \"%s\"" % target) - - link = os.path.join(self.path, link) - link_exists = os.path.exists(link) - - if link_should_exist: - if not link_exists: - pytest.fail("missing expected symlink \"%s\"" % link) - if not samefile(link, target): - pytest.fail("\"%s\" does not link to \"%s\"" % (link, target)) - - elif link_exists: - pytest.fail("found unexpected symlink \"%s\"" % link) -- cgit v1.2.3