From: Rob Golding-Day Date: Mon, 27 May 2019 18:59:05 +0000 (+0100) Subject: Merge branch 'develop' X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/commitdiff_plain/9a7dac4599f198c52f268ae8bcc0267743ef934f?hp=dcf6974cde7c3c425522bd5e8a582f7a9aa6c8ac Merge branch 'develop' --- diff --git a/docs/conf.py b/docs/conf.py index 9c7dbed..3892461 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,9 @@ copyright = u'2014, Rob Golding' # built documents. # # The short X.Y version. -version = '1.2.0' +version = '1.2.1' # The full version, including alpha/beta/rc tags. -release = '1.2.0' +release = '1.2.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/setup.py b/setup.py index 510136e..42da23e 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages install_requirements = ['six>=1.4', 'pytz', 'tzlocal'] -version = '1.2.0' +version = '1.2.1' try: import importlib diff --git a/tasklib/lazy.py b/tasklib/lazy.py index cb268f3..e5b3492 100644 --- a/tasklib/lazy.py +++ b/tasklib/lazy.py @@ -106,7 +106,7 @@ class LazyUUIDTaskSet(object): return 'LazyUUIDTaskSet([{0}])'.format(', '.join(self._uuids)) def __eq__(self, other): - return set(t['uuid'] for t in other) == self._uuids + return (set(t['uuid'] for t in other) if other else set()) == self._uuids def __ne__(self, other): return not (self == other) diff --git a/tasklib/tests.py b/tasklib/tests.py index 1fd449c..5b1ff62 100644 --- a/tasklib/tests.py +++ b/tasklib/tests.py @@ -530,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') @@ -544,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') @@ -561,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') @@ -578,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') @@ -590,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') @@ -612,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')