X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/47ee2ff2a334a50137255faa54504594be9eaf6d..811b104aac436b3603910d9ec8a6f3aa018f1e56:/tasklib/tests.py diff --git a/tasklib/tests.py b/tasklib/tests.py index 6cba1fc..5b1ff62 100644 --- a/tasklib/tests.py +++ b/tasklib/tests.py @@ -4,6 +4,7 @@ import copy import datetime import itertools import json +import os import pytz import six import shutil @@ -68,7 +69,11 @@ class TaskWarriorTest(TasklibTest): def test_custom_command(self): # ensure that a custom command which contains multiple parts # is properly split up - tw = self.get_taskwarrior(task_command='wsl task') + tw = self.get_taskwarrior( + task_command='wsl task', + # prevent `_get_version` from running as `wsl` may not exist + version_override=os.getenv('TASK_VERSION'), + ) self.assertEqual(tw._get_task_command(), ['wsl', 'task']) @@ -525,6 +530,18 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency])) + def test_set_simple_dependency_lazyuuidtaskset(self): + # Adds only one dependency as a LazyUUIDTaskSet to task with no dependencies + t = Task(self.tw, description='test task') + dependency = Task(self.tw, description='needs to be done first') + + t.save() + dependency.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency['uuid']]) + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency['uuid']])) + def test_set_complex_dependency_set(self): # Adds two dependencies to task with no dependencies t = Task(self.tw, description='test task') @@ -539,6 +556,20 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency1, dependency2])) + def test_set_complex_dependency_lazyuuidtaskset(self): + # Adds two dependencies as a LazyUUIDTaskSet to task with no dependencies + t = Task(self.tw, description='test task') + dependency1 = Task(self.tw, description='needs to be done first') + dependency2 = Task(self.tw, description='needs to be done second') + + t.save() + dependency1.save() + dependency2.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency1['uuid'], dependency2['uuid']]) + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency1['uuid'], dependency2['uuid']])) + def test_remove_from_dependency_set(self): # Removes dependency from task with two dependencies t = Task(self.tw, description='test task') @@ -556,6 +587,23 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency1])) + def test_remove_from_dependency_lazyuuidtaskset(self): + # Removes dependency from task with two dependencies as LazyUUIDTaskSet + t = Task(self.tw, description='test task') + dependency1 = Task(self.tw, description='needs to be done first') + dependency2 = Task(self.tw, description='needs to be done second') + + dependency1.save() + dependency2.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency1['uuid'], dependency2['uuid']]) + t.save() + + t['depends'].remove(dependency2) + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency1['uuid']])) + def test_add_to_dependency_set(self): # Adds dependency to task with one dependencies t = Task(self.tw, description='test task') @@ -573,8 +621,42 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency1, dependency2])) + def test_add_to_dependency_lazyuuidtaskset(self): + # Adds dependency to task with one dependencies as LazyUUIDTaskSet + t = Task(self.tw, description='test task') + dependency1 = Task(self.tw, description='needs to be done first') + dependency2 = Task(self.tw, description='needs to be done second') + + dependency1.save() + dependency2.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency1['uuid']]) + t.save() + + t['depends'].add(dependency2) + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency1['uuid'], dependency2['uuid']])) + + def test_add_lazyuuidtaskset_to_dependency_lazyuuidtaskset(self): + # Adds dependency as LazyUUIDTaskSet to task with one dependencies as LazyUUIDTaskSet + t = Task(self.tw, description='test task') + dependency1 = Task(self.tw, description='needs to be done first') + dependency2 = Task(self.tw, description='needs to be done second') + + dependency1.save() + dependency2.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency1['uuid']]) + t.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency2['uuid']]).union(t['depends']) + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency1['uuid'], dependency2['uuid']])) + def test_add_to_empty_dependency_set(self): - # Adds dependency to task with one dependencies + # Adds dependency to task with no dependencies t = Task(self.tw, description='test task') dependency = Task(self.tw, description='needs to be done first') @@ -585,6 +667,18 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency])) + def test_add_to_empty_dependency_lazyuuidtaskset(self): + # Adds dependency as LazyUUIDTaskSet to task with no dependencies + t = Task(self.tw, description='test task') + dependency = Task(self.tw, description='needs to be done first') + + dependency.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency['uuid']]) + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency['uuid']])) + def test_simple_dependency_set_save_repeatedly(self): # Adds only one dependency to task with no dependencies t = Task(self.tw, description='test task') @@ -607,6 +701,40 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency])) + def test_simple_dependency_lazyuuidtaskset_save_repeatedly(self): + # Adds only one dependency as LazyUUIDTaskSet to task with no dependencies + t = Task(self.tw, description='test task') + dependency = Task(self.tw, description='needs to be done first') + dependency.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency['uuid']]) + t.save() + + # We taint the task, but keep depends intact + t['description'] = 'test task modified' + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency['uuid']])) + + # We taint the task, but assign the same set to the depends + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency['uuid']]) + t['description'] = 'test task modified again' + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency['uuid']])) + + def test_simple_dependency_lazyuuidtaskset_save_before_repeatedly(self): + # Adds only one dependency as LazyUUIDTaskSet to a saved task with no dependencies + t = Task(self.tw, description='test task') + dependency = Task(self.tw, description='needs to be done first') + dependency.save() + t.save() + + t['depends'] = LazyUUIDTaskSet(self.tw, [dependency['uuid']]) + t.save() + + self.assertEqual(t['depends'], LazyUUIDTaskSet(self.tw, [dependency['uuid']])) + def test_compare_different_tasks(self): # Negative: compare two different tasks t1 = Task(self.tw, description='test task')