From 12f4b315161a0f398b1681b0abfc6f30cbd61f59 Mon Sep 17 00:00:00 2001 From: Jon Bernard Date: Sun, 17 Jan 2016 06:29:44 -0500 Subject: Split tests into separate files --- tests/test_dotfile.py | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tests/test_dotfile.py (limited to 'tests/test_dotfile.py') diff --git a/tests/test_dotfile.py b/tests/test_dotfile.py new file mode 100644 index 0000000..0e09654 --- /dev/null +++ b/tests/test_dotfile.py @@ -0,0 +1,89 @@ +import pytest + +from dotfiles.dotfile import Dotfile +from dotfiles.exceptions import IsSymlink + + +class TestDotfile(object): + + def test_state_error(self, repo, home): + dotfile = Dotfile(home.join('.vimrc'), repo.join('vimrc')) + assert dotfile.state == 'error' + + def test_state_missing(self, repo, home): + dotfile = Dotfile(home.join('.vimrc'), repo.ensure('vimrc')) + assert dotfile.state == 'missing' + + def test_state_conflict(self, repo, home): + dotfile = Dotfile(home.ensure('.vimrc'), repo.ensure('vimrc')) + assert dotfile.state == 'conflict' + + def test_state_ok(self, repo, home): + name = home.join('.vimrc') + target = repo.ensure('vimrc') + + dotfile = Dotfile(name, target) + name.mksymlinkto(target) + assert dotfile.state == 'ok' + + name.remove() + assert dotfile.state == 'missing' + + @pytest.mark.parametrize('times', range(1, 4)) + def test_add(self, repo, home, times): + name = home.ensure('.vimrc') + target = repo.join('vimrc') + + Dotfile(name, target).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(IsSymlink): + Dotfile(name, target).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, repo, home, times): + name = home.join('.vimrc') + target = repo.ensure('vimrc') + + name.mksymlinkto(target) + Dotfile(name, target).remove() + + assert not target.check() + assert name.check(file=1, link=0) + + for x in range(2, times): + with pytest.raises(Exception): + # TODO: verify exception type once those exists + Dotfile(name, target).remove() + assert not target.check() + assert name.check(file=1, link=0) + + @pytest.mark.parametrize('times', range(1, 4)) + def test_link(self, repo, home, times): + name = home.join('.vimrc') + target = repo.ensure('vimrc') + + Dotfile(name, target).link() + + 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(Exception): + # TODO: verify exception type once those exists + Dotfile(name, target).link() + assert target.check(file=1, link=0) + assert name.check(file=1, link=1) + assert name.samefile(target) + + @pytest.mark.xfail(reason='TODO') + def test_unlink(self): + assert False -- cgit v1.2.3