From 5c3c91c43e12b40a618ad471ba24950d5b6d1ea0 Mon Sep 17 00:00:00 2001 From: Jon Bernard Date: Sun, 3 Jan 2016 15:01:40 -0500 Subject: Consolidate tests into a single file --- test_dotfiles.py | 234 ++++++++++++++++++++++++++++ tests/test_basic.py | 395 ----------------------------------------------- tests/test_cli.py | 10 -- tests/test_cli_orig.py | 16 -- tests/test_dotfile.py | 137 ---------------- tests/test_package.py | 21 --- tests/test_prefix.py | 41 ----- tests/test_repository.py | 72 --------- tests/test_sync.py | 19 --- 9 files changed, 234 insertions(+), 711 deletions(-) create mode 100644 test_dotfiles.py delete mode 100644 tests/test_basic.py delete mode 100644 tests/test_cli.py delete mode 100644 tests/test_cli_orig.py delete mode 100644 tests/test_dotfile.py delete mode 100644 tests/test_package.py delete mode 100644 tests/test_prefix.py delete mode 100644 tests/test_repository.py delete mode 100644 tests/test_sync.py diff --git a/test_dotfiles.py b/test_dotfiles.py new file mode 100644 index 0000000..e0ebc77 --- /dev/null +++ b/test_dotfiles.py @@ -0,0 +1,234 @@ +import py +import pytest +from click.testing import CliRunner + +from dotfiles import __version__ +from dotfiles import Repository +from dotfiles import Dotfile, unique_suffix +from dotfiles import version + + +class TestCLI(object): + + def test_version(self): + runner = CliRunner() + result = runner.invoke(version) + assert ('dotfiles version %s\n' % __version__) == result.output + + """ + @pytest.mark.xfail() + def test_empty_status(tmpdir): + repo = Repository(tmpdir.join("repo")) + assert '[no dotfiles found]' == repo.status() + + @pytest.mark.xfail() + def test_status_manual(tmpdir, monkeypatch): + + repodir = tmpdir.join("Dotfiles", dir=1) + target = repodir.ensure("vimrc") + name = tmpdir.ensure(".vimrc") + + dotfile = Dotfile(name, target) + + repo = Repository(repodir, tmpdir) + monkeypatch.setattr(Repository, "_load", + lambda self: [dotfile, dotfile, dotfile]) + + dotfile_state = 'conflict' + expected_status = ("{0:<18} {1}\n" + "{0:<18} {1}\n" + "{0:<18} {1}".format(name.basename, dotfile_state)) + + assert expected_status == repo.status() + + @pytest.mark.xfail() + def test_status_discover(tmpdir): + + repodir = tmpdir.ensure("Dotfiles", dir=1) + + tmpdir.join('.bashrc').mksymlinkto(repodir.ensure('bashrc')) + tmpdir.join('.inputrc').mksymlinkto(repodir.ensure('inputrc')) + tmpdir.join('.vimrc').mksymlinkto(repodir.ensure('vimrc')) + + repo = Repository(repodir, tmpdir) + + expected_status = ("{1:<18} {0}\n" + "{2:<18} {0}\n" + "{3:<18} {0}".format('ok', + '.bashrc', + '.inputrc', + '.vimrc')) + + assert expected_status == repo.status() + + @pytest.mark.xfail() + def test_check(tmpdir, monkeypatch): + + repodir = tmpdir.join('repo') + + dotfile_a = Dotfile(tmpdir.join('.aaa'), repodir.join('aaa')) + dotfile_b = Dotfile(tmpdir.join('.bbb'), repodir.join('bbb')) + dotfile_c = Dotfile(tmpdir.join('.ccc'), repodir.join('ccc')) + + dotfile_b.state = 'ok' + + repo = Repository(tmpdir) + monkeypatch.setattr(Repository, "_load", + lambda self: [dotfile_a, dotfile_b, dotfile_c]) + + expected_status = ("{1:<18} {0}\n" + "{2:<18} {0}".format('error', + dotfile_a.name.basename, + dotfile_c.name.basename)) + + assert expected_status == repo.check() + """ + + +class TestRepository(object): + + def test_repodir_create(self, tmpdir): + repodir = tmpdir.join('test_create_repo') + repo = Repository(repodir, tmpdir) + + assert True == repodir.check(exists=0) + repo.contents() + assert True == repodir.check(exists=1, dir=1) + + def test_contents_empty(self, tmpdir): + assert [] == Repository(tmpdir.join('Dotfiles'), tmpdir).contents() + + def test_contents_nonempty(self, tmpdir): + repodir = tmpdir.ensure('test_create_repo', dir=1) + target_a = repodir.ensure('a') + target_b = repodir.ensure('b') + target_c = repodir.ensure('c') + + contents = Repository(repodir, tmpdir).contents() + + assert target_a == contents[0].target + assert target_b == contents[1].target + assert target_c == contents[2].target + + @pytest.mark.xfail(reason='not implemented yet') + def test_expected_name(self): + assert 0 + + +class TestDotfile(object): + + def test_unique_suffix_overlap(self): + (name, target) = unique_suffix(py.path.local('/foo/baz'), + py.path.local('/foo/bar/bat')) + assert 'baz' == name + assert 'bar/bat' == target + + @pytest.mark.xfail(reason='this is a bug') + def test_unique_suffix_no_overlap(self): + (name, target) = unique_suffix(py.path.local('/a/b/c'), + py.path.local('/d/e/f')) + assert '/a/b/c' == name + assert '/d/e/f' == target + + def test_state_error(self, tmpdir): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.join(".vimrc") + target = repo.join("vimrc") + + dotfile = Dotfile(name, target) + + assert 'error' == dotfile.state + + def test_state_missing(self, tmpdir): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.join(".vimrc") + target = repo.ensure("vimrc") + + dotfile = Dotfile(name, target) + + assert 'missing' == dotfile.state + + def test_state_conflict(self, tmpdir): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.ensure(".vimrc") + target = repo.ensure("vimrc") + + dotfile = Dotfile(name, target) + + assert 'conflict' == dotfile.state + + def test_state_ok(self, tmpdir): + repo = tmpdir.join("Dotfiles", dir=1) + name = tmpdir.join(".vimrc") + target = repo.ensure("vimrc") + dotfile = Dotfile(name, target) + + name.mksymlinkto(target) + assert 'ok' == dotfile.state + + name.remove() + assert 'missing' == dotfile.state + + @pytest.mark.parametrize("times", range(1, 4)) + def test_add(self, tmpdir, times): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.ensure(".vimrc") + target = repo.join("vimrc") + + dotfile = Dotfile(name, target) + dotfile.add() + + assert target.check(file=1, link=0) + assert name.check(file=1, link=1) + assert name.samefile(target) + + for x in range(2, times): + with pytest.raises(OSError): + dotfile.add() + assert target.check(file=1, link=0) + assert name.check(file=1, link=1) + assert name.samefile(target) + + @pytest.mark.parametrize("times", range(1, 4)) + def test_remove(self, tmpdir, times): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.join(".vimrc") + target = repo.ensure("vimrc") + + name.mksymlinkto(target) + + dotfile = Dotfile(name, target) + dotfile.remove() + + assert False == target.check() + assert name.check(file=1, link=0) + + for x in range(2, times): + with pytest.raises(OSError): + dotfile.remove() + assert False == target.check() + assert name.check(file=1, link=0) + + @pytest.mark.parametrize("times", range(1, 4)) + def test_sync(self, tmpdir, times): + repo = tmpdir.ensure("Dotfiles", dir=1) + name = tmpdir.join(".vimrc") + target = repo.ensure("vimrc") + + dotfile = Dotfile(name, target) + dotfile.sync() + + assert target.check(file=1, link=0) + assert name.check(file=1, link=1) + assert name.samefile(target) + + for x in range(2, times): + with pytest.raises(py.error.EEXIST): + dotfile.sync() + assert target.check(file=1, link=0) + assert name.check(file=1, link=1) + assert name.samefile(target) + + @pytest.mark.xfail(reason='not implemented yet') + def test_unsync(self): + assert 0 diff --git a/tests/test_basic.py b/tests/test_basic.py deleted file mode 100644 index 97c643c..0000000 --- a/tests/test_basic.py +++ /dev/null @@ -1,395 +0,0 @@ -from __future__ import with_statement - -import os -import pytest -import shutil -import tempfile -import unittest - -from dotfiles.core import Dotfiles -from dotfiles.utils import is_link_to - - -def touch(fname, times=None): - with open(fname, 'a'): - os.utime(fname, times) - - -class DotfilesTestCase(unittest.TestCase): - - def setUp(self): - """Create a temporary home directory.""" - - self.homedir = tempfile.mkdtemp() - - # Create a repository for the tests to use. - self.repository = os.path.join(self.homedir, 'Dotfiles') - os.mkdir(self.repository) - - def tearDown(self): - """Delete the temporary home directory and its contents.""" - - shutil.rmtree(self.homedir) - - def assertPathEqual(self, path1, path2): - self.assertEqual( - os.path.realpath(path1), - os.path.realpath(path2)) - - def test_force_sync_directory(self): - """Test forced sync when the dotfile is a directory. - - I installed the lastpass chrome extension which stores a socket in - ~/.lastpass. So I added that directory as an external to /tmp and - attempted a forced sync. An error occurred because sync() calls - os.remove() as it mistakenly assumes the dotfile is a file and not - a directory. - """ - - os.mkdir(os.path.join(self.homedir, '.lastpass')) - externals = {'.lastpass': '/tmp'} - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals=externals, packages=[], - dry_run=False) - - dotfiles.sync(force=True) - - self.assertPathEqual( - os.path.join(self.homedir, '.lastpass'), - '/tmp') - - def test_move_repository(self): - """Test the move() method for a Dotfiles repository.""" - - touch(os.path.join(self.repository, 'bashrc')) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], force=True, externals={}, packages=[], - dry_run=False) - - dotfiles.sync() - - # Make sure sync() did the right thing. - self.assertPathEqual( - os.path.join(self.homedir, '.bashrc'), - os.path.join(self.repository, 'bashrc')) - - target = os.path.join(self.homedir, 'MyDotfiles') - - dotfiles.move(target) - - self.assertTrue(os.path.exists(os.path.join(target, 'bashrc'))) - self.assertPathEqual( - os.path.join(self.homedir, '.bashrc'), - os.path.join(target, 'bashrc')) - - def test_force_sync_directory_symlink(self): - """Test a forced sync on a directory symlink. - - A bug was reported where a user wanted to replace a dotfile repository - with an other one. They had a .vim directory in their home directory - which was obviously also a symbolic link. This caused: - - OSError: Cannot call rmtree on a symbolic link - """ - - # Create a dotfile symlink to some directory - os.mkdir(os.path.join(self.homedir, 'vim')) - os.symlink(os.path.join(self.homedir, 'vim'), - os.path.join(self.homedir, '.vim')) - - # Create a vim directory in the repository. This will cause the above - # symlink to be overwritten on sync. - os.mkdir(os.path.join(self.repository, 'vim')) - - # Make sure the symlink points to the correct location. - self.assertPathEqual( - os.path.join(self.homedir, '.vim'), - os.path.join(self.homedir, 'vim')) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=[], dry_run=False) - - dotfiles.sync(force=True) - - # The symlink should now point to the directory in the repository. - self.assertPathEqual( - os.path.join(self.homedir, '.vim'), - os.path.join(self.repository, 'vim')) - - def test_glob_ignore_pattern(self): - """ Test that the use of glob pattern matching works in the ignores - list. - - The following repo dir exists: - - myscript.py - myscript.pyc - myscript.pyo - bashrc - bashrc.swp - vimrc - vimrc.swp - install.sh - - Using the glob pattern dotfiles should have the following sync result - in home: - - .myscript.py -> Dotfiles/myscript.py - .bashrc -> Dotfiles/bashrc - .vimrc -> Dotfiles/vimrc - - """ - ignore = ['*.swp', '*.py?', 'install.sh'] - - all_repo_files = ( - ('myscript.py', '.myscript.py'), - ('myscript.pyc', None), - ('myscript.pyo', None), - ('bashrc', '.bashrc'), - ('bashrc.swp', None), - ('vimrc', '.vimrc'), - ('vimrc.swp', None), - ('install.sh', None) - ) - - all_dotfiles = [f for f in all_repo_files if f[1] is not None] - - for original, symlink in all_repo_files: - touch(os.path.join(self.repository, original)) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=ignore, externals={}, packages=[], - dry_run=False) - - dotfiles.sync() - - # Now check that the files that should have a symlink - # point to the correct file and are the only files that - # exist in the home dir. - self.assertEqual( - sorted(os.listdir(self.homedir)), - sorted([f[1] for f in all_dotfiles] + ['Dotfiles'])) - - for original, symlink in all_dotfiles: - self.assertPathEqual( - os.path.join(self.repository, original), - os.path.join(self.homedir, symlink)) - - def test_packages(self): - """ - Test packages. - """ - files = ['foo', 'package/bar'] - symlinks = ['.foo', '.package/bar'] - join = os.path.join - - # Create files - for filename in files: - path = join(self.repository, filename) - dirname = os.path.dirname(path) - if not os.path.exists(dirname): - os.makedirs(dirname) - touch(path) - - # Create Dotfiles object - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=['package'], - dry_run=False) - - # Create symlinks in homedir - dotfiles.sync() - - # Verify it created what we expect - def check_all(files, symlinks): - self.assertTrue(os.path.isdir(join(self.homedir, '.package'))) - for src, dst in zip(files, symlinks): - self.assertTrue(is_link_to(join(self.homedir, dst), - join(self.repository, src))) - check_all(files, symlinks) - - # Add files to the repository - new_files = [join(self.homedir, f) for f in ['.bar', '.package/foo']] - for filename in new_files: - path = join(self.homedir, filename) - touch(path) - new_repo_files = ['bar', 'package/foo'] - dotfiles.add(new_files) - check_all(files + new_repo_files, symlinks + new_files) - - # Remove them from the repository - dotfiles.remove(new_files) - check_all(files, symlinks) - - # Move the repository - self.repository = join(self.homedir, 'Dotfiles2') - dotfiles.move(self.repository) - check_all(files, symlinks) - - def test_missing_package(self): - """ - Test a non-existent package. - """ - - package_file = '.package/bar' - - # Create Dotfiles object - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=['package'], - dry_run=False) - - path = os.path.join(self.homedir, package_file) - dirname = os.path.dirname(path) - if not os.path.exists(dirname): - os.makedirs(dirname) - touch(path) - - dotfiles.add([os.path.join(self.homedir, package_file)]) - - def test_single_sync(self): - """ - Test syncing a single file in the repo - - The following repo dir exists: - - bashrc - netrc - vimrc - - Syncing only vimrc should have the folowing sync result in home: - - .vimrc -> Dotfiles/vimrc - - """ - - # define the repository contents - repo_files = ( - ('bashrc', False), - ('netrc', False), - ('vimrc', True)) - - # populate the repository - for dotfile, _ in repo_files: - touch(os.path.join(self.repository, dotfile)) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=[], - dry_run=False) - - # sync only certain dotfiles - for dotfile, should_sync in repo_files: - if should_sync: - dotfiles.sync(files=['.%s' % dotfile]) - - # verify home directory contents - for dotfile, should_sync in repo_files: - if should_sync: - self.assertPathEqual( - os.path.join(self.repository, dotfile), - os.path.join(self.homedir, '.%s' % dotfile)) - else: - self.assertFalse(os.path.exists( - os.path.join(self.homedir, dotfile))) - - def test_missing_remove(self): - """Test removing a dotfile that's been removed from the repository.""" - - repo_file = os.path.join(self.repository, 'testdotfile') - - touch(repo_file) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=[], - dry_run=False) - - dotfiles.sync() - - # remove the dotfile from the repository, homedir symlink is now broken - os.remove(repo_file) - - # remove the broken symlink - dotfiles.remove(['.testdotfile']) - - # verify symlink was removed - self.assertFalse(os.path.exists( - os.path.join(self.homedir, '.testdotfile'))) - - def test_add_package(self): - """ - Test adding a package that isn't already in the repository - - """ - - package_dir = os.path.join(self.homedir, - '.%s/%s' % ('config', 'gtk-3.0')) - - os.makedirs(package_dir) - touch('%s/testfile' % package_dir) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=['config'], - dry_run=False, quiet=True) - - # This should fail, you should not be able to add dotfiles that are - # defined to be packages. - dotfiles.add(['.config']) - self.assertFalse(os.path.islink(os.path.join(self.homedir, '.config'))) - - def test_no_dot_prefix(self): - # define the repository contents - repo_files = ('bashrc', 'netrc', 'vimrc') - - # populate the repository - for dotfile in repo_files: - touch(os.path.join(self.repository, dotfile)) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=[], - dry_run=False, no_dot_prefix=True) - - dotfiles.sync() - - # verify home directory contents - for dotfile in repo_files: - self.assertPathEqual( - os.path.join(self.repository, dotfile), - os.path.join(self.homedir, dotfile)) - - @pytest.mark.xfail() - def test_add_package_file(self): - """ - Test adding a package that isn't already in the repository - - """ - - package_dir = os.path.join(self.homedir, - '.%s/%s' % ('config', 'gtk-3.0')) - - os.makedirs(package_dir) - touch('%s/testfile' % package_dir) - - dotfiles = Dotfiles( - homedir=self.homedir, path=self.repository, - prefix='', ignore=[], externals={}, packages=['config'], - dry_run=False) - - # This should succeed and the directory structure in the repository - # should be created since it didn't already exist. - dotfiles.add(['.config/gtk-3.0']) - self.assertTrue(os.path.islink( - os.path.join(self.homedir, '.config/gtk-3.0'))) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/test_cli.py b/tests/test_cli.py deleted file mode 100644 index 7f08010..0000000 --- a/tests/test_cli.py +++ /dev/null @@ -1,10 +0,0 @@ -from click.testing import CliRunner - -from dotfiles import __version__ -from dotfiles.cli import version - - -def test_version(): - runner = CliRunner() - result = runner.invoke(version) - assert ('dotfiles v%s\n' % __version__) == result.output diff --git a/tests/test_cli_orig.py b/tests/test_cli_orig.py deleted file mode 100644 index 58872e3..0000000 --- a/tests/test_cli_orig.py +++ /dev/null @@ -1,16 +0,0 @@ -from dotfiles.cli_orig import dispatch - - -def test_dispatch(): - """Test that the force option is handed on to the sync method.""" - - class MockDotfiles: - def sync(self, files=None, force=False): - assert force - - class MockNamespace: - def __init__(self): - self.action = 'sync' - self.force = True - - dispatch(MockDotfiles(), MockNamespace(), []) diff --git a/tests/test_dotfile.py b/tests/test_dotfile.py deleted file mode 100644 index 1af1d8e..0000000 --- a/tests/test_dotfile.py +++ /dev/null @@ -1,137 +0,0 @@ -import pytest -import py.error - -from dotfiles.dotfile import Dotfile, unique_suffix - - -def test_unique_suffix_overlap(): - (name, target) = unique_suffix(py.path.local('/foo/baz'), - py.path.local('/foo/bar/bat')) - assert 'baz' == name - assert 'bar/bat' == target - - -@pytest.mark.xfail(reason='this is a bug') -def test_unique_suffix_no_overlap(): - (name, target) = unique_suffix(py.path.local('/a/b/c'), - py.path.local('/d/e/f')) - assert '/a/b/c' == name - assert '/d/e/f' == target - - -def test_state_error(tmpdir): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.join(".vimrc") - target = repo.join("vimrc") - - dotfile = Dotfile(name, target) - - assert 'error' == dotfile.state - - -def test_state_missing(tmpdir): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.join(".vimrc") - target = repo.ensure("vimrc") - - dotfile = Dotfile(name, target) - - assert 'missing' == dotfile.state - - -def test_state_conflict(tmpdir): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.ensure(".vimrc") - target = repo.ensure("vimrc") - - dotfile = Dotfile(name, target) - - assert 'conflict' == dotfile.state - - -def test_state_ok(tmpdir): - - repo = tmpdir.join("Dotfiles", dir=1) - name = tmpdir.join(".vimrc") - target = repo.ensure("vimrc") - dotfile = Dotfile(name, target) - - name.mksymlinkto(target) - assert 'ok' == dotfile.state - - name.remove() - assert 'missing' == dotfile.state - - -@pytest.mark.parametrize("times", range(1, 4)) -def test_add(tmpdir, times): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.ensure(".vimrc") - target = repo.join("vimrc") - - dotfile = Dotfile(name, target) - dotfile.add() - - assert target.check(file=1, link=0) - assert name.check(file=1, link=1) - assert name.samefile(target) - - for x in range(2, times): - with pytest.raises(OSError): - dotfile.add() - assert target.check(file=1, link=0) - assert name.check(file=1, link=1) - assert name.samefile(target) - - -@pytest.mark.parametrize("times", range(1, 4)) -def test_remove(tmpdir, times): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.join(".vimrc") - target = repo.ensure("vimrc") - - name.mksymlinkto(target) - - dotfile = Dotfile(name, target) - dotfile.remove() - - assert False == target.check() - assert name.check(file=1, link=0) - - for x in range(2, times): - with pytest.raises(OSError): - dotfile.remove() - assert False == target.check() - assert name.check(file=1, link=0) - - -@pytest.mark.parametrize("times", range(1, 4)) -def test_sync(tmpdir, times): - - repo = tmpdir.ensure("Dotfiles", dir=1) - name = tmpdir.join(".vimrc") - target = repo.ensure("vimrc") - - dotfile = Dotfile(name, target) - dotfile.sync() - - assert target.check(file=1, link=0) - assert name.check(file=1, link=1) - assert name.samefile(target) - - for x in range(2, times): - with pytest.raises(py.error.EEXIST): - dotfile.sync() - assert target.check(file=1, link=0) - assert name.check(file=1, link=1) - assert name.samefile(target) - - -@pytest.mark.xfail(reason='not implemented yet') -def test_unsync(): - raise NotImplementedError diff --git a/tests/test_package.py b/tests/test_package.py deleted file mode 100644 index ddc5787..0000000 --- a/tests/test_package.py +++ /dev/null @@ -1,21 +0,0 @@ -from dotfiles.core import Dotfiles - - -def test_package_sync(tmpdir): - """Test syncing a package.""" - - repository = tmpdir.ensure('Dotfiles', dir=1) - dotfile = repository.ensure('config/awesome/testfile') - - Dotfiles(homedir=str(tmpdir), - path=str(repository), - prefix='', - ignore=[], - externals={}, - packages=['config'], - dry_run=False, - quiet=True).sync() - - assert tmpdir.join('.config').check(dir=1) - assert tmpdir.join('.config/awesome').check(link=1) - assert tmpdir.join('.config/awesome').samefile(dotfile.dirname) diff --git a/tests/test_prefix.py b/tests/test_prefix.py deleted file mode 100644 index 636a7d1..0000000 --- a/tests/test_prefix.py +++ /dev/null @@ -1,41 +0,0 @@ -import pytest -from dotfiles.core import Dotfiles - - -@pytest.mark.xfail() -def test_prefix(tmpdir): - """Test basic sync when using a non-default prefix.""" - - dotfile = tmpdir.ensure('Dotfiles/_vimrc') - symlink = tmpdir.join('.vimrc') - - Dotfiles(homedir=str(tmpdir), - path=str(dotfile.dirname), - prefix='_', - ignore=[], - externals={}, - packages=[], - dry_run=False).sync() - - assert symlink.check(link=1) - assert symlink.samefile(dotfile) - - -def test_prefix_with_package(tmpdir): - """Test syncing a package when using a non-default prefix.""" - - repository = tmpdir.ensure('Dotfiles', dir=1) - dotfile = repository.ensure('.config/awesome/testfile') - - Dotfiles(homedir=str(tmpdir), - path=str(repository), - prefix='.', - ignore=[], - externals={}, - packages=['.config'], - dry_run=False, - quiet=True).sync() - - assert tmpdir.join('.config').check(dir=1) - assert tmpdir.join('.config/awesome').check(link=1) - assert tmpdir.join('.config/awesome').samefile(dotfile.dirname) diff --git a/tests/test_repository.py b/tests/test_repository.py deleted file mode 100644 index 2825b66..0000000 --- a/tests/test_repository.py +++ /dev/null @@ -1,72 +0,0 @@ -import os -import py -import pytest - -from dotfiles.repository import Repository - - -def test_getters(): - - repo = Repository('/a', '/b') - - assert isinstance(repo.homedir, str) - assert isinstance(repo.repodir, str) - - assert '/a' == repo.repodir - assert '/b' == repo.homedir - - -def test_setters(): - - repodir = py.path.local('/foo/bar') - homedir = py.path.local('/fizz/buzz') - - repo = Repository('/a', '/b') - - repo.repodir = repodir - repo.homedir = homedir - - assert repodir == repo.repodir - assert homedir == repo.homedir - - -def test_path_expansion(): - - repo = Repository('~/foo', '~/bar') - - assert os.path.expanduser('~/foo') == repo.repodir - assert os.path.expanduser('~/bar') == repo.homedir - - -def test_repodir_create(tmpdir): - - repodir = tmpdir.join('test_create_repo') - repo = Repository(repodir) - - assert True == repodir.check(exists=0) - contents = repo.contents() - assert [] == contents - assert True == repodir.check(exists=1, dir=1) - - -def test_contents_empty(tmpdir): - assert [] == Repository(tmpdir.join('Dotfiles')).contents() - - -def test_contents_nonempty(tmpdir): - - repodir = tmpdir.ensure('test_create_repo', dir=1) - target_a = repodir.ensure('a') - target_b = repodir.ensure('b') - target_c = repodir.ensure('c') - - contents = Repository(repodir).contents() - - assert target_a == contents[0].target - assert target_b == contents[1].target - assert target_c == contents[2].target - - -@pytest.mark.xfail(reason='not implemented yet') -def test_rename(): - raise NotImplementedError diff --git a/tests/test_sync.py b/tests/test_sync.py deleted file mode 100644 index e8a51cc..0000000 --- a/tests/test_sync.py +++ /dev/null @@ -1,19 +0,0 @@ -from dotfiles.core import Dotfiles - - -def test_sync(tmpdir): - """Basic sync operation.""" - - dotfile = tmpdir.ensure('Dotfiles/foo') - symlink = tmpdir.join('.foo') - - Dotfiles(homedir=str(tmpdir), - path=str(dotfile.dirname), - prefix='', - ignore=[], - externals={}, - packages=[], - dry_run=False).sync() - - assert symlink.check(link=1) - assert symlink.samefile(dotfile) -- cgit v1.2.3