aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-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)