aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_dotfile.py
diff options
context:
space:
mode:
authorGravatar Jon Bernard <jbernard@tuxion.com> 2015-12-29 09:44:10 -0500
committerGravatar Jon Bernard <jbernard@tuxion.com> 2015-12-29 09:47:55 -0500
commitee8a42ee6707d514bc0a4989a018db0561b4e6e9 (patch)
tree71fb78452266b8462866b97a466fb329839e23a0 /tests/test_dotfile.py
parent20079411b5acfbf533892b942227c7b0690acf32 (diff)
downloaddotfiles-ee8a42ee6707d514bc0a4989a018db0561b4e6e9.tar.gz
dotfiles-ee8a42ee6707d514bc0a4989a018db0561b4e6e9.tar.bz2
dotfiles-ee8a42ee6707d514bc0a4989a018db0561b4e6e9.zip
Add dotfile class rework
This version of the dotfile class uses py.path.local and removes much of the cruft of using os.path and it's associated requirements. There are still a few things missing, namely dry_run mode where commands are printed instead of executed and force sync. They will be included as required.
Diffstat (limited to 'tests/test_dotfile.py')
-rw-r--r--tests/test_dotfile.py112
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/test_dotfile.py b/tests/test_dotfile.py
new file mode 100644
index 0000000..b854859
--- /dev/null
+++ b/tests/test_dotfile.py
@@ -0,0 +1,112 @@
+import pytest
+import py.error
+from dotfiles.dotfile import Dotfile
+
+
+class TestAdd:
+
+ def test_add(self, tmpdir):
+
+ 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)
+
+ def test_add_twice(self, tmpdir):
+
+ 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)
+
+ with pytest.raises(OSError):
+ dotfile.add()
+
+ assert target.check(file=1, link=0)
+ assert name.check(file=1, link=1)
+ assert name.samefile(target)
+
+
+class TestRemove:
+
+ def test_remove(self, tmpdir):
+
+ 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)
+
+ def test_remove_twice(self, tmpdir):
+
+ 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)
+
+ with pytest.raises(OSError):
+ dotfile.remove()
+
+ assert False == target.check()
+ assert name.check(file=1, link=0)
+
+
+class TestSync:
+
+ def test_sync(self, tmpdir):
+
+ 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)
+
+ def test_sync_twice(self, tmpdir):
+
+ 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)
+
+ 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)