File: test_cmd_ignore.py

package info (click to toggle)
doit 0.25.0-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,404 kB
  • ctags: 1,504
  • sloc: python: 11,084; makefile: 111; ansic: 14
file content (68 lines) | stat: -rw-r--r-- 2,547 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from six import StringIO

import pytest

from doit.exceptions import InvalidCommand
from doit.dependency import Dependency
from doit.cmd_ignore import Ignore
from .conftest import tasks_sample


class TestCmdIgnore(object):

    @pytest.fixture
    def tasks(self, request):
        return tasks_sample()

    def testIgnoreAll(self, tasks, depfile_name):
        output = StringIO()
        cmd = Ignore(outstream=output, dep_file=depfile_name,
                     backend='dbm', task_list=tasks)
        cmd._execute([])
        got = output.getvalue().split("\n")[:-1]
        assert ["You cant ignore all tasks! Please select a task."] == got, got
        dep = Dependency(depfile_name)
        for task in tasks:
            assert None == dep._get(task.name, "ignore:")

    def testIgnoreOne(self, tasks, depfile_name):
        output = StringIO()
        cmd = Ignore(outstream=output, dep_file=depfile_name,
                     backend='dbm', task_list=tasks)
        cmd._execute(["t2", "t1"])
        got = output.getvalue().split("\n")[:-1]
        assert ["ignoring t2", "ignoring t1"] == got
        dep = Dependency(depfile_name)
        assert '1' == dep._get("t1", "ignore:")
        assert '1' == dep._get("t2", "ignore:")
        assert None == dep._get("t3", "ignore:")

    def testIgnoreGroup(self, tasks, depfile_name):
        output = StringIO()
        cmd = Ignore(outstream=output, dep_file=depfile_name,
                     backend='dbm', task_list=tasks)
        cmd._execute(["g1"])
        got = output.getvalue().split("\n")[:-1]

        dep = Dependency(depfile_name)
        assert None == dep._get("t1", "ignore:"), got
        assert None == dep._get("t2", "ignore:")
        assert '1' == dep._get("g1", "ignore:")
        assert '1' == dep._get("g1.a", "ignore:")
        assert '1' == dep._get("g1.b", "ignore:")

    # if task dependency not from a group dont ignore it
    def testDontIgnoreTaskDependency(self, tasks, depfile_name):
        output = StringIO()
        cmd = Ignore(outstream=output, dep_file=depfile_name,
                     backend='dbm', task_list=tasks)
        cmd._execute(["t3"])
        dep = Dependency(depfile_name)
        assert '1' == dep._get("t3", "ignore:")
        assert None == dep._get("t1", "ignore:")

    def testIgnoreInvalid(self, tasks, depfile_name):
        output = StringIO()
        cmd = Ignore(outstream=output, dep_file=depfile_name,
                     backend='dbm', task_list=tasks)
        pytest.raises(InvalidCommand, cmd._execute, ["XXX"])