File: test_cmd_forget.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 (99 lines) | stat: -rw-r--r-- 3,770 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from six import StringIO

import pytest

from doit.exceptions import InvalidCommand
from doit.dependency import Dependency
from doit.cmd_forget import Forget
from .conftest import tasks_sample


class TestCmdForget(object):

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

    @staticmethod
    def _add_task_deps(tasks, testdb):
        """put some data on testdb"""
        dep = Dependency(testdb)
        for task in tasks:
            dep._set(task.name,"dep","1")
        dep.close()

        dep2 = Dependency(testdb)
        assert "1" == dep2._get("g1.a", "dep")
        dep2.close()


    def testForgetAll(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks, sel_tasks=[])
        cmd_forget._execute(False)
        got = output.getvalue().split("\n")[:-1]
        assert ["forgeting all tasks"] == got, repr(output.getvalue())
        dep = Dependency(depfile_name)
        for task in tasks:
            assert None == dep._get(task.name, "dep")

    def testForgetOne(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks,
                            sel_tasks=["t2", "t1"])
        cmd_forget._execute(False)
        got = output.getvalue().split("\n")[:-1]
        assert ["forgeting t2", "forgeting t1"] == got
        dep = Dependency(depfile_name)
        assert None == dep._get("t1", "dep")
        assert None == dep._get("t2", "dep")
        assert "1" == dep._get("g1.a", "dep")

    def testForgetGroup(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks, sel_tasks=["g1"])
        cmd_forget._execute(False)
        got = output.getvalue().split("\n")[:-1]
        assert "forgeting g1" == got[0]

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


    def testForgetTaskDependency(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks, sel_tasks=["t3"])
        cmd_forget._execute(True)
        dep = Dependency(depfile_name)
        assert None == dep._get("t3", "dep")
        assert None == dep._get("t1", "dep")

    # if task dependency not from a group dont forget it
    def testDontForgetTaskDependency(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks, sel_tasks=["t3"])
        cmd_forget._execute(False)
        dep = Dependency(depfile_name)
        assert None == dep._get("t3", "dep")
        assert "1" == dep._get("t1", "dep")

    def testForgetInvalid(self, tasks, depfile_name):
        self._add_task_deps(tasks, depfile_name)
        output = StringIO()
        cmd_forget = Forget(outstream=output, dep_file=depfile_name,
                            backend='dbm', task_list=tasks, sel_tasks=["XXX"])
        pytest.raises(InvalidCommand, cmd_forget._execute, False)