summaryrefslogtreecommitdiffstats
path: root/test_dotfiles.py
diff options
context:
space:
mode:
Diffstat (limited to 'test_dotfiles.py')
-rwxr-xr-xtest_dotfiles.py64
1 files changed, 60 insertions, 4 deletions
diff --git a/test_dotfiles.py b/test_dotfiles.py
index b892003..88ffe67 100755
--- a/test_dotfiles.py
+++ b/test_dotfiles.py
@@ -9,6 +9,7 @@ import tempfile
import unittest
from dotfiles import core
+from dotfiles.utils import is_link_to
def touch(fname, times=None):
@@ -52,7 +53,8 @@ class DotfilesTestCase(unittest.TestCase):
dotfiles = core.Dotfiles(
homedir=self.homedir, repository=self.repository,
- prefix='', ignore=[], externals=externals)
+ prefix='', ignore=[], externals=externals, packages=[],
+ dry_run=False)
dotfiles.sync(force=True)
@@ -67,7 +69,8 @@ class DotfilesTestCase(unittest.TestCase):
dotfiles = core.Dotfiles(
homedir=self.homedir, repository=self.repository,
- prefix='', ignore=[], force=True, externals={})
+ prefix='', ignore=[], force=True, externals={}, packages=[],
+ dry_run=False)
dotfiles.sync()
@@ -111,7 +114,7 @@ class DotfilesTestCase(unittest.TestCase):
dotfiles = core.Dotfiles(
homedir=self.homedir, repository=self.repository,
- prefix='', ignore=[], externals={})
+ prefix='', ignore=[], externals={}, packages=[], dry_run=False)
dotfiles.sync(force=True)
@@ -161,7 +164,8 @@ class DotfilesTestCase(unittest.TestCase):
dotfiles = core.Dotfiles(
homedir=self.homedir, repository=self.repository,
- prefix='', ignore=ignore, externals={})
+ prefix='', ignore=ignore, externals={}, packages=[],
+ dry_run=False)
dotfiles.sync()
@@ -176,6 +180,58 @@ class DotfilesTestCase(unittest.TestCase):
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 Dotiles object
+ dotfiles = core.Dotfiles(
+ homedir=self.homedir, repository=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 suite():
suite = unittest.TestLoader().loadTestsFromTestCase(DotfilesTestCase)