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_cli.py | 18 +++++ tests/test_dotfile.py | 89 +++++++++++++++++++++++++ tests/test_dotfiles.py | 166 ----------------------------------------------- tests/test_repository.py | 62 ++++++++++++++++++ 4 files changed, 169 insertions(+), 166 deletions(-) create mode 100644 tests/test_cli.py create mode 100644 tests/test_dotfile.py delete mode 100644 tests/test_dotfiles.py create mode 100644 tests/test_repository.py diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..f531989 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,18 @@ +from dotfiles.cli import cli +from dotfiles.repository import Repository + + +class TestCli(object): + + def test_status(self, runner, repo, home, monkeypatch): + + def repo_init(self, *args, **kwargs): + self.ignore = [] + self.homedir = home + self.repodir = repo.ensure(dir=1) + + monkeypatch.setattr(Repository, '__init__', repo_init) + + result = runner.invoke(cli, ['status']) + assert not result.exception + assert result.output == '' 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 diff --git a/tests/test_dotfiles.py b/tests/test_dotfiles.py deleted file mode 100644 index 8323385..0000000 --- a/tests/test_dotfiles.py +++ /dev/null @@ -1,166 +0,0 @@ -import pytest - -from dotfiles.cli import cli -from dotfiles.dotfile import Dotfile -from dotfiles.repository import Repository -from dotfiles.exceptions import IsSymlink - - -class TestCli(object): - - def test_status(self, runner, repo, home, monkeypatch): - - def repo_init(self, *args, **kwargs): - self.ignore = [] - self.homedir = home - self.repodir = repo.ensure(dir=1) - - monkeypatch.setattr(Repository, '__init__', repo_init) - - result = runner.invoke(cli, ['status']) - assert not result.exception - assert result.output == '' - - -class TestRepository(object): - - def test_init(self, repo, home): - repo.remove() - assert repo.check(exists=0) - - r = Repository(repo, home) - assert r.repodir == repo - assert r.homedir == home - assert repo.check(exists=1, dir=1) - - def test_str(self, repo, home): - repo.ensure('a') - repo.ensure('b') - repo.ensure('c') - assert str(Repository(repo, home)) == ('.a\n' - '.b\n' - '.c') - - def test_repr(self, repo): - actual = '%r' % Repository(repo, None) - expected = '' % repo - assert actual == expected - - def test_target_to_name(self, repo, home): - actual = Repository(repo, home)._target_to_name(repo.join('foo')) - expected = home.join('.foo') - assert actual == expected - - def test_name_to_target(self, repo, home): - actual = Repository(repo, home)._name_to_target(home.join('.foo')) - expected = repo.join('foo') - assert actual == expected - - @pytest.mark.xfail(reason='TODO') - def test_dotifle(self): - assert False - - def test_contents(self, repo, home): - - assert Repository(repo, home).contents() == [] - - target_a = repo.ensure('a') - target_b = repo.ensure('b') - target_c = repo.ensure('c') - contents = Repository(repo, home).contents() - - assert contents[0].target == target_a - assert contents[1].target == target_b - assert contents[2].target == target_c - - def test_nested_name_to_target(self, repo, home): - r = Repository(repo, home) - - actual = r._name_to_target(home.join('.vim/.mrconfig')) - expected = repo.join('vim/.mrconfig') - assert actual == expected - - -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 diff --git a/tests/test_repository.py b/tests/test_repository.py new file mode 100644 index 0000000..591dee9 --- /dev/null +++ b/tests/test_repository.py @@ -0,0 +1,62 @@ +import pytest + +from dotfiles.repository import Repository + + +class TestRepository(object): + + def test_init(self, repo, home): + repo.remove() + assert repo.check(exists=0) + + r = Repository(repo, home) + assert r.repodir == repo + assert r.homedir == home + assert repo.check(exists=1, dir=1) + + def test_str(self, repo, home): + repo.ensure('a') + repo.ensure('b') + repo.ensure('c') + assert str(Repository(repo, home)) == ('.a\n' + '.b\n' + '.c') + + def test_repr(self, repo): + actual = '%r' % Repository(repo, None) + expected = '' % repo + assert actual == expected + + def test_target_to_name(self, repo, home): + actual = Repository(repo, home)._target_to_name(repo.join('foo')) + expected = home.join('.foo') + assert actual == expected + + def test_name_to_target(self, repo, home): + actual = Repository(repo, home)._name_to_target(home.join('.foo')) + expected = repo.join('foo') + assert actual == expected + + @pytest.mark.xfail(reason='TODO') + def test_dotifle(self): + assert False + + def test_contents(self, repo, home): + + assert Repository(repo, home).contents() == [] + + target_a = repo.ensure('a') + target_b = repo.ensure('b') + target_c = repo.ensure('c') + contents = Repository(repo, home).contents() + + assert contents[0].target == target_a + assert contents[1].target == target_b + assert contents[2].target == target_c + + def test_nested_name_to_target(self, repo, home): + r = Repository(repo, home) + + actual = r._name_to_target(home.join('.vim/.mrconfig')) + expected = repo.join('vim/.mrconfig') + assert actual == expected -- cgit v1.2.3