Skip to content

Four test failures on openSUSE Tumbleweed #148

@jayvdb

Description

@jayvdb

After adding patches #141 and #142, I am encountering four failures against taskwarrior-2.5.3:

[   54s] =================================== FAILURES ===================================
[   54s] ______________________ TestDBShellout.test_filtering_plus ______________________
[   54s] 
[   54s] self = <taskw.test.test_datas.TestDBShellout object at 0x7f8a8a572940>
[   54s] 
[   54s]     def test_filtering_plus(self):
[   54s]         self.tw.task_add("foobar1")
[   54s]         self.tw.task_add("foobar2")
[   54s]         self.tw.task_add("foobar+")
[   54s]         tasks = self.tw.filter_tasks({
[   54s] >           'description.contains': 'foobar+',
[   54s]         })
[   54s] 
[   54s] taskw/test/test_datas.py:386: 
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] taskw/warrior.py:620: in filter_tasks
[   54s]     *query_args
[   54s] taskw/warrior.py:513: in _get_task_objects
[   54s]     json = self._get_json(*args)
[   54s] taskw/warrior.py:510: in _get_json
[   54s]     return json.loads(self._execute(*args)[0])
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] 
[   54s] self = <taskw.warrior.TaskWarriorShellout object at 0x7f8a8a5724a8>
[   54s] args = ('export', 'description.contains:foobar\\+')
[   54s] command = [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', ...]
[   54s] env = {'COLORTERM': '1', 'CPU': 'x86_64', 'CSHEDIT': 'emacs', 'FORCE_SOURCE_DATE': '1', ...}
[   54s] i = 7
[   54s] 
[   54s]     def _execute(self, *args):
[   54s]         """ Execute a given taskwarrior command with arguments
[   54s]     
[   54s]         Returns a 2-tuple of stdout and stderr (respectively).
[   54s]     
[   54s]         """
[   54s]         command = (
[   54s]             [
[   54s]                 'task',
[   54s]             ]
[   54s]             + self.get_configuration_override_args()
[   54s]             + [six.text_type(arg) for arg in args]
[   54s]         )
[   54s]         env = os.environ.copy()
[   54s]         env['TASKRC'] = self.config_filename
[   54s]     
[   54s]         # subprocess is expecting bytestrings only, so nuke unicode if present
[   54s]         # and remove control characters
[   54s]         for i in range(len(command)):
[   54s]             if isinstance(command[i], six.text_type):
[   54s]                 command[i] = (
[   54s]                     taskw.utils.clean_ctrl_chars(command[i].encode('utf-8')))
[   54s]     
[   54s]         try:
[   54s]             proc = subprocess.Popen(
[   54s]                 command,
[   54s]                 env=env,
[   54s]                 stdout=subprocess.PIPE,
[   54s]                 stderr=subprocess.PIPE,
[   54s]             )
[   54s]             stdout, stderr = proc.communicate()
[   54s]         except FileNotFoundError:
[   54s]             raise FileNotFoundError(
[   54s]                 "Unable to find the 'task' command-line tool."
[   54s]             )
[   54s]     
[   54s]         if proc.returncode != 0:
[   54s] >           raise TaskwarriorError(command, stderr, stdout, proc.returncode)
[   54s] E           taskw.exceptions.TaskwarriorError: [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', b'export', b'description.contains:foobar\\+'] #2; stderr:"b'The expression could not be evaluated.'"; stdout:"b''"
[   54s] 
[   54s] taskw/warrior.py:484: TaskwarriorError
[   54s] _____________________ TestDBShellout.test_filtering_minus ______________________
[   54s] 
[   54s] self = <taskw.test.test_datas.TestDBShellout object at 0x7f8a8a4a4748>
[   54s] 
[   54s]     def test_filtering_minus(self):
[   54s]         self.tw.task_add("foobar1")
[   54s]         self.tw.task_add("foobar2")
[   54s]         self.tw.task_add("foobar-")
[   54s]         tasks = self.tw.filter_tasks({
[   54s] >           'description.contains': 'foobar-',
[   54s]         })
[   54s] 
[   54s] taskw/test/test_datas.py:396: 
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] taskw/warrior.py:620: in filter_tasks
[   54s]     *query_args
[   54s] taskw/warrior.py:513: in _get_task_objects
[   54s]     json = self._get_json(*args)
[   54s] taskw/warrior.py:510: in _get_json
[   54s]     return json.loads(self._execute(*args)[0])
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] 
[   54s] self = <taskw.warrior.TaskWarriorShellout object at 0x7f8a8a4a47f0>
[   54s] args = ('export', 'description.contains:foobar-')
[   54s] command = [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', ...]
[   54s] env = {'COLORTERM': '1', 'CPU': 'x86_64', 'CSHEDIT': 'emacs', 'FORCE_SOURCE_DATE': '1', ...}
[   54s] i = 7
[   54s] 
[   54s]     def _execute(self, *args):
[   54s]         """ Execute a given taskwarrior command with arguments
[   54s]     
[   54s]         Returns a 2-tuple of stdout and stderr (respectively).
[   54s]     
[   54s]         """
[   54s]         command = (
[   54s]             [
[   54s]                 'task',
[   54s]             ]
[   54s]             + self.get_configuration_override_args()
[   54s]             + [six.text_type(arg) for arg in args]
[   54s]         )
[   54s]         env = os.environ.copy()
[   54s]         env['TASKRC'] = self.config_filename
[   54s]     
[   54s]         # subprocess is expecting bytestrings only, so nuke unicode if present
[   54s]         # and remove control characters
[   54s]         for i in range(len(command)):
[   54s]             if isinstance(command[i], six.text_type):
[   54s]                 command[i] = (
[   54s]                     taskw.utils.clean_ctrl_chars(command[i].encode('utf-8')))
[   54s]     
[   54s]         try:
[   54s]             proc = subprocess.Popen(
[   54s]                 command,
[   54s]                 env=env,
[   54s]                 stdout=subprocess.PIPE,
[   54s]                 stderr=subprocess.PIPE,
[   54s]             )
[   54s]             stdout, stderr = proc.communicate()
[   54s]         except FileNotFoundError:
[   54s]             raise FileNotFoundError(
[   54s]                 "Unable to find the 'task' command-line tool."
[   54s]             )
[   54s]     
[   54s]         if proc.returncode != 0:
[   54s] >           raise TaskwarriorError(command, stderr, stdout, proc.returncode)
[   54s] E           taskw.exceptions.TaskwarriorError: [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', b'export', b'description.contains:foobar-'] #2; stderr:"b'The expression could not be evaluated.'"; stdout:"b''"
[   54s] 
[   54s] taskw/warrior.py:484: TaskwarriorError
[   54s] _____________________ TestDBShellout.test_filtering_slash ______________________
[   54s] 
[   54s] self = <taskw.test.test_datas.TestDBShellout object at 0x7f8a8a3b55f8>
[   54s] 
[   54s]     def test_filtering_slash(self):
[   54s]         self.tw.task_add("foobar1")
[   54s]         self.tw.task_add("foobar2")
[   54s]         self.tw.task_add("foo/bar")
[   54s]         tasks = self.tw.filter_tasks({
[   54s] >           'description.contains': 'foo/bar',
[   54s]         })
[   54s] 
[   54s] taskw/test/test_datas.py:454: 
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] taskw/warrior.py:620: in filter_tasks
[   54s]     *query_args
[   54s] taskw/warrior.py:513: in _get_task_objects
[   54s]     json = self._get_json(*args)
[   54s] taskw/warrior.py:510: in _get_json
[   54s]     return json.loads(self._execute(*args)[0])
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] 
[   54s] self = <taskw.warrior.TaskWarriorShellout object at 0x7f8a8a3b52e8>
[   54s] args = ('export', 'description.contains:foo/bar')
[   54s] command = [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', ...]
[   54s] env = {'COLORTERM': '1', 'CPU': 'x86_64', 'CSHEDIT': 'emacs', 'FORCE_SOURCE_DATE': '1', ...}
[   54s] i = 7
[   54s] 
[   54s]     def _execute(self, *args):
[   54s]         """ Execute a given taskwarrior command with arguments
[   54s]     
[   54s]         Returns a 2-tuple of stdout and stderr (respectively).
[   54s]     
[   54s]         """
[   54s]         command = (
[   54s]             [
[   54s]                 'task',
[   54s]             ]
[   54s]             + self.get_configuration_override_args()
[   54s]             + [six.text_type(arg) for arg in args]
[   54s]         )
[   54s]         env = os.environ.copy()
[   54s]         env['TASKRC'] = self.config_filename
[   54s]     
[   54s]         # subprocess is expecting bytestrings only, so nuke unicode if present
[   54s]         # and remove control characters
[   54s]         for i in range(len(command)):
[   54s]             if isinstance(command[i], six.text_type):
[   54s]                 command[i] = (
[   54s]                     taskw.utils.clean_ctrl_chars(command[i].encode('utf-8')))
[   54s]     
[   54s]         try:
[   54s]             proc = subprocess.Popen(
[   54s]                 command,
[   54s]                 env=env,
[   54s]                 stdout=subprocess.PIPE,
[   54s]                 stderr=subprocess.PIPE,
[   54s]             )
[   54s]             stdout, stderr = proc.communicate()
[   54s]         except FileNotFoundError:
[   54s]             raise FileNotFoundError(
[   54s]                 "Unable to find the 'task' command-line tool."
[   54s]             )
[   54s]     
[   54s]         if proc.returncode != 0:
[   54s] >           raise TaskwarriorError(command, stderr, stdout, proc.returncode)
[   54s] E           taskw.exceptions.TaskwarriorError: [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', b'export', b'description.contains:foo/bar'] #2; stderr:"b'Cannot divide real numbers by strings'"; stdout:"b''"
[   54s] 
[   54s] taskw/warrior.py:484: TaskwarriorError
[   54s] ___________________ TestDBShellout.test_annotation_escaping ____________________
[   54s] 
[   54s] self = <taskw.test.test_datas.TestDBShellout object at 0x7f8a8a56e358>
[   54s] 
[   54s]     def test_annotation_escaping(self):
[   54s]         original = {'description': 're-opening the issue'}
[   54s]     
[   54s]         self.tw.task_add('foobar')
[   54s]         task = self.tw.load_tasks()['pending'][0]
[   54s]         task['annotations'] = [original]
[   54s]         self.tw.task_update(task)
[   54s]     
[   54s]         task = self.tw.load_tasks()['pending'][0]
[   54s] >       self.tw.task_update(task)
[   54s] 
[   54s] taskw/test/test_datas.py:509: 
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] taskw/warrior.py:809: in task_update
[   54s]     self._execute(task_uuid, 'modify', *modification)
[   54s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   54s] 
[   54s] self = <taskw.warrior.TaskWarriorShellout object at 0x7f8a8a56e908>
[   54s] args = ('093fbfd8-c3cd-42fc-8609-0977bb616551', 'modify', 'description:"foobar"', 'entry:"20210724T013854Z"', 'modified:"20210724T013854Z"', 'status:"pending"', ...)
[   54s] command = [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', ...]
[   54s] env = {'COLORTERM': '1', 'CPU': 'x86_64', 'CSHEDIT': 'emacs', 'FORCE_SOURCE_DATE': '1', ...}
[   54s] i = 12
[   54s] 
[   54s]     def _execute(self, *args):
[   54s]         """ Execute a given taskwarrior command with arguments
[   54s]     
[   54s]         Returns a 2-tuple of stdout and stderr (respectively).
[   54s]     
[   54s]         """
[   54s]         command = (
[   54s]             [
[   54s]                 'task',
[   54s]             ]
[   54s]             + self.get_configuration_override_args()
[   54s]             + [six.text_type(arg) for arg in args]
[   54s]         )
[   54s]         env = os.environ.copy()
[   54s]         env['TASKRC'] = self.config_filename
[   54s]     
[   54s]         # subprocess is expecting bytestrings only, so nuke unicode if present
[   54s]         # and remove control characters
[   54s]         for i in range(len(command)):
[   54s]             if isinstance(command[i], six.text_type):
[   54s]                 command[i] = (
[   54s]                     taskw.utils.clean_ctrl_chars(command[i].encode('utf-8')))
[   54s]     
[   54s]         try:
[   54s]             proc = subprocess.Popen(
[   54s]                 command,
[   54s]                 env=env,
[   54s]                 stdout=subprocess.PIPE,
[   54s]                 stderr=subprocess.PIPE,
[   54s]             )
[   54s]             stdout, stderr = proc.communicate()
[   54s]         except FileNotFoundError:
[   54s]             raise FileNotFoundError(
[   54s]                 "Unable to find the 'task' command-line tool."
[   54s]             )
[   54s]     
[   54s]         if proc.returncode != 0:
[   54s] >           raise TaskwarriorError(command, stderr, stdout, proc.returncode)
[   54s] E           taskw.exceptions.TaskwarriorError: [b'task', b'rc.verbose=new-uuid', b'rc.json.array=TRUE', b'rc.confirmation=no', b'rc.dependency.confirmation=no', b'rc.recurrence.confirmation=no', b'093fbfd8-c3cd-42fc-8609-0977bb616551', b'modify', b'description:"foobar"', b'entry:"20210724T013854Z"', b'modified:"20210724T013854Z"', b'status:"pending"', b'urgency:"0.8"'] #2; stderr:"b"The 'urgency' attribute does not allow a value of '0.8'.""; stdout:"b''"
[   54s] 
[   54s] taskw/warrior.py:484: TaskwarriorError
[   54s] =========================== short test summary info ============================
[   54s] FAILED taskw/test/test_datas.py::TestDBShellout::test_filtering_plus - taskw....
[   54s] FAILED taskw/test/test_datas.py::TestDBShellout::test_filtering_minus - taskw...
[   54s] FAILED taskw/test/test_datas.py::TestDBShellout::test_filtering_slash - taskw...
[   54s] FAILED taskw/test/test_datas.py::TestDBShellout::test_annotation_escaping - t...
[   54s] ======================== 4 failed, 147 passed in 9.55s =========================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions