File: test_cmd_clean.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 (83 lines) | stat: -rw-r--r-- 3,210 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from six import StringIO
import pytest

from doit.exceptions import InvalidCommand
from doit.task import Task
from doit.cmd_clean import Clean


class TestCmdClean(object):

    @pytest.fixture
    def tasks(self, request):
        self.cleaned = []
        def myclean(name):
            self.cleaned.append(name)
        return [
            Task("t1", None, task_dep=['t2'], clean=[(myclean,('t1',))]),
            Task("t2", None, clean=[(myclean,('t2',))]),
            Task("t3", None, task_dep=['t3:a'], has_subtask=True,
                 clean=[(myclean,('t3',))]),
            Task("t3:a", None, clean=[(myclean,('t3:a',))], is_subtask=True),
            Task("t4", None, task_dep=['t1'], clean=[(myclean,('t4',))] ),
            ]

    def test_clean_all(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, False, True)
        assert ['t1','t2', 't3:a', 't3', 't4'] == self.cleaned

    def test_clean_default(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks,
                          config={'default_tasks':['t1']})
        cmd_clean._execute(False, False, False)
        # default enable --clean-dep by default
        assert ['t2', 't1'] == self.cleaned

    def test_clean_default_all(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, False, False)
        # default enable --clean-dep by default
        assert set(['t1','t2', 't3:a', 't3', 't4']) == set(self.cleaned)

    def test_clean_selected(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks,
                          config={'default_tasks':['t1']})
        cmd_clean._execute(False, False, False, ['t2'])
        assert ['t2'] == self.cleaned

    def test_clean_taskdep(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, True, False, ['t1'])
        assert ['t2', 't1'] == self.cleaned

    def test_clean_taskdep_recursive(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, True, False, ['t4'])
        assert ['t2', 't1', 't4'] == self.cleaned

    def test_clean_subtasks(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, False, False, ['t3'])
        assert ['t3:a', 't3'] == self.cleaned

    def test_clean_taskdep_once(self, tasks):
        # do not execute clean operation more than once
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks)
        cmd_clean._execute(False, True, False, ['t1', 't2'])
        assert ['t2', 't1'] == self.cleaned

    def test_clean_invalid_task(self, tasks):
        output = StringIO()
        cmd_clean = Clean(outstream=output, task_list=tasks,
                          config={'default_tasks':['t1']})
        pytest.raises(InvalidCommand, cmd_clean._execute,
                      False, False, False, ['xxxx'])